2016-04-20 4 views
4

Ich habe vor kurzem begonnen, die Soundcloud API zu verwenden, um eine einfache App zu entwickeln, die Daten in Wiedergabelisten speichert. Es scheint mir jedoch, dass nicht alle Titel aus den Playlists zurückgegeben werden.Soundcloud API gibt nicht alle Titel von der Wiedergabeliste durch Python zurück

Ich verwende den folgenden Code:

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) 

es auf diese Playliste verwenden: https://soundcloud.com/michiel-tammeling/sets/icecubes die 13 Titel enthält, aber der Code gibt nur 11.

Jede Hilfe sehr geschätzt werden würde.

+0

Könnte es möglicherweise aufgrund einer Seitennummerierung sein? – sammygadd

+0

Ich glaube nicht, da die zweite und dritte fehlen. Es passiert auch mit anderen Wiedergabelisten für Titel, die sich in der Mitte der Titelliste befinden. Dies sind zwei von ihnen: https://soundcloud.com/theprototypes/bbc-radio-1xtra-the-prototypes https://soundcloud.com/drumsoundandbasslinesmith/drumsound-bassline-smith-spring-heel-jack-friction -exklusiv – Michael

Antwort

5

Dies kann leider nicht gelöst werden. Viele Themen zu diesem Thema bereits. Die Playlist-API gibt alle Tracks in der Playlist zurück, die Track-API gibt jedoch nur Tracks zurück, die nicht geschützt sind. Da du bereits herausgefunden hast, welche 2 Tracks fehlten, habe ich das verifiziert und beide geben 403 zurück, wenn du versuchst, die Track-API zu verwenden. Also sind diese 2 Tracks irgendwie nicht zugänglich mit der Track-API.

Einige mehr Hintergrund:

SoundCloud Playlist tracks is empty

Soundcloud per E-Mail zurück sagen, dass sie eine Option für die Rechteinhaber eingeführt haben alle API-Zugriff auf Spuren standardmäßig zu deaktivieren, um dieses 403 Fehler zurückgegeben, wenn angefordert. Sie sagten auch, dass es verständlich ist, dass dies ein verwirrendes Merkmal ist und dass sie hoffen, es klarer zu machen.

Und @nickf the tech lead of soundcloud says:

Yep - es gibt viele Gründe, die eine Spur nicht zu Ihnen auftauchen könnte. Es kann vom Rechteinhaber der Strecke genommen werden, privat gemacht oder vom Uploader gelöscht werden, oder (und das ist der heikle) in bestimmten Gebieten blockiert. Das Berechnen der Richtlinien aller Spuren eines Benutzers bei jedem Abruf ist nicht ganz durchführbar, daher ist diese Zahl manchmal ungenau (je nachdem, wer fragt und wo sie sich befinden). - nickf 14. April um 22:37 Uhr