2016-04-20 81 views
4

我最近開始使用Soundcloud API開發一個簡單的應用程序,它將數據保存在播放列表中。但是,在我看來,並非所有播放列表中的曲目都正在返回。Soundcloud API不能通過Python返回播放列表中的所有曲目

我用下面的代碼:

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

任何幫助將非常感激。

+0

難道這可能是由於任何分頁? – sammygadd

+0

我不這麼認爲,因爲第二個和第三個失蹤。對於位於曲目列表中間的曲目,其他播放列表也會發生這種情況。這些是其中兩個: https://soundcloud.com/theprototypes/bbc-radio-1xtra-the-prototypes https://soundcloud.com/drumsoundandbasslinesmith/drumsound-bassline-smith-spring-heel-jack-friction -獨家 – Michael

回答

5

不幸的是,這不能解決。關於這個問題的很多話題已經。問題是播放列表API會返回播放列表中的所有曲目,但曲目API只會返回未受保護的曲目。由於您已經計算出哪兩條曲目缺少我驗證的內容,因此當您嘗試使用曲目API時,它們都會返回403。因此,這2首歌曲無法通過track API訪問。

一些更多的背景:

SoundCloud Playlist tracks is empty

的SoundCloud通過電子郵件發送回話說,他們已經推出了權利人可以選擇禁用默認情況下軌道中的所有API的訪問,請求返回時,這403錯誤。他們還表示,這是一個令人困惑的功能,這是可以理解的,他們希望更清楚。

而且@nickf the tech lead of soundcloud says:

是的 - 有很多原因的軌道可能不會顯示給你。它可能會被該軌道的權利人取消,被上傳者私下或刪除,或者(並且這是棘手的)在某些地區被阻止。計算用戶每次抓取的所有曲目的策略都不太可行,因此有時候這個數字會不準確(取決於誰在問什麼以及他們在哪裏)。 - nickf 4月14日22:37

相關問題