【问题标题】:YouTube API not retrieving playlist items uploaded with YT MusicYouTube API 未检索使用 YouTube Music 上传的播放列表项目
【发布时间】:2020-12-04 03:58:57
【问题描述】:

我刚刚创建了一个 YouTube Music 播放列表,并将我自己上传到 YouTube Music 的歌曲添加到该播放列表中。 现在,我正在使用 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 上传按钮上传的歌曲。 是的,我使用的是完全相同的用户,所以访问令牌是正确的。

如果我在 music.youtube.com 上打开这个相同的播放列表,它会显示歌曲,而在 youtube.com 上打开则没有显示任何内容(即使与相同的用户/个人资料连接)...

复制的步骤很简单:

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

谢谢!

【问题讨论】:

  • 这是什么意思当我为我的用户检索播放列表时,我能够看到这个播放列表[...]?您是否使用mine=true 查询的PlaylistItems.list API 端点?如果您确实将 正确 访问令牌传递给此 API 端点,那么 API 响应将(必须)包含所有信息,包括私有数据。另一方面,请发布minimal reproducible sample code 以清楚地查看(并最终测试)您的问题。

标签: youtube-api youtube-data-api


【解决方案1】:

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

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

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

{
    "kind": "youtube#playlistItemListResponse",
    "etag": "...",
    "items": [
        {
            "kind": "youtube#playlistItem",
            "etag": "...",
            "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),即使在以下情况下该项目和播放列表本身是公开的(就像我的一样)。

在我看来,表现出来的行为确实是 API 的一个错误。

让我们wait and see Google 的支持人员对此有何看法。

【讨论】:

    猜你喜欢
    • 2014-04-04
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    相关资源
    最近更新 更多