【问题标题】:Programmatically determine whether a Youtube video has been taken down以编程方式确定 Youtube 视频是否已被删除
【发布时间】:2009-10-19 21:34:48
【问题描述】:

Rap Exegesis 上的大部分音乐都来自 YouTube(以嵌入式播放器的形式)。不幸的是,我使用的其中一个视频总是有被删除的风险(由于版权问题或其他原因),从而破坏了我网站上的相应页面。

理想情况下,我会有一个 cronjob 来检查(每晚说)是否有任何视频已被删除并通知我。最好的方法是什么?

【问题讨论】:

  • 你有没有得到这个工作?
  • 我还没有机会设置它,但是当我这样做时,我可能会使用@Jakobud 的 hacky CURL 解决方案(我不想阅读任何 API 文档)跨度>
  • 很公平。你用什么语言做这个? API 路由可能与 cURL 路由一样简洁,如果不是更简洁,肯定会更准确
  • Ruby(在 Rails 上)——是的,也许我会仔细看看 API 路由
  • 这里有一些代码可以帮助quarkruby.com/2008/1/15/activeresource-and-youtube

标签: youtube youtube-api


【解决方案1】:

您需要的信息可通过YouTube API 获得,特别是yt:state tag

根据您使用的编程语言,有大量代码可用于与 YouTube API 交互。

如果您仍然遇到问题,请在此处发布更多详细信息。

【讨论】:

【解决方案2】:

与“yt:state tag”一样,视频的 OP 可能不允许嵌入它。例如,如果首页上的歌曲列表来自您在 YouTube 上维护的播放列表,那么确保您没有获得不可嵌入的歌曲的一种方法是包含“&format=5”参数检索您的列表时。例如

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

另外,如果您担心国家级限制,请使用“&restriction=[双字母国家代码]”参数。

请参阅“Developer's Guide: Data API Protocol – API Query Parameters”。

【讨论】:

    【解决方案3】:

    一个 hacky 方法是使用 CURL 获取您想知道的页面/视频的 html,然后查找显示在顶部的错误框 DIV,表明视频已被删除.如果它存在并且可见,则视频可能已被删除。

    Hacky,但我敢打赌它会起作用。

    【讨论】:

    • 嗯,今天就可以了。但是不要构建依赖于 div 标签的东西,除非 YouTube 说你可以信任它。这似乎太容易改变了。我肯定会推荐使用 API。
    • 我绝对同意。只是想放弃另一个选择,即使它完全是黑客。
    【解决方案4】:

    正如@seengee 所说,执行此操作的“正确”方法是通过 YouTube API 在 YouTube 视频的 XML 表示中查找 yt:state 标记

    要获取此 XML 表示,您需要获取 http://gdata.youtube.com/feeds/api/videos/VIDEO_ID (more details here)。所以实现这个检查应该很简单:

    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 标记。因此,我采用了这种更骇人的方法:

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

    【讨论】:

      猜你喜欢
      • 2018-06-25
      • 1970-01-01
      • 2012-01-02
      • 2018-04-18
      • 2014-07-15
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      相关资源
      最近更新 更多