MarshalX / yandex-music-api

Неофициальная Python библиотека для работы с API сервиса Яндекс.Музыка
https://yandex-music.rtfd.io
GNU Lesser General Public License v3.0
956 stars 81 forks source link

Баг при получении объекта класса Supplement #374

Closed EduardKononov closed 4 years ago

EduardKononov commented 4 years ago

Опишите ошибку При попытке получить Supplement выбрасывается exception, если от Яндекса не приходит поле provider_video_id по запросу {self.base_url}/tracks/{track_id}/supplement

Воспроизведение Шаги для воспроизведения бага:

  1. Создать объект класса Client
  2. client.track_supplement(48907854)
  3. Увидеть ошибку

Ожидаемое поведение При выбрасывании исключения во время выполнения VideoSupplement.de_list внутри Supplement.de_json, инициализировать Supplement.videos пустым объектом класса list.

Логи

Traceback (most recent call last):
  File "/home/deadad/PycharmProjects/yandex-music-downloader/download_all.py", line 26, in <module>
    main()
  File "/home/deadad/PycharmProjects/yandex-music-downloader/download_all.py", line 16, in main
    supplement = client.track_supplement(48907854)
  File "/home/deadad/.virtualenvs/yandex-music/lib/python3.8/site-packages/yandex_music/client.py", line 34, in wrapper
    result = method(*args, **kwargs)
  File "/home/deadad/.virtualenvs/yandex-music/lib/python3.8/site-packages/yandex_music/client.py", line 511, in track_supplement
    return Supplement.de_json(result, self)
  File "/home/deadad/.virtualenvs/yandex-music/lib/python3.8/site-packages/yandex_music/supplement/supplement.py", line 62, in de_json
    data['videos'] = VideoSupplement.de_list(data.get('videos'), client)
  File "/home/deadad/.virtualenvs/yandex-music/lib/python3.8/site-packages/yandex_music/supplement/video_supplement.py", line 92, in de_list
    videos.append(cls.de_json(video, client))
  File "/home/deadad/.virtualenvs/yandex-music/lib/python3.8/site-packages/yandex_music/supplement/video_supplement.py", line 74, in de_json
    return cls(client=client, **data)
TypeError: __init__() missing 1 required positional argument: 'provider_video_id'
EduardKononov commented 4 years ago

Исправлено в https://github.com/MarshalX/yandex-music-api/commit/70c3781b410f4721fbbd7ea4356a52f203d46261.