按标记

时间:2017-10-24 17:58:12

标签: youtube-data-api

目标 获取视频,按日期排序,并按特定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"
   }
  }

代码段仅包含publishedAtchannelIdtitledescription,当然不包括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": [ ... ] 
}

有什么建议吗?

0 个答案:

没有答案