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

Mik*_*ler 4 youtube-api android-youtube-api youtube-data-api

我正在尝试找出在给定频道的 ChannelID 的情况下获取频道的上传播放列表 ID 的最佳方法。例如对于带有channelID的频道

UC9CuvdOVfMPvKCiwdGKL3cQ

对应的上传playlistID为

UU9CuvdOVfMPvKCiwdGKL3cQ

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

我可以通过字符串操作来完成此转换,但我很好奇是否有更好、更简单的方法来通过官方 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();
Run Code Online (Sandbox Code Playgroud)

生成的通道 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()
Run Code Online (Sandbox Code Playgroud)

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

除了用“U”替换第二个字符之外,还有什么更可靠的方法(例如使用 youtube API)将 ChannelID 转换为 PlaylistID(用于从该频道上传的内容)?

Rey*_*cia 8

我建议使用官方 Youtube API,而不是尝试操作字符串。您可以按照此处的说明进行操作:

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

  1. 获取您想要的频道的频道 ID(您可能只需要执行一次,然后保存即可)
    • 使用搜索列表
    • 将类型设置为通道
    • 将 q 设置为您想要的频道名称
    • 获取频道 ID(如下所示:“channelId”:“UC0X2VuXXXXXXXXXXXXXXXX”)
  2. 使用步骤 1 中的频道 ID 获取频道上传的播放列表 ID(您可能只需要执行一次,然后即可保存)
    • 使用频道列表
    • 将步骤 1 中的 id 设置为 UC0X2VuXXXXXXXXXXXXXXXX
    • 从 contentDetails 中获取上传密钥(如下所示:“uploads”:“UU0XXXXXXXXXXXXXXXXXXXXX”)
  3. 使用步骤 2 中的播放列表 ID 通过播放列表中的播放列表项获取视频
    • 使用 playlistItems.list
    • 从步骤 2 将 playlistId 设置为 UU0XXXXXXXXXXXXXXXXXXXXX
    • 遍历每个 PlaylistItem 并提取视频 id