0

一部のデータセットが特定の youtube ビデオにリンクしている巨大なデータベースがあります。YouTubeからしばらくするといくつかのYouTube動画が消えることは誰もが知っているので、これが私の解決策と私の問題にもつながります->取得するデータがあるかどうかをJSON経由で確認するだけで、YouTube動画がまだ存在するかどうかを確認したいと思いますビデオから。そうでない場合は、単にその特定のデータ セットを削除します。

したがって、私の解決策の最初の部分は、次のコードに示すように、データ テーブルの各行を調べて、YouTube から取得するデータがあるかどうかを各 ID で確認することです。

   $result = $db->query("SELECT id, link FROM songs");
    while($row = $result->fetch_assoc())
    {
        $number    = 1+$rown++;
        $id        = $row['id'];
        $link      = $row['link'];
        $video_ID = $link;
        $JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos/{$video_ID}?v=2&alt=json");
        $JSON_Data = json_decode($JSON);
        $views = $JSON_Data->{'entry'}->{'yt$statistics'}->{'viewCount'};

        echo $number .' row<br />';
        echo $link .' link<br />';
        echo $views .' views<br /><br />';

    }

この試みはうまく機能し、必要なデータを出力してくれます。唯一の問題は、最初の 150 ~ 190 行からデータを取得するだけで、それだけです。今、私は空のYouTubeデータの各行をチェックするソリューションをチェックしています.これは私が持っている2つの具体的な質問につながります:

1st) 単一のクエリからデータを取得する際の制限により、YouTube がその責任を負う可能性がありますか?

2番目) これは私のサーバーの問題で、x 秒後にクエリを停止する可能性があります (ただし、set_time_limit (10000000); という行を php コードに挿入することで制限時間を既に延長していますが、成功していません)?

よろしくお願いします。

4

1 に答える 1

0

YouTube では、当然のことながら、一定期間に作成できるリクエスト数に制限を設けています。残念ながら、これらの制限が何であるかについての明確なガイドラインはありません... v2 の場合、ガイドラインには次のように記載されています。

YouTube API では、不規則な API の使用に関連する問題を防ぐために割り当てが適用されます。具体的には、too_many_recent_calls エラーは、API サーバーが同じ呼び出し元から短時間に非常に多くの呼び出しを受信したことを示します。このタイプのエラーが発生した場合は、数分待ってからリクエストを再試行することをお勧めします。

時間が問題にならない場合は、各クエリの速度を落として、10 ~ 15 秒ごとに 1 つのリクエストのみを行うようにすることができます。または、おそらくバッチ処理の方がうまくいくでしょう。これにより、一度に最大 50 件のリクエストを作成できます (これは、1 日あたりの全体的なリクエスト クォータに対しては 50 リクエストとしてカウントされますが、時間ごとのクォータに対しては 1 つとしてカウントされます)。最初にバッチ エンドポイントに POST リクエストを送信し、その結果に基づいて複数のリクエストを送信できるため、API の v2 を使用したバッチ処理は少し複雑です。ドキュメントは次のとおりです。

https://developers.google.com/youtube/2.0/developers_guide_protocol?hl=en#Batch_processing

v3 ではバッチ処理がはるかに簡単です。videoId パラメーターを、情報が必要な動画のカンマ区切りのリストにするだけなので、file_get_contentsこの場合は、次のような URL で実行します。

https://www.googleapis.com/youtube/v3/videos?part=id&id={comma-separated-list-of-IDs}&maxResults=50&key={YOUR_API_KEY}

JSON 応答で返されないリスト内の動画 ID は、もう存在しません。一度に 50 回行う場合は、15 秒間待ってから、さらに 50 回行うなどしてください。これにより、パフォーマンスが向上するはずです。

于 2013-10-02T04:47:31.650 に答える