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

4

我正在尝试找出给定频道ID的上传播放列表ID的最佳方法。例如,对于具有频道ID UC9CuvdOVfMPvKCiwdGKL3cQ 的频道:

相应的上传播放列表ID 为

UU9CuvdOVfMPvKCiwdGKL3cQ

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

我可以通过字符串操作进行此转换,但我想知道是否有更好的、非黑客式的方法通过Youtube官方API查找上传播放列表ID。

以下是一些Kotlin代码,展示了我的问题:

我可以通过以下Youtube API v3搜索找到“Game Grumps”频道的频道ID:

            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。

但是,当我运行以下代码尝试获取该频道上传的视频时,必须使用经过转换的频道ID(以UU开头而不是UC)。

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

如果我使用未转换的“UC”频道ID,会出现以下错误:无法找到带有请求的playlistId参数标识的播放列表。
除了仅仅用“U”替换第二个字符之外,有什么更稳健的方式(例如使用YouTube API)将Channel ID翻译为Playlist ID(用于该频道的上传内容)?
1个回答

8
我建议使用官方的Youtube API,而不是尝试操纵字符串。您可以按照这里的说明进行操作: 获取V3中频道所有上传的视频id的指导说明
  1. 获取您想要的频道的频道ID(您可能只需要执行一次此操作,然后可以保存它)
    • 使用search.list
    • 将类型设置为频道
    • 将“q”设置为您想要的频道名称
    • 抓取频道ID(类似于“channelId”:“UC0X2VuXXXXXXXXXXXXXXXX”)
  2. 使用来自第1步的频道ID获取频道上传的播放列表ID(您可能只需要执行一次此操作,然后可以保存它)
    • 使用channels.list
    • 将ID设置为第1步中的UC0X2VuXXXXXXXXXXXXXXXX
    • 从contentDetails中获取uploads密钥(类似于“uploads”:“UU0XXXXXXXXXXXXXXXXXXXX”)
  3. 使用来自第2步的播放列表ID通过播放列表项获取视频
    • 使用playlistItems.list
    • 将playlistId设置为来自第2步的UU0XXXXXXXXXXXXXXXXXXXX
    • 遍历每个PlaylistItem并提取视频ID

完美!作为参考,步骤2中的“类似于'uploads'”是contentDetails.relatedPlaylists.uploads。 - Mike Miller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接