目标 获取视频,按日期排序,并按特定YouTube频道的标记进行过滤。我只需要具有该唯一标记的视频。我了解到我可以获取最新上传的视频,然后逐个查询每个视频的YouTube API,并确定它是否包含我需要的标签。但是我发现它太长了,并且想知道是否有单个API请求而不是为我处理该过滤器。
试过
阅读此API documentation我了解代码段应该有 snippet.tags :
snippet.tags []
列表
与视频相关联的关键字标签列表。标签可能包含空格。属性值的最大长度为500个字符。请注意有关计算字符限制的方式的以下规则: 属性值是一个列表,列表中项目之间的逗号计入限制。 如果标记包含空格,则API服务器处理标记值,就好像它用引号括起来一样,并且引号计入字符限制。因此,出于字符限制的目的,标签Foo-Baz包含七个字符,但标签Foo Baz包含九个字符。
使用following(搜索/列表)
https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=CHANNEL_ID&maxResults=10&order=date&type=video&key=MY_GOOGLE_CONSOLE_KEY
我明白了:
{
"kind": "youtube#searchResult",
"etag": "\"cbz3lIQ2N25AfwNr-BdxUVxJ_QY/MO86DiShKKJ483oXkFJdDmvBd5M\"",
"id": {
"kind": "youtube#video",
"videoId": "jMywJTXhkVs"
},
"snippet": {
"publishedAt": "2017-09-16T15:28:40.000Z",
"channelId": "UC4GRKWUEhUvsCqD-yNQpxQw",
"title": "Real Time - Gesture Drawing 7 (5.10 mins time)",
"description": "Join me in gesture drawing practice from photo reference. :) References (in order of drawing) - Thank you to SenshiStock (https://senshistock.deviantart.com/) ...",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/jMywJTXhkVs/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/jMywJTXhkVs/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/jMywJTXhkVs/hqdefault.jpg",
"width": 480,
"height": 360
}
},
"channelTitle": "Chayemor",
"liveBroadcastContent": "none"
}
}
代码段仅包含publishedAt
,channelId
,title
和description
,当然不包括tags
。
查看 / search / list documentation我看到它有另一个我可以使用的参数:
问
字符串
q参数指定要搜索的查询字词。
您的请求也可以使用布尔NOT( - )和OR(|)运算符 排除视频或查找与其中一个相关联的视频 几个搜索词。例如,要搜索匹配的视频 无论是“划船”还是“航行”,都要将q参数值设置为 划船|帆船。同样,要搜索匹配的视频 “划船”或“航行”而不是“钓鱼”,将q参数值设置为 划船|航行 - 钓鱼。请注意,管道符必须是 在您的API请求中发送URL时,会对其进行转义。 URL转义的值 管道符是%7C。
所以我使用我知道在各种视频中设置的标签“草图”。 (确定单个视频标记是否通过https://www.googleapis.com/youtube/v3/videos?key=GOOGLE_KEY&fields=items(snippet(title,description,tags))&part=snippet&id=video_id
)
https://www.googleapis.com/youtube/v3/search?q=%22sketching%22&part=snippet&channelId=CHANNEL_ID&maxResults=25&order=date&type=video&key=GOOGLE_KEY
产生这个:
{
"kind": "youtube#searchListResponse",
"etag": "\"cbz3lIQ2N25AfwNr-BdxUVxJ_QY/hPC7YXbOHVWNEk_6UiC5Jzdh5Zs\"",
"regionCode": "ES",
"pageInfo": {
"totalResults": 10,
"resultsPerPage": 25
},
"items": []
}
没有别的。它说 10 结果,但我没有看到它们,我不知道它们是什么。我尝试发送没有“”的请求,但它返回了相同的结果。我在周围看到了这一点,当我在一个频道的YouTube视频中搜索时(作为浏览器客户端,通过GUI,而不是API),它使用参数'query'。因此,由于没有任何更多想法,我决定将q
替换为query
。
https://www.googleapis.com/youtube/v3/search?query=sketching&part=snippet&channelId=UC4GRKWUEhUvsCqD-yNQpxQw&maxResults=25&order=date&type=video&key=GOOGLE_KEY
该查询确实会产生结果,但不会产生具有该唯一标记的视频,而是具有该标记或标题或说明中使用的该字词的任何视频。
{
"kind": "youtube#searchListResponse",
"etag": "\"cbz3lIQ2N25AfwNr-BdxUVxJ_QY/xjWZRnm0X7B_csQX4KEu9nv_qdQ\"",
"regionCode": "ES",
"pageInfo": {
"totalResults": 24,
"resultsPerPage": 25
},
"items": [ ... ]
}
有什么建议吗?