2017-02-21 4 views
0

После документации API SoundCloud по адресу https://developers.soundcloud.com/docs/api/reference#tracks я начал писать реализацию SoundCloud API в одном из моих проектов. Я пытался получить 50 треков определенного жанра с минимальной длиной 120000ms с помощью этого кода:SoundCloud API, игнорирующий фильтр длительности

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 

ли апи игнорирование «duration'-параметр или есть ошибка в фильтре внутри моего кода?

Ps .: Может быть связано с soundcloud search api ignoring duration filter?, если ошибка не находится внутри кода python.

ответ

0

После попытки решить эту проблему с некоторыми изменениями в мой код, я наконец-то нашел вопрос:

Пришло НЕ ошибка. Поскольку Soundcloud выпустили свои «Go +» - сервисы, некоторые официальные треки ограничивались предварительным просмотром 30 секунд. Кажется, что фильтр API сравнивает длительность полной дорожки, просто отправляя предварительную версию обратно клиенту (если вы не подписались на «Go +» и/или ваше приложение не вошло в систему).

Таким образом, единственный способ фильтрации по длительности является перебора всех полученных композиций:

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