我最近开始使用Soundcloud API开发一个简单的应用程序,可以在播放列表中保存数据。但是,在我看来,并非所有来自播放列表的曲目都会被退回。
我正在使用以下代码:
import soundcloud, shelve, time
client = soundcloud.Client(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
username=E-MAIL,
password=PASSWORD)
playlists = client.get('/users/24196709/playlists', limit=1)
tracknames = []
trackids= []
for pl in playlists:
for track in pl.tracks:
print(track['title'])
tracknames.append(track['title'])
trackids.append(track['id'])
print(tracknames)
在此播放列表中使用它:https://soundcloud.com/michiel-tammeling/sets/icecubes包含13首曲目,但代码只返回11。
非常感谢任何帮助。
答案 0 :(得分:5)
遗憾的是,这无法解决。关于这个问题已经有很多话题了。问题是播放列表API返回播放列表中的所有曲目,但曲目API仅返回未受保护的曲目。由于您已经确定了哪两个丢失的轨道我验证了这一点,并且当您尝试使用轨道API时它们都返回403。因此,使用跟踪API无法访问这两首曲目。
更多背景资料:
SoundCloud Playlist tracks is empty
SoundCloud通过电子邮件回复说他们已经为权利人引入了一个选项,默认情况下禁用对曲目的所有API访问,并在请求时返回此403错误。他们还说,这是一个令人困惑的特征是可以理解的,他们希望更清楚。
@nickf the tech lead of soundcloud says:
是的 - 有很多原因导致曲目可能无法显示给你。它可以被轨道的权利持有者删除,被上传者私有或删除,或者(在某些地区被封锁)(这是棘手的)。每次获取用户的所有轨道的策略都是非常可行的,因此有时这个数字将是不准确的(取决于谁在询问以及它们在哪里)。 - nickf 4月14日22:37