不经身份验证就可以从公共播放列表中随机访问曲目

2024-04-30 04:29:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想搜索公共播放列表并得到曲目。到目前为止,我有代码可以得到播放列表的名称,但不能得到曲目:

import spotipy
import sys
sp = spotipy.Spotify()

if len(sys.argv) > 1:
    artist_name = ' '.join(sys.argv[1:])
    results = sp.search(q=artist_name, limit=20, type='playlist')
    for i, t in enumerate(results['playlists']['items']):
        print(i,' ', t['name'])

这将打印给定搜索条件的前20个公共播放列表名称的列表。我想要的是打印每个播放列表中的曲目!我原以为这会很简单,但在搜索之后,似乎唯一的方法就是通过身份验证,这是我不想要的。这些曲目是公开的,那我为什么要认证才能列出这些曲目?!我认为有两个原因。1) 如果我添加(在循环中):

^{pr2}$

请求响应显示“此请求需要身份验证”。另外,我只想在spoty的文档中找到我想要的。https://github.com/plamere/spotipy/blob/dd021c4087981b583ef0f2b276cd43bbc6fd429f/examples/user_playlists_contents.py 没有播放列表的人,有没有办法认证播放列表?打开桌面Spotify应用程序可以快速向任何人显示公共播放列表曲目是完全可搜索和可查看的,因此它必须是可能的。 如果这是一个非常具体的问题,我很抱歉——但我不确定还能问到哪里,因为这是我第一次使用这个API或使用类似的API。我在这个问题上做了不少研究,现在只好求助了。在


Tags: nameimport名称身份验证apiartistsys播放列表
1条回答
网友
1楼 · 发布于 2024-04-30 04:29:47

这是典型的OAuth混乱。这里可能涉及三方。在

  • 你的应用程序(上面的小python片段)
  • Spotify Web API
  • Spotify用户

如果你的应用程序想找到并删除一个以X开头的Spotify用户的播放列表,spotifywebapi会要求你的应用程序首先请求用户允许这样做。感觉很自然。。。在

在这种情况下,应用程序Playlist X Deleter首先必须进行身份验证,以证明它实际上是Playlist X Deleter。然后,用户需要使用Spotify进行身份验证,以证明它实际上就是Playlist X Deleter想要删除播放列表的用户。然后,我们现在知道是谁的用户需要授权Playlist X Deleter来删除播放列表。在

所以,你有一个认证的应用和一个认证的用户。在

对于公开的信息,没有明显的理由说明用户需要进行身份验证。应用程序需要进行身份验证也没有明显的原因。然而,Spotify决定应用程序必须经过身份验证才能获取公共播放列表信息。也许这样它可以阻止那些搜索过多播放列表数据或滥用api的坏用户。在

在这种情况下,由于不涉及私有播放列表,只有读取权限,因此用户不需要授权任何内容。在OAuth世界中,这称为客户端凭据流https://tools.ietf.org/html/rfc6749#section-4.4

转到开发人员控制台并创建一个应用程序以获取客户机标识和客户机密钥:

https://developer.spotify.com/my-applications/#!/applications/create

然后遵循:

https://developer.spotify.com/web-api/authorization-guide/#client_credentials_flow

或者在您的情况下,通过SpotifyClientCredentials向spotipy提供client_id和client_secret

文件:http://spotipy.readthedocs.io/en/latest/#spotipy.oauth2.SpotifyClientCredentials

示例片段(虽然没有填充任何内容):https://github.com/plamere/spotipy/blob/master/examples/client_credentials_flow.py

相关问题 更多 >