使用PySpotify加载Spotify专辑元数据

时间:2013-02-14 10:28:19

标签: python python-2.7 spotify libspotify

我无法想象如何使用pyspotify加载专辑元数据。无论我尝试过什么,专辑浏览器仍在加载。

这是我的班级:

当我们使用main函数中的session.connect()成功登录时,回调会调用

logged_in。

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

你对我会忘记的事情有所了解吗?

1 个答案:

答案 0 :(得分:0)

你的问题可能是这样的:

while not browser.is_loaded():

libSpotify(以及扩展名为PySpotify)在您初始化它的线程中运行。由于您正在进行紧密循环,因此实际上阻止了libSpotify执行任何操作的能力,并且浏览请求最终会超时。

而不是进行紧密循环,依赖回调来在加载东西时得到通知。