如何使用来自 YouTube Data API V3 的 enpoint 搜索通过 channelId 获取频道图标

Posted

技术标签:

【中文标题】如何使用来自 YouTube Data API V3 的 enpoint 搜索通过 channelId 获取频道图标【英文标题】:How to get channel icon by channelId with enpoint search from YouTube Data API V3 【发布时间】:2021-12-29 10:17:28 【问题描述】:

我在 /search enpoint 上提出请求:https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UC8M5YVWQan_3Elm-URehz9w&key=AIzaSyAp8yGkCqT9e9p7IzgpE24KGoqLRgNhOg0&q=Utopia

我收到视频及其预览,但频道图标没有出现,我阅读了如何获取频道图标,我明白了,https://developers.google.com/youtube/v3/docs/search/list 你需要从 Id 类中获取 channelId 并将其传递给channelId 查询参数,之后有关通道的数据将来到 Snippet 模型,以及图标到 Thumbnails,但我不明白如何以及在何处从模型 Id 中获取 channelId 以及将其传递给请求参数的位置,去哪里买比较好?

【问题讨论】:

【参考方案1】:

频道图标是指频道头像? - 如果是这样,那么,是的,频道图标会出现在响应的youtube#channel 中。

这是您使用your sample request 收到的回复的一部分:


  "kind": "youtube#searchListResponse",
  "etag": "hwZ_cPPePXCDt8h44C-3Ym9NP2I",
  "nextPageToken": "CAUQAA",
  "regionCode": "CO",
  "pageInfo": 
    "totalResults": 244,
    "resultsPerPage": 5
  ,
  "items": [
    
      "kind": "youtube#searchResult",
      "etag": "p0M_r8_zUEtBcT7MrX49-24RkXU",
      "id": 
        "kind": "youtube#channel",
        "channelId": "UC8M5YVWQan_3Elm-URehz9w"
      ,
      "snippet": 
        "publishedAt": "2015-04-14T02:57:14Z",
        "channelId": "UC8M5YVWQan_3Elm-URehz9w",
        "title": "Utopia Show",
        "description": "Клоунада и театральщина Реклама: utopia@tag.show #utopia_show #topatella #topsecret.",
        "thumbnails": 
          "default": 
            "url": "https://yt3.ggpht.com/ytc/AKedOLRf5WOTI2S1ruF-YWz22VFqh5QxpMEZiqWX5vDWTw=s88-c-k-c0xffffffff-no-rj-mo"
          ,
          "medium": 
            "url": "https://yt3.ggpht.com/ytc/AKedOLRf5WOTI2S1ruF-YWz22VFqh5QxpMEZiqWX5vDWTw=s240-c-k-c0xffffffff-no-rj-mo"
          ,
          "high": 
            "url": "https://yt3.ggpht.com/ytc/AKedOLRf5WOTI2S1ruF-YWz22VFqh5QxpMEZiqWX5vDWTw=s800-c-k-c0xffffffff-no-rj-mo"
          
        ,
        "channelTitle": "Utopia Show",
        "liveBroadcastContent": "none",
        "publishTime": "2015-04-14T02:57:14Z"
      
    ,
    
      "kind": "youtube#searchResult",
      "etag": "0JhSluN0BMHidIIoDBC19t7HNik",
      "id": 
        "kind": "youtube#video",
        "videoId": "Ywpd8M6wfHc"
      ,
      "snippet": 
        "publishedAt": "2021-10-05T13:43:17Z",
        "channelId": "UC8M5YVWQan_3Elm-URehz9w",
        "title": "ТЫ БЫ НИКОГДА ТАКОЕ НЕ ЗАГУГЛИЛ #9",
        "description": "https://go.skyeng.ru/utopia_show_skypro - Начни свой путь в IT с онлайн-университетом Skypro. Забирай 10% скидку на один из курсов по промокоду ...",
        "thumbnails": 
          "default": 
            "url": "https://i.ytimg.com/vi/Ywpd8M6wfHc/default.jpg",
            "width": 120,
            "height": 90
          ,
          "medium": 
            "url": "https://i.ytimg.com/vi/Ywpd8M6wfHc/mqdefault.jpg",
            "width": 320,
            "height": 180
          ,
          "high": 
            "url": "https://i.ytimg.com/vi/Ywpd8M6wfHc/hqdefault.jpg",
            "width": 480,
            "height": 360
          
        ,
        "channelTitle": "Utopia Show",
        "liveBroadcastContent": "none",
        "publishTime": "2021-10-05T13:43:17Z"
      
    ,
    [other videos items here]
  ]

您可以从此响应中获得 频道图标,如下所示:

JSON_response.items[0].snippet.thumbnails.medium.url

你会得到:

https://yt3.ggpht.com/ytc/AKedOLRf5WOTI2S1ruF-YWz22VFqh5QxpMEZiqWX5vDWTw=s240-c-k-c0xffffffff-no-rj-mo

JSON_response 是请求的响应。我不确定您是如何阅读回复中的项目的,但是,我希望这个答案对您有所帮助。

【讨论】:

我已经尝试过这样做,但问题是我需要在视频下方显示频道图标。当我进行搜索时,我会在 recyclerview 中显示 20 个视频,每个视频下应该有一个频道所有者图标。抱歉没有指定 @TapchylovRadin 然后,为此您必须执行第二个请求 - 这次,发送到 channel 端点并发送您在每个视频中获得的 channel_id;确保不要多次请求获取相同的频道图标。在 search 响应中,它不会出现频道信息,而是 channel_id 。您可以使用它来发出第二个请求并获取您需要的频道详细信息。 感谢您的回答,您提出了一个好主意! 很抱歉再次打扰您,但是如何在一个recyclerview中同时显示两个请求,即/search和/channel? 你能回答我吗?

以上是关于如何使用来自 YouTube Data API V3 的 enpoint 搜索通过 channelId 获取频道图标的主要内容,如果未能解决你的问题,请参考以下文章

Youtube Data API v.3 - 全自动 oAuth 流程(Python)?

Youtube api 显示来自用户播放列表的有限视频 android

如何使用 YouTube Data API v3 更改页面结果

YouTube Data API - 如何通过 API 获取“已保存的播放列表”

如何使用新的 YouTube Data API (V3) 获取某个频道的上传视频列表?

如何使用新的 YouTube Data API (V3) 获取某个频道的上传视频列表?