Мне нужна помощь в использовании функции library.add_track в pylast (python last.fm оболочка api)

#python #api #last.fm

#python #API #last.fm

Вопрос:

Мне нужна помощь в отладке ошибки, полученной при попытке использовать функцию library.add_track в pylast. Я изучил код, но я не эксперт в python. Я просто пытаюсь использовать эту оболочку для добавления списка дорожек в мою библиотеку. Вы можете найти код pylast здесь:

http://code.google.com/p/pylast/source/browse/trunk/pylast.py

 import pylast

# You have to have your own unique two values for API_KEY and API_SECRET
# Obtain yours from http://www.last.fm/api/account for Last.fm
API_KEY = "your_key"
API_SECRET = "your_secret"

# In order to perform a write operation you need to authenticate yourself
username = "username"
password_hash = pylast.md5("password")

network = pylast.LastFMNetwork(api_key = API_KEY, api_secret =
    API_SECRET, username = username, password_hash = password_hash)

# This is the area causing trouble
library1 = pylast.Library(user = "Username", network = "LastFM")
track1 = network.get_track("Rob Dougan", "Clubbed To Death (Kurayamino Variation)")
library1.add_track(track1)
  

Ошибка, которую я получаю, это:

 Traceback (most recent call last):
  File "addTrack.py", line 18, in <module>
    library1.add_track(track1)
  File "/usr/local/lib/python2.6/dist-packages/pylast.py", line 1976, in add_track
    self._request("library.addTrack", False, params)
  File "/usr/local/lib/python2.6/dist-packages/pylast.py", line 970, in _request
    return _Request(self.network, method_name, params).execute(cacheable)
  File "/usr/local/lib/python2.6/dist-packages/pylast.py", line 715, in __init__
    (self.api_key, self.api_secret, self.session_key) = network._get_ws_auth()
AttributeError: 'str' object has no attribute '_get_ws_auth'
  

Я ценю помощь.

Обновить:

Для всех, у кого еще есть эта проблема с pylast, я опубликую ниже правильный пример добавления дорожки в вашу библиотеку. Я передавал неправильный сетевой параметр в pylast.Library().

После устранения вышеупомянутой проблемы код начал выдавать ошибку с отсутствующим параметром. Мне пришлось добавить следующую строку в pylast.py в функции add_track() библиотечного класса (строка 1970). Это необходимый параметр для Last.fm API.

 params['artist'] = track.get_artist().get_name()
  

Рабочий пример добавления дорожки в библиотеку пользователя:

 import pylast

# You have to have your own unique two values for API_KEY and API_SECRET
# Obtain yours from http://www.last.fm/api/account for Last.fm
API_KEY = "your_key"
API_SECRET = "your_secret"

# In order to perform a write operation you need to authenticate yourself
username = "username"
password_hash = pylast.md5("password")

network = pylast.LastFMNetwork(api_key = API_KEY, api_secret =
    API_SECRET, username = username, password_hash = password_hash)

# Get the User's library
library = pylast.Library(user = "username", network = network)

# Add a track
track = network.get_track("Rob Dougan", "Clubbed To Death (Kurayamino Variation)")
library.add_track(track)
  

Комментарии:

1. Похоже, что network = "LastFM" приведенный вами аргумент pylast.Library() может быть неправильным — и вместо этого должен быть какой-то network объект. Попробуйте изменить ее на network = network .

2. Просто чтобы немного больше поработать с martin, я думаю, что api ожидает сетевой экземпляр, который вы создали выше library1

3. Спасибо, ребята, это была очевидная проблема, которую я должен был заметить. Я начал работать на основе чужого примера кода.

Ответ №1:

[Публикую ОБНОВЛЕНИЕ в качестве ответа]


Для всех, у кого еще есть эта проблема с pylast, я опубликую ниже правильный пример добавления дорожки в вашу библиотеку. Я передавал неправильный сетевой параметр в pylast.Library().

После устранения вышеупомянутой проблемы код начал выдавать ошибку с отсутствующим параметром. Мне пришлось добавить следующую строку в pylast.py в функции add_track() библиотечного класса (строка 1970). Это необходимый параметр для Last.fm API.

 params['artist'] = track.get_artist().get_name()
  

Рабочий пример добавления дорожки в библиотеку пользователя:

 import pylast

# You have to have your own unique two values for API_KEY and API_SECRET
# Obtain yours from http://www.last.fm/api/account for Last.fm
API_KEY = "your_key"
API_SECRET = "your_secret"

# In order to perform a write operation you need to authenticate yourself
username = "username"
password_hash = pylast.md5("password")

network = pylast.LastFMNetwork(api_key = API_KEY, api_secret =
    API_SECRET, username = username, password_hash = password_hash)

# Get the User's library
library = pylast.Library(user = "username", network = network)

# Add a track
track = network.get_track("Rob Dougan", "Clubbed To Death (Kurayamino Variation)")
library.add_track(track)