Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Не работает Client.search() #387

Closed
thedilletante opened this issue Dec 22, 2020 · 3 comments
Closed

Не работает Client.search() #387

thedilletante opened this issue Dec 22, 2020 · 3 comments
Assignees
Labels
bug Что-то не работает

Comments

@thedilletante
Copy link

thedilletante commented Dec 22, 2020

Опишите ошибку
При попытке вызвать метод Client.search() вылетает исключение типа AttributeError

Воспроизведение

  • создать объект типа Client
  • вызвать метод search с произвольным содержимым

Ожидаемое поведение
Вызов метода должен возвращять структуру Search

Логи

Python 3.8.2 (default, Nov  4 2020, 21:23:28)
[Clang 12.0.0 (clang-1200.0.32.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from yandex_music import Client
>>> client = Client.from_token('====')
Found unknown fields received from API! Please copy warn message and send to https://bit.ly/3dsFxyH (github issue), thank you!
Type: <class 'yandex_music.account.product.Product'>; kwargs: {'trial_period_duration': 'P3M', 'plus': True}
Found unknown fields received from API! Please copy warn message and send to https://bit.ly/3dsFxyH (github issue), thank you!
Type: <class 'yandex_music.account.subscription.Subscription'>; kwargs: {'non_auto_renewable_remainder': {'days': 0}}
Found unknown fields received from API! Please copy warn message and send to https://bit.ly/3dsFxyH (github issue), thank you!
Type: <class 'yandex_music.account.status.Status'>; kwargs: {'advertisement': 'Оформите постоянную подписку – первый месяц бесплатно!'}
>>> client.search('whatever')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/client.py", line 34, in wrapper
    result = method(*args, **kwargs)
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/client.py", line 667, in search
    return Search.de_json(result, self)
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/search/search.py", line 87, in de_json
    data['best'] = Best.de_json(data.get('best'), client)
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/search/best.py", line 68, in de_json
    data['result'] = de_json_result.get(data.get('type_'))(data.get('result'), client)
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/artist/artist.py", line 195, in de_json
    data['popular_tracks'] = Track.de_list(data.get('popular_tracks'), client)
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/track/track.py", line 261, in de_list
    tracks.append(cls.de_json(track, client))
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/track/track.py", line 238, in de_json
    data['albums'] = Album.de_list(data.get('albums'), client)
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/album/album.py", line 220, in de_list
    albums.append(cls.de_json(album, client))
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/album/album.py", line 197, in de_json
    data['labels'] = Label.de_list(data.get('labels'), client)
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/album/label.py", line 69, in de_list
    labels.append(cls.de_json(label, client))
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/album/label.py", line 49, in de_json
    data = super(Label, cls).de_json(data, client)
  File "/Users/mikhail.pokhikhilov/proj/kodi.plugin.yandex-music/.venv/lib/python3.8/site-packages/yandex_music/base.py", line 57, in de_json
    data = data.copy()
AttributeError: 'str' object has no attribute 'copy'

Дополнительная информация

yandex-music==0.1.2

Похоже, что поменялся формал структуры 'label', который приходят в ответе на запрос. Раньше, видимо, ожидался следующий формат:

{
  "id": int,
  "name": str
}

Сейчас приходит просто строка. Например

'labels': ['NoiseArt']
@thedilletante thedilletante added the bug Что-то не работает label Dec 22, 2020
@MarshalX
Copy link
Owner

Спасибо, фикс лежит в dev ветке: 1c336e7

@thedilletante
Copy link
Author

Спасибо!
А не подскажете, когда войдет в релиз? Хочется из pip доставать версию)

@MarshalX
Copy link
Owner

Спасибо!
А не подскажете, когда войдет в релиз? Хочется из pip доставать версию)

Не подскажу, но вот как поставить через pip с dev ветки:

pip3 install git+https://github.com/MarshalX/yandex-music-api@development

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Что-то не работает
Projects
None yet
Development

No branches or pull requests

2 participants