如何仅列出youtube v3的可分配视频类别?

时间:2013-06-01 01:40:31

标签: api youtube

通过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中的缺失还是我错过了什么?

2 个答案:

答案 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&regionCode=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"
    }
}