编程方式确定一个YouTube视频是否已被撤下(Programmatically determine

2019-08-21 02:42发布

我得到的大部分音乐对说唱训诂从YouTube(在嵌入式播放器的形式)。 不幸的是,总有那么的我使用一个视频将被拆除(因版权问题或其他)的风险,从而打破我的网站上相应的页面。

理想情况下我会一个cronjob,将检查(夜间说)是否有视频已被删除,并通知我。 什么是做到这一点的最好方法是什么?

Answer 1:

您所需要的信息是通过现有的YouTube API ,特别是在YT:状态标签

根据你是编程的语言中有大量的代码周围使用YouTube API进行交互。

更多的细节张贴在这里,如果你仍然有得到这个工作的问题。



Answer 2:

还有“YT:国家标签”,视频的OP可能不会允许它被嵌入。 如果头版歌曲列表是从你保持在YouTube上的播放列表来,例如,那么方式,以确保你没有得到歌曲不嵌入是包括“&FORMAT = 5”参数检索您的列表时。 例如

http://gdata.youtube.com/feeds/api/playlists/8BCDD04DE8F771B2?v=2&format=5

另外,如果你是担心国家层面的限制,然后使用“&限制= [双字母国家代码]”参数。

请参阅“ 开发人员指南:数据API协议- API查询参数 ”。



Answer 3:

哈克的方式做这将是使用curl获取页/视频你想知道的HTML,然后寻找错误框格在那个说该视频已被删除顶部出现。 如果它存在,它的可见,视频可能已被删除。

哈克,但我betcha当它的工作。



Answer 4:

作为@seengee说,“正确”的方式做,这是看的YT:国家通过YouTube API在YouTube视频的XML表示标签

要获得此XML表示,你会得到http://gdata.youtube.com/feeds/api/videos/VIDEO_ID ( 这里更多的细节 )。 因此,实施这种检查应该是一样简单:

def valid_embed_link?
  doc = Hpricot(open("http://gdata.youtube.com/feeds/api/videos/#{youtube_video_id}"))
  doc.at('yt:state').blank?
end

不幸的是这会产生误报。 例如, http://www.youtube.com/watch?v=MX6rC1krGp0正常播放,但http://gdata.youtube.com/feeds/api/videos/MX6rC1krGp0包含yt:state标签。 因此,我已经走了这个hackier方法:

def valid_embed_link?
  doc = Hpricot(open("http://www.youtube.com/watch?v=#{youtube_video_id}"))
  return doc.at('.yt-alert-content').blank?
end


文章来源: Programmatically determine whether a Youtube video has been taken down