1

pyspotify でアルバムのメタデータを読み込む方法がわかりません。何を試しても、albumbrowser はまだロード中です。

これが私のクラスです:

Logged_in は、main 関数で session.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()

私のクラスが呼び出される方法は次のとおりです。

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()

私が忘れてしまう何かについてのアイデアはありますか?

4

1 に答える 1

0

あなたの問題はおそらくこれです:

while not browser.is_loaded():

libSpotify (および拡張により PySpotify) は、初期化したスレッドで実行されます。タイトなループを実行しているため、実際には libSpotify の機能をブロックしており、ブラウズ リクエストは最終的にタイムアウトになります。

タイトなループを行う代わりに、コールバックに依存して、ロードが完了したときに通知を受けます。

于 2013-02-17T18:32:19.000 に答える