lib/video_player.rb in video_player-0.1.4 vs lib/video_player.rb in video_player-1.0.0

- old
+ new

@@ -1,37 +1,70 @@ require "video_player/version" module VideoPlayer - def self.player url, width = "420", height = "315", autoplay = true - if url.include? "youtu" - regex = /(https?:\/\/)?(www.)?(youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/watch\?feature=player_embedded&v=)([A-Za-z0-9_-]*)(\&\S+)?(\?\S+)?/ - url.gsub(regex) do - youtube_id = $4 - if autoplay - src = "//www.youtube.com/embed/#{youtube_id}?autoplay=1&rel=0" - else - src = "//www.youtube.com/embed/#{youtube_id}?autoplay=0&rel=0" - end - return %{<iframe width="#{width}" height="#{height}" src="#{src}" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>} + def self.player(*args) + VideoPlayer::Parser.new(*args).embed_code + end + + class Parser + DefaultWidth = '420' + DefaultHeight = '315' + DefaultAutoPlay = true + + YouTubeRegex = /\A(https?:\/\/)?(www.)?(youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/watch\?feature=player_embedded&v=)([A-Za-z0-9_-]*)(\&\S+)?(\?\S+)?/i + VimeoRegex = /\Ahttps?:\/\/(www.)?vimeo\.com\/([A-Za-z0-9._%-]*)((\?|#)\S+)?/i + IzleseneRegex = /\Ahttp:\/\/(?:.*?)\izlesene\.com\/video\/([\w\-\.]+[^#?\s]+)\/(.*)?$/i + WistiaRegex = /\Ahttps?:\/\/(.+)?(wistia.com|wi.st)\/(medias|embed)\/([A-Za-z0-9_-]*)(\&\S+)?(\?\S+)?/i + + attr_accessor :url, :width, :height + + def initialize(url, width = DefaultWidth, height = DefaultHeight, autoplay = DefaultAutoPlay) + @url = url + @width = width + @height = height + @autoplay = autoplay + end + + def embed_code + case + when matchdata = url.match(YouTubeRegex) + youtube_embed(matchdata[4]) + when matchdata = url.match(VimeoRegex) + vimeo_embed(matchdata[2]) + when matchdata = url.match(IzleseneRegex) + izlesene_embed(matchdata[2]) + when matchdata = url.match(WistiaRegex) + wistia_embed(matchdata[4]) + else + false end - elsif url.include? "vimeo" - url.gsub(/https?:\/\/(www.)?vimeo\.com\/([A-Za-z0-9._%-]*)((\?|#)\S+)?/) do - vimeo_id = $2 - frameborder = 0 - return %{<iframe src="//player.vimeo.com/video/#{vimeo_id}" width="#{width}" height="#{height}" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>} - end - elsif url.include? "izlesene" - regex = /^http:\/\/(?:.*?)\izlesene\.com\/video\/([\w\-\.]+[^#?\s]+)\/(.*)?$/i - url.gsub(regex) do - izlesene_video_id = $2 - if autoplay - src = "//www.izlesene.com/embedplayer/#{izlesene_video_id}/?autoplay=1&showrel=0&showinfo=0" - else - src = "//www.izlesene.com/embedplayer/#{izlesene_video_id}/?autoplay=0&showrel=0&showinfo=0" - end - return %{<iframe width="#{width}" height="#{height}" src="#{src}" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>} - end - else - return false + end + + def autoplay + !!@autoplay ? '1' : '0' + end + + def iframe_code(src) + %{<iframe src="#{src}" width="#{width}" height="#{height}" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>} + end + + def youtube_embed(video_id) + src = "//www.youtube.com/embed/#{video_id}?autoplay=#{autoplay}&rel=0" + iframe_code(src) + end + + def vimeo_embed(video_id) + src = "//player.vimeo.com/video/#{video_id}" + iframe_code(src) + end + + def izlesene_embed(video_id) + src = "//www.izlesene.com/embedplayer/#{video_id}/?autoplay=#{autoplay}&showrel=0&showinfo=0" + iframe_code(src) + end + + def wistia_embed(video_id) + src = "//fast.wistia.net/embed/iframe/#{video_id}/?autoplay=#{autoplay}&showrel=0&showinfo=0" + iframe_code(src) end end end \ No newline at end of file