2015-04-12 77 views
0

我有一个pyspotify的问题。我试图寻找一个艺术家的名字,得到他们的顶级曲目列表,然后播放其中的一个。这是我的代码段:Pyspotify - 周期性“曲目不能播放错误”

search_string = "artist:"+artist_to_find 
    result = session.search(search_string) 
      result.load() 
    print result.track_total 
    browser = result.artists[0].browse() 
    browser.load() 
    print browser.tophit_tracks 
    for track in browser.tophit_tracks: 
    print track.name, track 
      toptracks = browser.tophit_tracks 
    print "error check" 
    if toptracks!=-1: 
     print "------------------" 
     tracktoplay=choice(toptracks) 
     rand = randint(0,10) 
     print "random track number = %s" %rand 
     tracktoplay = browser.tophit_tracks[rand] 
     print tracktoplay.link 
     print tracktoplay.name 
     print "------------------" 
     session.player.load(tracktoplay) 
     session.player.play() 

我经常在没有以前的轨道完成的情况下调用此代码。 Perodically(每隔几首曲目)我得到以下错误:

random track number = 7 
spotify:track:6vQN2a9QSgWcm74KEZYfDL 
Take A Chance On Me 
------------------ 
Traceback (most recent call last): 
    File "../jj.py", line 146, in <module> 
    app.run() 
    File "../jj.py", line 116, in run 
    conversation.handleForever() 
    File "/home/mh/Projects/jjo/client/conversation.py", line 44, in handleForever 
    listen(self) 
    File "/home/mh/Projects/jjo/client/new_play.py", line 110, in listen 
    play(self,response) 
    File "/home/mh/Projects/jjo/client/new_play.py", line 194, in play 
    session.player.load(tracktoplay) 
    File "/usr/local/lib/python2.7/dist-packages/spotify/player.py", line 45, in load 
    self._session._sp_session, track._sp_track)) 
    File "/usr/local/lib/python2.7/dist-packages/spotify/error.py", line 30, in maybe_raise 
    raise LibError(error_type) 
spotify.error.LibError: The track cannot be played 

任何人都可以建议对我做错了吗?

感谢

+0

我发现我从libspotify“sp_session_player_play”函数中收到错误SP_ERROR_TRACK_NOT_PLAYABLE。我篡改了代码(spotify库中的player.py报告卸载而不是错误),以便在我的代码失败时重新尝试,但是谁能告诉我为什么某个曲目可能无法播放?当我拿着链接并在我的浏览器中播放时,链接是有效的,并且曲目播放没有问题。任何帮助将不胜感激! –

回答

0

我没有上pyspotify以经验,但我看它是出于好奇。

如果我是你,我会检查PlayerState加载之前我调用play()

希望它能帮助。

+0

感谢您的意见。我尝试添加一个正在加载的曲目的检查,但没有帮助。 'while True: \t if session.player.state =='loaded': \t \t break' –