2013-02-14 2 views
1

pyspotify로 앨범 메타 데이터를로드하는 방법을 알 수 없습니다. 내가 시도한 것이 든간에, albumbrowser는 여전히로드 중입니다. 우리가 성공적으로 주요 기능에 session.connect()를 사용하여 로그인 할 때Spotify 앨범 메타 데이터를 PySpotify로로드

logged_in이 콜백에 의해 호출됩니다

여기 내 클래스입니다.

if __name__ == '__main__': 
     import optparse 
     op = optparse.OptionParser(version="%prog 0.1") 
     op.add_option("-u", "--username", help="Spotify username") 
     op.add_option("-p", "--password", help="Spotify password") 
     op.add_option("-v", "--verbose", help="Show debug information", 
       dest="verbose", action="store_true") 
     op.add_option("-b", "--album", help="Spotify Album ID") 
     (options, args) = op.parse_args() 
     if options.verbose: 
       logging.basicConfig(level=logging.DEBUG) 
     sessionM = sessionManager(options.username, options.password, True) 
     sessionM.connect() 

당신은 내가 잊지 무언가에 대한 아이디어를 가지고 있습니까 : 여기

class sessionManager(SpotifySessionManager): 
    appkey_file = os.path.join(os.path.dirname(__file__), 'spotify_appkey.key') 

    def __init__(self, *a, **kw): 
      SpotifySessionManager.__init__(self, *a, **kw) 


    def logged_in(self, session, error): 
      link=Link.from_string("spotify:album:4DR0GWo7w2GJyQnFVa4jAB") 
      line="" 
      if link.type() == link.LINK_ALBUM: 
        browser = AlbumBrowser(link.as_album()) 
        while not browser.is_loaded(): 
          line+="." 
          time.sleep(1) 
          sys.stdout.write("\r%s" % line) 
          sys.stdout.flush() 
        for track in browser: 
          print track.name() 
      if link.type() == link.LINK_ARTIST: 
        browser = ArtistBrowser(link.as_artist()) 
        while not browser.is_loaded(): 
          line+="." 
          time.sleep(1) 
          sys.stdout.write("\r%s" % line) 
          sys.stdout.flush() 
        for album in browser: 
          print album.name() 

는 내 클래스를 호출하는 방법입니다?

+0

이 코드가 실행되는 위치에 대해 더 많은 정보를 제공 할 수 있습니까? 무엇이라고 부릅니까? Spotify의 콜백에 의해 호출됩니까? – Weeble

답변

0

귀하의 문제는 가능성이 있습니다 :

while not browser.is_loaded(): 

libSpotify (확장에 의해, 그리고 PySpotify)은 그것을 초기화 스레드에서 실행됩니다. 빡빡한 반복을하고 있기 때문에, 실제로 libSpotify의 기능을 차단하고 있으며, 브라우즈 요청은 결국 시간 초과 될 것입니다.

엄격한 루프를 수행하는 대신, 물건이로드되었을 때 알림을받을 콜백에 의존하십시오.

관련 문제