2011-02-04 241 views
0

hi 我在轨道上创建脚本ruby,其中用户共享链接,如果链接包含视频,则会提取视频的嵌入代码。换句话说,我正在尝试实现像功能一样的“facebook帖子链接”。有人可以引导我如何实现这一点?如何检查一个url是否包含视频?

回答

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"

现在,你知道这是一个真正的视频,做你想要做什么用

+0

如果是直接链接到视频文件这只会工作。 @Saad就是你所说的,或者你想要检测包含视频的网页(这更难)。 – raidfive 2011-02-04 16:22:43

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 
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 

然后为每个视频网站重复此过程。我正在与类似的概念搏斗,所以如果你找到一个更好的方法来做到这一点,让我知道!

0

Flash视频通常具有扩展名.flv,因此您只需查找具有该扩展名的文件即可。

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

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

相关问题