require 'json'
require 'net/http'
module MediaMagick
module Video
class Parser
def initialize(url)
@url = url
end
def valid?
youtube_regex = /((https?)?:\/\/)?(www.)?(youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/watch\?feature=player_embedded&v=)([A-Za-z0-9_-]*)(\&\S+)?(\S)*/
vimeo_regex = /((https?):\/\/)?(www.)?vimeo\.com\/([A-Za-z0-9._%-]*)((\?|#)\S+)?/
if @url.match(youtube_regex)
@id = @url.match(youtube_regex)[5]
@service = 'youtube'
true
else
if @url.match(vimeo_regex)
@id = @url.match(vimeo_regex)[4]
@service = 'vimeo'
true
else
false
end
end
end
def to_image
id = @id if valid?
case @service
when 'youtube'
image_url = "http://img.youtube.com/vi/#{id}/0.jpg"
when 'vimeo'
uri = URI.parse("http://vimeo.com/api/v2/video/#{id}.json")
resp = Net::HTTP.get_response(uri)
image_url = JSON.parse(resp.body)[0]["thumbnail_large"]
end
uri = URI.parse(image_url)
response = Net::HTTP.get_response(uri)
File.new("/tmp/#{id}.jpg", "w+").tap do |file|
file.write(response.body.force_encoding('UTF-8'))
end
end
def to_html(options = {})
valid?
case @service
when 'youtube'
""
when 'vimeo'
""
end
end
end
end
end