TypeError: Unicode à contraindre: Chaîne de besoin ou de tampon, a trouvé utilisateur
-
26-09-2019 - |
Question
je dois ramper last.fm pour les utilisateurs (exercice universitaire). Je suis nouveau à python et rencontrer l'erreur suivante:
Traceback (most recent call last):
File "crawler.py", line 23, in <module>
for f in user_.get_friends(limit='200'):
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pylast.py", line 2717, in get_friends
for node in _collect_nodes(limit, self, "user.getFriends", False):
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pylast.py", line 3409, in _collect_nodes
doc = sender._request(method_name, cacheable, params)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pylast.py", line 969, in _request
return _Request(self.network, method_name, params).execute(cacheable)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pylast.py", line 721, in __init__
self.sign_it()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pylast.py", line 727, in sign_it
self.params['api_sig'] = self._get_signature()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pylast.py", line 740, in _get_signature
string += self.params[name]
TypeError: coercing to Unicode: need string or buffer, User found
i utiliser le pylast lib pour l'analyse. ce que je veux faire:
Je veux obtenir un utilisateur amis et les amis des amis des utilisateurs. l'erreur se produit, lorsque i ai une boucle dans une autre boucle. voici le code:
network = pylast.get_lastfm_network(api_key = API_KEY, api_secret = API_SECRET, username = username, password_hash = password_hash)
user = network.get_user("vidarnelson")
friends = user.get_friends(limit='200')
i = 1
for friend in friends:
user_ = network.get_user(friend)
print '#%d %s' % (i, friend)
i = i + 1
for f in user_.get_friends(limit='200'):
print f
un conseil?
Merci d'avance. ce qui a trait!
La solution
Il ressemble get_friends
retourne une liste d'objets User
, de sorte que vous n'avez pas besoin d'appeler get_user
sur ses entrées. Il suffit d'utiliser:
for friend in friends:
for f in friend.get_friends(limit='200'):
...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow