2012-04-15 27 views
3

可能性の重複:
Check if Youtube and Vimeo-clips are validPHPを使用してYouTube動画が削除されているかどうかを確認しますか?

私はYouTubeの動画の多くが、これらの動画は、ユーザーやYouTubeのいずれかによって除去されている多くの時間にリンクするウェブサイトを持っています。これは、私のサイトに多数のデッド・ビデオがあることを意味し、手動でそれらをすべて確認することは非常に難しいことです。

私は、YouTubeの動画がまだPHPで有効かどうかを確認する方法を探しています。私は、同じ質問をしている人たちと多くのスレッドを見てきましたが、投稿された解決策のどれも働かせることはできません。

+0

削除された動画やまだ機能している動画のリンクの例(または識別するために使用するもの)の例を示してください。 – hakre

答えて

7

youtube V3 APIを使用して、動画にアクセスできるかどうかを確認します。

:更なる情報については次のようなサンプルの応答を受信します、

https://developers.google.com/youtube/v3/docs/videos/list

基本的には、次のドキュメントを参照してください

GET https://www.googleapis.com/youtube/v3/videos?part=id&id={VIDEO_ID}&key={YOUR_API_KEY} 

キーあなたのAPIを使用してGET要求を行います

{ 
"kind": "youtube#videoListResponse", 
"etag": "\"sZ5p5Mo8dPpfIzLYQBF8QIQJym0/N6KWrfNRyfPOarHfhvNS7j4jfxM\"", 
"pageInfo": { 
    "totalResults": 0, 
    "resultsPerPage": 0 
}, 
"items": [] 
}* 

応答のitemsに空の配列がある場合、ビデオにアクセスすることはできません。


次に、APIのV2について説明します。これは廃止予定です。 (https://developers.google.com/youtube/2.0/developers_guide_protocol_video_entries)。

注:YouTube Data API(v2)は、2014年3月4日以降正式に廃止されました。詳細については、廃止ポリシーをご覧ください。新しい統合のためにYouTube Data API(v3)を使用し、v2 APIを使用しているアプリケーションをv3 APIに移行してください。ビデオここ

http://gdata.youtube.com/feeds/api/videos/<videoid> 

の存在を確認するために、このURLへ

送信要求は、それの使用です。

$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $videoId); 
if (!strpos($headers[0], '200')) { 
    echo "The YouTube video you entered does not exist"; 
    return false; 
} 
+2

@Downvoter、downvoting中にコメントを残すことはできませんか? – Starx

+0

すべてのページビューでこのリクエストを行うと(つまり、ユーザーがウェブにアクセスしようとするたびに)youtube apiが私をブロックする可能性はありますか? – Ant100

+0

それでも機能しますか?私は有効なyoutubeビデオidでも "Video No Longer Available"を取得しています – Sudar

5

あなたは、単にあなたが戻って

  • ビデオが見つからない
    • プライベートビデオ
    • 無効なIDの取得http://gdata.youtube.com/feeds/api/videos/$id

      の戻り値を確認することができます

    そう電子最も簡単なチェックは次のようになります。

    if (file_get_contents('http://gdata.youtube.com/feeds/api/videos/'.$videoId) == 'Video not found') { 
        echo 'Video deleted'; 
    } 
    
    +0

    Mr Dan Lee、言語を気にしてください。重複した回答がない、きれいな投稿です。とにかくかなり悪い品質であるあなたの答えを考えてみましょう。 – Starx

    0

    YouTubeのは、HTTPステータスコード404は、ビデオが存在しないからである返します。例えば、 See this made up urlである。

    特定のエラーメッセージは異なりますが、重要なことは200以外のコードが返されることです。

    PHPでは、Curlを使用してURLを取得し、返されるステータスコードを確認します。あなたは、URLの小さな数を確認するために、すべてのN分を実行するcronジョブを持って、その後、データベース内の各URLをlast_checkedタイムスタンプを格納することができ

    $http_status = curl_getinfo($handle, CURLINFO_HTTP_CODE); 
    

    、: あなたはこのようなものでカールからステータスコードを取得することができます完了したらタイムスタンプを更新します。ステータスコードもデータベースに保存してください。

    次に、URLを表示する際に、コード内で好きなように200個以外のステータスコードを扱うことができます。

    関連する問題