YouTube API:获取YouTube频道的上传播放列表ID

时间:2017-09-11 14:28:37

标签: youtube-api youtube-data-api android-youtube-api

我正在尝试找出根据频道的channelID获取频道上传播放列表ID的最佳方法。例如。对于channelID

的频道
  

UC9CuvdOVfMPvKCiwdGKL3cQ

相应的上传播放列表ID

  

UU9CuvdOVfMPvKCiwdGKL3cQ

请注意,第二个字符已从“C”更改为“U”

我可以通过字符串操作进行这种转换,但我很好奇是否有一种更好的,更少hacky的方式来通过官方的youtube api找到上传播放列表ID。

以下是一些显示我的问题的Kotlin代码:

我可以通过以下youtube api v3搜索找到“Game Grumps”频道的ChannelID:

            val req = youtube.search().list("snippet");
            req.key = {API_KEY}
            req.q = "Game Grumps"
            req.type = "channel"
            val response = req.execute();

生成的频道ID(response.items [0] .snippet.channelId)是UC9CuvdOVfMPvKCiwdGKL3cQ

但是当我运行以下内容试图获取频道上传的视频时,我必须使用转换后的ChannelID(以UU而不是UC开头)

            val req = youtube.PlaylistItems().list("snippet")
            req.playlistId = "UU9CuvdOVfMPvKCiwdGKL3cQ"
            req.key = {API_KEY}
            val response = req .execute()

如果我使用未转换的“UC”channelID,则会收到以下错误:无法找到使用请求playlistId参数标识的播放列表。

不是仅仅使用“U”替换第二个字符,将ChannelID转换为播放列表ID(对于从该频道上传的内容)的更强大的方式(例如使用youtube API)是什么?

1 个答案:

答案 0 :(得分:1)

我建议使用官方的Youtube API,而不是试图操纵字符串。您可以按照here

的说明进行操作

获取V3中频道的所有上传视频的视频ID的说明

  1. 获取所需频道的频道ID(您可能只需要执行一次,然后就可以保存)
    • 使用search.list
    • 将类型设置为频道
    • 将q设置为您想要的频道名称
    • 抓住频道ID(类似这样:“channelId”:“UC0X2VuXXXXXXXXXXXXXXXX”)
  2. 使用步骤1中的频道ID获取频道上传的播放列表ID(您可能只需要执行此操作一次,然后您可以保存它)
    • 使用channels.list
    • 从步骤1开始将ID设置为UC0X2VuXXXXXXXXXXXXXXXX
    • 从contentDetails获取上传密钥(类似于:“uploads”:“UU0XXXXXXXXXXXXXXXXXXXX”)
  3. 使用步骤2中的播放列表ID,通过播放列表中的播放列表项目获取视频
    • 使用playlistItems.list
    • 从第2步将播放列表ID设置为UU0XXXXXXXXXXXXXXXXXXXX
    • 浏览每个PlaylistItem并提取视频ID