我无法想象如何使用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()
你对我会忘记的事情有所了解吗?
答案 0 :(得分:0)
你的问题可能是这样的:
while not browser.is_loaded():
libSpotify(以及扩展名为PySpotify)在您初始化它的线程中运行。由于您正在进行紧密循环,因此实际上阻止了libSpotify执行任何操作的能力,并且浏览请求最终会超时。
而不是进行紧密循环,依赖回调来在加载东西时得到通知。