Soundcloud API不会通过Python返回播放列表中的所有曲目

时间:2016-04-20 20:57:01

标签: python soundcloud playlist

我最近开始使用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。

非常感谢任何帮助。

1 个答案:

答案 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