1

APIを介してYoutube(ユーザーとビデオ)から大量のデータを取得していますが、時間の経過とともにニーズが増えており、リクエストは明らかに個別に行う必要があるため、ますます遅くなっています:

http://gdata.youtube.com/feeds/api/users/ID https://gdata.youtube.com/feeds/api/videos/ID

そこで、バッチ処理を試してみることにしました。実行時間を大幅に節約するために、「理論的に」同じことを 50 個のパックで実行できるかどうかです。

https://developers.google.com/youtube/2.0/developers_guide_protocol_batch_processing

これも確かに成功しましたが、問題が発生しています。データは戻ってきていますが、完全ではありません。一部の情報が欠落しています (yt:statistics ノード)。インターネットをサーフィンして修正を探したところ、このスレッドが見つかりましたグーグル:

https://groups.google.com/forum/?fromgroups=#!topic/youtube-api-gdata/YHopv4yJQzk

Youtube API チームの開発者の回答があり、彼らはこれについてあまり心配していないようです。

これも試した人いる?可能な解決策はありますか?

事前に感謝し、私の英語を許してください.

4

1 に答える 1

1

私の問題は、API出力ではなく、XML解析にあることがわかりました。XML出力をJSON/配列に変換してデータ操作を簡単にしようとしていましたが、ノード名とネストにコロンが含まれているために苦労しました。また、インターネット上で見つけた機能は機能しませんでした。このようにXMLデータを解析します。

誰かに役立つかもしれない場合に備えて、いくつかのコードを提供します。

    public static function generarXMLBatch($listaIdsYoutube)
    {
       $version = "2";
       $batchUrl = "https://gdata.youtube.com/feeds/api/users/batch?v=".$version;
       $entryUrl = "https://gdata.youtube.com/feeds/api/users/";


       $xmlDoc = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>
                    <feed xmlns="http://www.w3.org/2005/Atom"
                            xmlns:media="http://search.yahoo.com/mrss/"
                                  xmlns:batch="http://schemas.google.com/gdata/batch"
                                  xmlns:yt="http://gdata.youtube.com/schemas/2007">
                                   <batch:operation type="query"/></feed>');

       foreach($listaIdsYoutube as $idYoutube) {
           $xmlDoc->addChild("entry")->addChild("id", $entryUrl.$idYoutube["perfilYoutube"]."?v=".$version);
       }

       //SimpleXML to String
       $xmlDoc = $xmlDoc->saveXML();
       //XML string to CURL
       $xmlDoc = My_Funciones::cURL_XML($batchUrl, $xmlDoc);
       //XML string CURL output to SimpleXML
       $xmlDoc = new SimpleXMLElement($xmlDoc);

       return $xmlDoc;
   }

この関数は、Youtube IDリストを受け取り、XMLバッチクエリを生成し(最大50本のビデオ/ユーザーを同時にクエリできます...)、クエリ後に出力をSimpleXML形式で返すため、次の方法でアクセスできます。

$ xmlDoc->entry->...。

ご挨拶

于 2012-08-29T15:38:16.817 に答える