YouTube API无法检索通过YT音乐上传的播放列表项

问题描述

我刚刚创建了YouTube音乐播放列表,并将一首我自己上传到YouTube音乐的歌曲添加到了此播放列表。 现在,我使用的是YouTube API,请以完全相同的用户身份登录,以获取正确的oAuth令牌。 在为用户检索播放列表时,我可以看到此播放列表(内部元素数量很多)。

但是,当我尝试检索此播放列表中的项目时,只能看到标题为“私人视频”和描述为“此视频为私人视频”的视频。是的,这是我自己上传的私人视频,但至少应该正确获取信息!就像我之前上传的视频/歌曲的标题一样。

有什么主意吗? 谢谢!

编辑: 是的,我正在使用以mine = true查询的PlaylistItems.list API端点。 这是响应:

stdClass Object
(
    [kind] => youtube#playlistItemListResponse
    [etag] => sAQNugs9wcKG_EI3f71MecqShMo
    [items] => Array
        (
            [0] => stdClass Object
                (
                    [kind] => youtube#playlistItem
                    [etag] => vL-NtUyJLqmlHMnPNX-ldbXRzhs
                    [id] => UExGU1NIZU5WbWZUQUQyTDc0VlJxUm5meGZwN3dNZTJ2by41NkI0NEY2RDEwNTU3Q0M2
                    [snippet] => stdClass Object
                        (
                            [publishedAt] => 2020-08-14T08:55:20Z
                            [channelId] => XXXXX
                            [title] => Private video
                            [description] => This video is private.
                            [thumbnails] => stdClass Object
                                (
                                )

                            [channelTitle] => XXXXX
                            [playlistId] => XXXXX
                            [position] => 0
                            [resourceId] => stdClass Object
                                (
                                    [kind] => youtube#video
                                    [videoId] => XXXXX
                                )

                        )

                )

        )

    [pageInfo] => stdClass Object
        (
            [totalResults] => 1
            [resultsPerPage] => 50
        )

)

如您所见,没有有关该视频的信息。但这是我使用YouTube音乐上传按钮上传的歌曲。 是的,我使用的是完全相同的用户,因此访问令牌是正确的。

如果我在music.youtube.com上打开该播放列表,则显示的是同一首歌曲,而在youtube.com上打开的播放列表则未显示任何内容(即使与相同的用户/个人资料关联)...

复制步骤非常简单:

  • 转到music.youtube.com
  • 从您的设备上传歌曲
  • 将此歌曲添加到播放列表
  • 尝试使用YouTube API V3检索此播放列表的播放列表项...

谢谢!

解决方法

(免责声明:这不是一个实际的答案,而更像是一个带有OP问题的猜想。)

我可以确认将一个(公开的,没有版权问题的)MP3上传到我的频道(在此不做公开),并观察与OP相同的结果。

这是我通过对PlaylistItems.list API端点的简单查询获得的(以下省略号使某些信息匿名化):

{
    "kind": "youtube#playlistItemListResponse","etag": "...","items": [
        {
            "kind": "youtube#playlistItem","id": "...","snippet": {
                "publishedAt": "2020-08-15T14:11:45Z","channelId": "...","title": "Private video","description": "This video is private.","thumbnails": {
                },"channelTitle": "...","playlistId": "...","position": 0,"resourceId": {
                    "kind": "youtube#video","videoId": "..."
                }
            },"contentDetails": {
                "videoId": "..."
            },"status": {
                "privacyStatus": "private"
            }
        }
    ],"pageInfo": {
        "totalResults": 1,"resultsPerPage": 50
    }
}

我确实推测这与以下事实有关:即使API将新创建的播放列表项记录为 private (请注意,privacyStatusprivate)如果该项目和播放列表本身是 public (就像我一样)。

我认为,所显示的行为确实是API的错误。

让我们wait and see对此表示支持。