SoundCloud API忽略持续时间过滤器

https://developers.soundcloud.com/docs/api/reference#tracks的SoundCloud API文档之后,我开始在我的一个项目中编写SoundCloud API的实现 . 我尝试使用以下代码获取50个特定类型的音轨,最小长度为120000ms:

def get_starttracks(genres="Rock"):
    return client.get("/tracks", genres=genres, duration={
        'from': 120000
    }, limit='50')

SoundCloud使用有效的曲目列表进行响应,但其持续时间与给定的过滤器不匹配 .

例:

print(get_starttracks(genres="Pop")[0].fields()['duration'])
> 30000

api是否忽略'duration'参数或者我的代码中的过滤器中是否有错误?

Ps . :如果错误不在python代码中,可能与soundcloud search api ignoring duration filter?有关 .

回答(1)

2 years ago

尝试通过对我的代码进行一些更改来解决此问题后,我终于找到了问题:

这是 NOT 一个错误 . 随着Soundcloud发布他们的"Go+"服务,一些官方曲目仅限于30秒的预览 . API过滤器似乎比较完整轨道的持续时间,而只是将预览版本发送回客户端(如果您没有订阅"Go+"和/或您的应用程序未登录) .

因此,按持续时间过滤的唯一方法是遍历所有收到的曲目:

for track in tracks:
    if track.duration <= 30000:
        tracks.remove(track)