通过http://gdata.youtube.com/schemas/2007/categories.cat使用API的v2,我可以看到可分配和弃用的视频类别。
但是,使用v3 google数据API,我会看到所有类别,但没有标记表明它们是否可用作视频上传的类别。一个典型的例子是标记为“动漫/动画”的类别(类别31)。如果您尝试使用此类别上传视频,则会在上传过程结束时收到来自YT的“错误请求”回复。
如果您根据第一个网址选择“可指定”列表中的任何类别,则上传有效。这是使用基于Atom的API的弃用类别:
<atom:category term="Movies_anime_animation" label="Anime/Animation" xml:lang="en-US">
<yt:deprecated/>
</atom:category>
以下是Google API资源管理器中使用JSON的相同内容:
{
"id": "31",
"kind": "youtube#videoCategory",
"etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/-p_eJg3ji5PiNMcZrzS4hNfl4gQ\"",
"snippet": {
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"title": "Anime/Animation"
}
我查看了video.list v3 API文档,以及来自同一API的原始JSON输出。我看不出如何区分已弃用和可分配的类别。这只是API中的缺失还是我错过了什么?
答案 0 :(得分:1)
您可以接收解析XML文档的可分配类别列表。这是 PHP :
的示例$catURL = 'http://gdata.youtube.com/schemas/2007/categories.cat';
$cxml = simplexml_load_file($catURL);
$cxml->registerXPathNamespace('atom', 'http://www.w3.org/2005/Atom');
$result = $cxml->xpath('//atom:category/yt:assignable/..');
$categories = array();
foreach ($result as $row) $categories[(string)$row['term']] = (string)$row['label'];
答案 1 :(得分:0)
对于偶然发现此问题的任何人:YouTube V3 API现在会返回一个带有每个类别摘要的可分配标志。
请求
curl \
'https://www.googleapis.com/youtube/v3/videoCategories?part=snippet®ionCode=NL&key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--compressed
回复
{
"kind": "youtube#videoCategory",
"etag": "7mqChSJogdF3hSIL-88BfDE-W8M",
"id": "17",
"snippet": {
"title": "Sports",
"assignable": true,
"channelId": "UCBR8-60-B28hp2BmDPdntcQ"
}
}