llistochek / yandex-music-downloader

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

Проблемы с загрузкой исполнителей с большим количеством альбомов #16

Closed alibek2023 closed 1 year ago

alibek2023 commented 1 year ago

У некоторых исполнителей очень много альбомов, например у этого: https://music.yandex.ru/artist/84210 Загрузить треки такого исполнителя очень сложно, потому что скрипт вначале пытается считать информацию по всем альбомам, и только потом начинает загружать треки. Но если при считывании информации по альбомам произошла ошибка, то и скрипт прекращает работу; когда альбомов так много, то вероятность такого сбоя велика.

Может быть немного поменять логику работы скрипта? Пусть он загрузит данные по одному альбому, потом загрузит треки альбома, потом будет обрабатывать следующий альбом?

llistochek commented 1 year ago

Мне кажется лучше кэшировать информацию об альбомах (которая возвращается из функции get_full_album_info). Можно добавить флаг --enable-caching при использовании которого кэш будет сохранятся во временной папке. Кэш очищать через 8 часов.

alibek2023 commented 1 year ago

Вам виднее, как лучше делать. Кеширование было бы действительно удобным, только мне кажется, что более эффективным было бы кешировать не album_info, а содержимое result_tracks, чтобы можно было продолжить закачку после остановки скрипта.

Но если поменять логику прохода цикла по альбомам, то можно было бы обойтись без временных файлов. Фрагмент скрипта начиная с for track in result_tracks можно было бы выделить в функцию (подпрограмму), а в цикле прохода по альбомам просто вызывать ее.