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

YouTube API: Get upload playlistID for YouTube Channel

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

的频道

UC9CuvdOVfMPvKCiwdGKL3cQ

对应的上传播放列表ID为

UU9CuvdOVfMPvKCiwdGKL3cQ

请注意第二个字符已从 "C" 更改为 "U"

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

下面是一些显示我的问题的 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" 替换第二个字符之外,还有什么更可靠的方法(例如使用 youtube API)将 ChannelID 转换为 PlaylistID(用于从该频道上传的内容) )?

我建议使用官方 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