【问题标题】:Youtube API Batch Request BUG?Youtube API 批量请求 BUG?
【发布时间】:2012-08-16 16:28:19
【问题描述】:

我正在通过他们的 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:统计节点),所以我上网寻找修复程序,我发现Google 上的这个帖子:

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

Youtube API 团队的一位开发者给出了回答,他们对此似乎不是很在意。

有人也试过吗?有没有可能的解决方案?

提前谢谢,请原谅我的英语。

【问题讨论】:

    标签: api youtube-api gdata gdata-api


    【解决方案1】:

    我发现我的问题在于 XML 解析而不是 API 输出。我试图将 XML 输出转换为 JSON/Array 以提供更轻松的数据操作,但由于节点名称和嵌套中的冒号,我遇到了困难,而且我在互联网上找到的任何功能都无法像这样解析 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 Batch查询(最多可以同时查询50个视频/用户...),查询后以SimpleXML格式返回输出,您可以通过:

    $xmlDoc->entry->....

    问候

    【讨论】:

      猜你喜欢
      • 2020-12-22
      • 1970-01-01
      • 2013-07-24
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多