【问题标题】:Youtube API Batch Request BUG?Youtube API 批量请求 BUG?
【发布时间】:2012-08-16 16:28:19
【问题描述】:
【问题讨论】:
标签:
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->....
问候