2011-02-04 58 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\"|) 

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

相關問題