llistochek / yandex-music-downloader

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

Не скачиваются плейлисты #8

Closed PanForPancakes closed 1 year ago

PanForPancakes commented 1 year ago

Трек из примера использования скачивается, плейлисты нет. OS: Android 12 с Termux (без рута)

~ $ python --version
Python 3.11.1
~ $ python yandex-music-downloader/main.py --session-id "Yvxxxxxxxxxxxxxxxxxxxx" --url "https://music.yandex.ru/users/xxxxxxxxxxxx/playlists/1003"
Traceback (most recent call last):
  File "/data/data/com.termux/files/home/yandex-music-downloader/main.py", line 386, in <module>
    result_tracks = get_playlist(session, args.playlist_id)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/data/com.termux/files/home/yandex-music-downloader/main.py", line 226, in get_playlist
    raw_tracks = resp.json()['playlist'].get('tracks', [])
                 ~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'playlist'
~ $
llistochek commented 1 year ago

Попробуйте скачать другие плейлисты (например автоматически сгенерированные Яндекс музыкой). Проблема сохраняется? Также было бы неплохо увидеть вывод программы с флагом --log-level DEBUG.

PanForPancakes commented 1 year ago

Если кратко: проблема сохраняется с плейлистом от music-blog (Яндекс Музыка)

Попробовал скачать вот этот плейлист: https://music.yandex.ru/users/music-blog/playlists/1475

~ $ python yandex-music-downloader/main.py --session-id "Yvxxxxxxxxxxxxxxxxxxxx" --url "https://music.yandex.ru/users/music-blog/playlists/1475"
16:27:08 |INFO| Треков: 84
16:27:14 |INFO| Загружается ONEIL/Shot/1 - Shot.mp3
16:27:27 |INFO| Загружается Imanbek/Gone (Da Da Da)/1 - Gone (Da Da Da).mp3
16:27:40 |INFO| Загружается Butch U/Combo/1 - Combo.mp3
^C

Но решил проверить то что я скачиваю треки полностью, а не первые 30 секунд. ...И оказалось что скачиваю первые 30 секунд. Поправил токен по инструкции и попробовал снова.

python yandex-music-downloader/main.py --session-id "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" --url "https://music.yandex.ru/users/music-blog/playlists/1475"
Traceback (most recent call last):
  File "/data/data/com.termux/files/home/yandex-music-downloader/main.py", line 386, in <module>
    result_tracks = get_playlist(session, args.playlist_id)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/data/com.termux/files/home/yandex-music-downloader/main.py", line 228, in get_playlist
    tracks = [t for t in tracks if t is not None]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/data/com.termux/files/home/yandex-music-downloader/main.py", line 228, in <listcomp>
    tracks = [t for t in tracks if t is not None]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/data/com.termux/files/home/yandex-music-downloader/main.py", line 100, in from_json
    track_position = album_json['trackPosition']
                     ~~~~~~~~~~^^^^^^^^^^^^^^^^^
KeyError: 'trackPosition'
~ $

(Плейлист выше очень большой, если использовать --log-level DEBUG много json-данных, после их вывода вылетает Traceback)

PanForPancakes commented 1 year ago

Создал плейлист с тремя треками и попробовал его скачать с --log-level DEBUG

17:18:08 |DEBUG| Starting new HTTPS connection (1): music.yandex.ru:443
17:18:08 |DEBUG| https://music.yandex.ru:443 "GET /handlers/playlist.jsx?owner=username2023&kinds=1017&lang=ru HTTP/1.1" 400 5611

И тут я обратил внимание на значение owner Мое имя пользователя выглядит примерно вот так: primer.username2023 Первая часть имени пользователя была обрезана и в значении owner вышло username2023

Вполне возможно что проблема связана с этим.

PanForPancakes commented 1 year ago

Попробовал скачать с другим аккаунтом плейлист от Яндекса (https://music.yandex.ru/users/music-blog/playlists/1475) Проблема осталась, но то что я расписал выше вполне может быть ещё одним (отдельным) багом мешающим скачать плейлист.

llistochek commented 1 year ago

Исправил проблему со скачиванием ваших плейлистов в 68e5457fd3a2aabff9140584e714bbe77bbefd30. Для того чтобы помочь вам с проблемой скачивания плейлистов от Яндекса, мне нужны json-данные из отладочного вывода

PanForPancakes commented 1 year ago

Для того чтобы помочь вам с проблемой скачивания плейлистов от Яндекса, мне нужны json-данные из отладочного вывода

...И этих данных больше нет, или есть, а нет, опять пропали... Обновил программу через git pull, смог начать скачивание своего плейлиста "Мне нравится", но при замене ссылки на https://music.yandex.ru/users/music-blog/playlists/1475 я не получаю какого-то постоянного результата, вывод программы меняется при запуске одной и той же команды. (команда на 30 строке лога дала json, идентичная команда на 78 уже нет)

Вот лог терминала: terminal_log.txt

llistochek commented 1 year ago

Исправил, пробуйте

PanForPancakes commented 1 year ago

Проверил, всё работает прекрасно! Спасибо!