Ruby on rails 如何检查url是否包含视频?

Ruby on rails 如何检查url是否包含视频?,ruby-on-rails,regex,Ruby On Rails,Regex,嗨 我正在创建一个脚本RubyonRails,其中用户共享一个链接,如果链接包含视频,则提取视频的嵌入代码。换句话说,我正在尝试实现一个类似“facebook帖子链接”的功能。。有人能告诉我如何做到这一点吗???您可以分析该链接的http头 require "net/http" Net::HTTP.start('www.jhepple.com', 80) do |http| http.head('/support/SampleMovies/MPEG-1.mpg') end['content-


我正在创建一个脚本RubyonRails,其中用户共享一个链接,如果链接包含视频,则提取视频的嵌入代码。换句话说,我正在尝试实现一个类似“facebook帖子链接”的功能。。有人能告诉我如何做到这一点吗???

您可以分析该链接的http头

require "net/http"

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


既然您知道它实际上是一个视频,就可以随心所欲地使用它了。您还可以使用像
file
这样的实用程序,并派生一个系统进程,这样它就可以执行像
file-b downloaded\u file.mpg
这样的命令

因此,您的代码如下所示:

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

我能想到的唯一方法是手动检查每篇文章中的视频链接,例如:

  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
YOUTUBE\u嵌入=“”
如果注释=~/.*http:\/\/(\w+\)?youtube.com\/watch\?v=(\w+)*/
返回YOUTUBE_EMBED.gsub(/VIDEO_ID/,$2)
结束

然后对每个视频站点重复此过程。我正在与一个类似的概念搏斗,所以如果你想出一个更好的方法,让我知道

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

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

如果您需要其他文件格式,只需更改regexp。

您可以使用以下外部服务


这是一块可以帮助你的宝石

只有当它直接链接到视频文件时,它才会起作用@Saad是您所指的,还是您想检测包含视频的网页(这要困难得多)。我基本上想检测网页是否包含视频,如果包含视频,则提取视频的嵌入url。要精确执行此操作,可能需要比Stackoverflow帖子中所需的更多。您能为我指出正确的方向吗?我应该探索什么来解决这个问题??