Soundcloud API не возвращает все треки из плейлиста через Python

Недавно я начал использовать 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.

Любая помощь приветствуется.


person Michael    schedule 20.04.2016    source источник
comment
Может ли это быть из-за какой-либо пагинации?   -  person sammygadd    schedule 21.04.2016
comment
Я так не думаю, так как второй и третий отсутствуют. Это также происходит с другими списками воспроизведения для треков, которые находятся в середине списка. Вот два из них: soundcloud.com/theprototypes/bbc-radio-1xtra- прототипы soundcloud.com/drumsoundandbasslinesmith /   -  person Michael    schedule 21.04.2016


Ответы (1)


Это не решить, к сожалению. Уже много тем по этому вопросу. Дело в том, что API плейлиста возвращает все треки в плейлисте, а API треков возвращает только незащищенные треки. Поскольку вы уже выяснили, какие 2 трека отсутствуют, я проверил это, и они оба возвращают 403, когда вы пытаетесь использовать API трека. Таким образом, эти 2 трека каким-то образом недоступны через API треков.

Еще немного фона:

Дорожки в плейлисте SoundCloud пусты

SoundCloud ответил по электронной почте, что они предоставили правообладателям возможность отключить весь доступ API к трекам по умолчанию, возвращая эту ошибку 403 по запросу. Они также сказали, что понятно, что это запутанная функция, и что они надеются сделать ее более понятной.

И @nickf, технический руководитель soundcloud, говорит:

Да, есть много причин, по которым трек может не отображаться. Он может быть удален правообладателем трека, сделан закрытым или удаленным пользователем, или (и это сложно) заблокирован на определенных территориях. Вычисление политик всех треков пользователя каждый раз, когда он загружается, не совсем осуществимо, поэтому иногда это число будет неточным (в зависимости от того, кто спрашивает и где они находятся). — никф

person DelGurth    schedule 22.04.2016