7

Rap Exegesisのほとんどの音楽は、YouTube から (埋め込みプレーヤーの形で) 入手しています。残念ながら、私が使用しているビデオの 1 つが (著作権の問題などにより) 削除され、それによって私のサイトの対応するページが壊れてしまうリスクが常にあります。

理想的には、ビデオが削除されたかどうかをチェックして (毎晩)、通知する cronjob が必要です。これを行う最善の方法は何ですか?

4

4 に答える 4

15

必要な情報は、YouTube API、特にyt:stateタグから入手できます。

プログラミングしている言語に応じて、YouTubeAPIを操作するためのコードがたくさんあります。

これを機能させるのにまだ問題がある場合は、詳細をここに投稿してください。

于 2009-10-19T21:41:21.470 に答える
4

「yt:stateタグ」と同様に、動画のOPでは埋め込みが許可されていない場合があります。たとえば、フロントページの曲のリストがYouTubeで管理しているプレイリストからのものである場合、埋め込みできない曲を取得しないようにする方法は、「&format=5」パラメータを含めることです。リストを取得するとき。例えば

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

また、国レベルの制限が心配な場合は、「&restriction=[2文字の国コード]」パラメーターを使用してください。

開発者ガイド:データAPIプロトコル–APIクエリパラメータ」を参照してください。

于 2009-10-20T04:01:33.823 に答える
1

それを行うためのハッキーな方法は、CURLを使用して、疑問に思っているページ/ビデオのhtmlを取得し、ビデオが削除されたことを示す上部に表示されるエラーボックスDIVを探すことです。存在し、表示されている場合は、動画が削除されている可能性があります。

ハッキーですが、うまくいくと思います。

于 2009-10-19T21:45:23.703 に答える
0

@seengeeが言うように、これを行う「正しい」方法は、YouTube APIを介してYouTubeビデオのXML表現でyt:stateタグを探すことです。

このXML表現を取得するには、GETします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/MX6rC1krGp0yt: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
于 2010-05-17T19:55:22.813 に答える