llistochek / yandex-music-downloader

Загрузчик музыки с сервиса Яндекс.Музыка
MIT License
163 stars 20 forks source link

KeyError: 'available' при попытке загрузить "Мне нравится". #48

Closed voronind-com closed 2 months ago

voronind-com commented 2 months ago

Всё грузит ок если укажу, например, альбом. Но при попытке грузить мои понравившиеся, получаю воть:

Jun 27 03:21:34 home systemd[162177]: Starting Yandex Music Download....
Jun 27 03:21:39 home bash[424139]: Traceback (most recent call last):
Jun 27 03:21:39 home bash[424139]:   File "/nix/store/32mbbfvmnixycz3lr2s7abq3m8nx43sv-python3.11-yandex-music-downloader-1.0.0/bin/.yandex-music-downloader-wrapped", line 9, in <module>
Jun 27 03:21:39 home bash[424139]:     sys.exit(main())
Jun 27 03:21:39 home bash[424139]:              ^^^^^^
Jun 27 03:21:39 home bash[424139]:   File "/nix/store/32mbbfvmnixycz3lr2s7abq3m8nx43sv-python3.11-yandex-music-downloader-1.0.0/lib/python3.11/site-packages/ymd/cli.py", line 235, in main
Jun 27 03:21:39 home bash[424139]:     result_tracks = api.get_playlist(session, args.playlist_id)
Jun 27 03:21:39 home bash[424139]:                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jun 27 03:21:39 home bash[424139]:   File "/nix/store/32mbbfvmnixycz3lr2s7abq3m8nx43sv-python3.11-yandex-music-downloader-1.0.0/lib/python3.11/site-packages/ymd/ym_api/api.py", line 53, in get_playlist
Jun 27 03:21:39 home bash[424139]:     tracks = [t for t in tracks if t is not None]
Jun 27 03:21:39 home bash[424139]:              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jun 27 03:21:39 home bash[424139]:   File "/nix/store/32mbbfvmnixycz3lr2s7abq3m8nx43sv-python3.11-yandex-music-downloader-1.0.0/lib/python3.11/site-packages/ymd/ym_api/api.py", line 53, in <listcomp>
Jun 27 03:21:39 home bash[424139]:     tracks = [t for t in tracks if t is not None]
Jun 27 03:21:39 home bash[424139]:              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jun 27 03:21:39 home bash[424139]:   File "/nix/store/32mbbfvmnixycz3lr2s7abq3m8nx43sv-python3.11-yandex-music-downloader-1.0.0/lib/python3.11/site-packages/ymd/ym_api/models.py", line 95, in from_json
Jun 27 03:21:39 home bash[424139]:     if not data["available"]:
Jun 27 03:21:39 home bash[424139]:            ~~~~^^^^^^^^^^^^^
Jun 27 03:21:39 home bash[424139]: KeyError: 'available'
Jun 27 03:21:39 home systemd[162177]: Finished Yandex Music Download..

Версия с мастера последняя.

${package}/bin/yandex-music-downloader --browser "firefox" --hq --add-lyrics --embed-cover --skip-existing --stick-to-artist --only-music --path-pattern "${pattern}" --url https://music.yandex.ru/users/cakee.ru/playlists/3
voronind-com commented 2 months ago

Запуск с --debug: debug.txt

Ссылка на плейлист.

voronind-com commented 2 months ago

Попробую подготовить PR если мой фикс сработает сейчас.

voronind-com commented 2 months ago

Да, пофиксил. Бегу делать PR.

voronind-com commented 2 months ago

В процессе выгрузки избранного рандомно нарвался ещё на это:

Jun 27 15:26:24 home bash[1294214]: Загружается Robert DeLong/2018_See You In The Future/1_Favorite Color Is Blue.mp3
Jun 27 15:26:24 home bash[1294214]: Traceback (most recent call last):
Jun 27 15:26:24 home bash[1294214]:   File "/nix/store/nrcy75bwhk2b2j8b6qrpy02j7nk4qgd2-python3.11-yandex-music-downloader-1.0.0/bin/.yandex-music-downloader-wrapped", line 9, in <module>
Jun 27 15:26:24 home bash[1294214]:     sys.exit(main())
Jun 27 15:26:24 home bash[1294214]:              ^^^^^^
Jun 27 15:26:24 home bash[1294214]:   File "/nix/store/nrcy75bwhk2b2j8b6qrpy02j7nk4qgd2-python3.11-yandex-music-downloader-1.0.0/lib/python3.11/site-packages/ymd/cli.py", line 258, in main
Jun 27 15:26:24 home bash[1294214]:     core.download_track(
Jun 27 15:26:24 home bash[1294214]:   File "/nix/store/nrcy75bwhk2b2j8b6qrpy02j7nk4qgd2-python3.11-yandex-music-downloader-1.0.0/lib/python3.11/site-packages/ymd/core.py", line 111, in download_track
Jun 27 15:26:24 home bash[1294214]:     full_track = api.get_full_track_info(session, track.id)
Jun 27 15:26:24 home bash[1294214]:                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jun 27 15:26:24 home bash[1294214]:   File "/nix/store/nrcy75bwhk2b2j8b6qrpy02j7nk4qgd2-python3.11-yandex-music-downloader-1.0.0/lib/python3.11/site-packages/ymd/ym_api/api.py", line 33, in get_full_track_info
Jun 27 15:26:24 home bash[1294214]:     return FullTrackInfo.from_json(resp.json())
Jun 27 15:26:24 home bash[1294214]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jun 27 15:26:24 home bash[1294214]:   File "/nix/store/nrcy75bwhk2b2j8b6qrpy02j7nk4qgd2-python3.11-yandex-music-downloader-1.0.0/lib/python3.11/site-packages/ymd/ym_api/models.py", line 147, in from_json
Jun 27 15:26:24 home bash[1294214]:     return cls(**base.__dict__, lyrics=lyrics)
Jun 27 15:26:24 home bash[1294214]:                  ^^^^^^^^^^^^^
Jun 27 15:26:24 home bash[1294214]: AttributeError: 'NoneType' object has no attribute '__dict__'. Did you mean: '__dir__'?
Jun 27 15:26:24 home systemd[162177]: Finished Yandex Music Download..

Перезапуск, вроде, пока помог. Гружу дальше.

Edit: периодически всплывает тоже. Я б вообще обернул загрузку каждого трека в try/except и выводил предупреждение :0) У меня большой плейлист на 3к песен, там наверняка куча всего странного может происходить при загрузке.

voronind-com commented 2 months ago

Попробую подготовить отдельный PR с более радикальными изменениями на случай отсутствия каких-то параметров со стороны бекенда.

voronind-com commented 2 months ago

Более широкий PR: https://github.com/llistochek/yandex-music-downloader/pull/50

llistochek commented 2 months ago

Исправлено в 08ea384869cbc31efb1e78b831e2356882219951. Если конкретно эта проблема повторится - откройте данную issue заново. Если обнаружите другие баги - откройте новую issue. Спасибо.

voronind-com commented 2 months ago

Спасибо за фикс. Иду тестировать.

voronind-com commented 2 months ago

Вроде пока работает. Только нет никакой инфы об ошибках. Если у кого-то в будущем не будет грузиться половина альбома, то такое отлаживать будет трудновато, если ошибка со стороны приложения.

В любом случае спасибо.