如何检查网址是否包含视频?

时间:2011-02-04 14:18:43

标签: ruby-on-rails regex

喜 我正在轨道上创建脚本ruby,用户在其中共享链接,如果链接包含视频,则提取视频的嵌入代码。换句话说,我试图实现一个像“facebook post link”这样的功能..有人可以指导我如何实现这一点?

5 个答案:

答案 0 :(得分:1)

我能想到的唯一方法就是手动检查每个帖子以获取视频链接,例如:

  YOUTUBE_EMBED = '<iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/VIDEO_ID" frameborder="0" allowfullscreen></iframe>'    
  if comment =~ /.*http:\/\/(\w+\.)?youtube.com\/watch\?v=(\w+).*/
    return YOUTUBE_EMBED.gsub(/VIDEO_ID/, $2)  
  end

然后为每个视频网站重复此过程。我正在努力解决类似的概念,所以如果你找到一个更好的方法,请告诉我!

答案 1 :(得分:0)

您可以分析该链接的http标头

require "net/http"

Net::HTTP.start('www.jhepple.com', 80) do |http|
 http.head('/support/SampleMovies/MPEG-1.mpg')
end['content-type']

输出"video/mpeg"

现在您知道它真的是一个视频,用它做你想做的事情

答案 2 :(得分:0)

您还可以使用file之类的实用程序并分叉系统进程,以便它执行file -b downloaded_file.mpg之类的命令。

所以你的代码看起来像这样:

IO.popen("file -b /path/to/video.mpg") { |stdout| @stdout = stdout.gets }
if not @stdout.grep(/MPEG/).empty?
   puts "MPEG Detected"
end

答案 3 :(得分:0)

Flash视频通常具有扩展名.flv,因此您只需要查找包含它的文件。

html_souce.scan(%r|href\s*=\s*\"[^\"]+\.flv\"|)

如果您需要其他文件格式,只需更改正则表达式。

答案 4 :(得分:0)

您可以使用embedl.ly

等外部服务

在这里,您可以帮助https://github.com/judofyr/ruby-oembed