Closed AlexPi86 closed 1 year ago
Попробуйте брать аргументы --session-id
и --url
в двойные кавычки, а не в одинарные.
Т.е.
python main.py --session-id "QDpoUP5X4bL9Lrxyk8neDxxxxxx" --hq --add-lyrics --url "https://music.yandex.ru/artist/792433"
Отлично! Теперь при скачивании трека https://music.yandex.ru/album/11644078/track/6705392
Получаю ошибку пути
Треков: 1
Traceback (most recent call last):
File "e:\SOFT\PortableGit\yandex-music-downloader\main.py", line 324, in
Если добавляю опцию --dir "e:\", то ошибка
Треков: 1
Traceback (most recent call last):
File "e:\SOFT\PortableGit\yandex-music-downloader\main.py", line 324, in
В первом случае делайте аргумент --dir
равным просто сборник
, без .\
в начале.
Во втором случае указывайте путь к диску как "E:\\"
На данный момент в скрипте работа с файловыми путями реализована не очень правильно, на линуксе все работает, на винде есть некоторые проблемы. Исправлю это
Команда
python main.py --session-id "3.........xnqSvo" --hq --add-lyrics --url "https://music.yandex.ru/album/11644078/track/6705392" --dir "E:\\"
Ошибка
Треков: 1
Traceback (most recent call last):
File "e:\SOFT\PortableGit\yandex-music-downloader\main.py", line 324, in <module>
os.makedirs(save_dir)
File "<frozen os>", line 225, in makedirs
NotADirectoryError: [WinError 267] Неверно задано имя папки: 'E:\\сборник/PAY CLOSE ATTENTION: XL Recordings'
Проблема в том что в названии сборника PAY CLOSE ATTENTION: XL Recordings
используется символ :
, который нельзя использовать для имен файлов на файловой системе NTFS. Попробуйте загрузить другой альбом/трек.
Да, вот такой вариант работает:
python main.py --session-id "3.........8neDxnqSvo" --hq --add-lyrics --url "https://music.yandex.ru/album/294912" --dir "E:\\"
Но что заметил, теги скачиваются не совсем корректно. Скачал первый трек с помощью мобильного приложения murglar_2.0.31_257_beta.apk (с 4pda) Она скачивает трек с обложкой внутри, плюс к этому альбом указан правильнее (Nevermind (Super Deluxe Edition), а не Nevermind), заполнен Жанр, номер выставлен как 1/22, а не 01, Номер диска 1/4, а не 01. В программе Mp3tag показывает Тег ID3v2.4 (IDv1 ID3v2.4), а не ID3v2.4 (ID3v2.4).
Информация о версии альбома (Super Deluxe Edition) действительно не загружается, исправлю это. Встраивание обложки в сам .mp3 файл также будет реализовано. А вот формат записи номера трека/диска - это не ошибка, у меня все плееры корректно распознают такую запись. Поддержка жанров в тегах возможно будет добавлена, но имеет для меня низкий приоритет, т.к. жанрами при выборе музыки я не пользуюсь.
Предлагаю сделать "по фэншую".
Добавить опцию(и), чтобы тег был максимально полным и корректным.
типа --id3v1,--id3v2
В такос случае любой человек сможет скачать с нужными ему тегами.
Поэкспериментировал в Mp3tag
Получилось, что тег ID3v2.4 - это то же самое, что и (ID3v1 ID3v2.4)
Соответственно получаются 2 варианта: ID3v1 и ID3v2
Вот сравнение:
ID3v1
ID3v2
Если опция не указана, то сохранять ID3v2
Не вижу смысла делать возможность сохранения тегов в ID3v1. Версия ID3v2.4 была выпущена в 2000 году, любое устройство/программа сейчас ее поддерживает и корректно распознает.
Заменил кавычки в примерах (c294b43800a403a8bf5e598f3091e1970763e514)
Улучшил обработку путей (a58888f9c710ebea050e0733ebcf35c44b24e47e)
Добавил флаг --strict-path
который очищает путь файла от недопустимых символов (88fc6be1a7e8a68a5689d76c401e8b617e6d5b57)
Версия альбома теперь скачивается при использовании флага --add-version
(422b0891f6656a7d25f2382297b75572cb403821)
Добавил встраивание обложки в .mp3 файл при использовании флага --embed-cover
(53373e41a332f5134ba78d609f6505b5b7c68f0a)
Спасибо за issue.
Заменил кавычки в примерах (c294b43) Улучшил обработку путей (a58888f) Добавил флаг
--strict-path
который очищает путь файла от недопустимых символов (88fc6be) Версия альбома теперь скачивается при использовании флага--add-version
(422b089) Добавил встраивание обложки в .mp3 файл при использовании флага--embed-cover
(53373e4)Спасибо за issue.
Решил попробовать использовать новую версию. Указал опции --strict-path --dir "E:\" В итоге программ стала скачивать альбом в корневую папку, где лежит файл main.py
Исправлено в 2103d0b053a3ced3d3450ab22a418ff47988e90e, загрузите новую версию
Исправлено в 2103d0b, загрузите новую версию
теперь нормально теги не поправили (альбом, жанр,...) ? очень жаль
С тегами все нормально. Над жанрами не работал, открыл для них issue: #4
С тегами все нормально. Над жанрами не работал, открыл для них issue: #4
у меня первый файл скачался с альбомом Nevermind, а не Nevermind (Super Deluxe Edition)
Какие аргументы вы передаете скрипту?
Какие аргументы вы передаете скрипту?
python main.py --session-id "3......vo" --hq --add-lyrics --url "https://music.yandex.ru/album/294912" --strict-path --dir "E:\"
Добавьте аргумент --add-version, без него скрипт не загружает версии треков и альбомов
Добавьте аргумент --add-version, без него скрипт не загружает версии треков и альбомов
Да, теперь нормально. Жанр добавьте, пожалуйста, когда будет свободное время. Всё-таки это важный тег и если сервис его отдаёт, то почему бы его не сохранять. Много байтов он не съест. Да, обратил внимание, что URL в файле тоже не сохраняется. Было бы полезно его сохранять.
Брал URL из примера Постоянно получаю ошибку "Параметер url указан в неверном формате" Как починить? И ещё вопрос: не уверен, что я правильно копирую куку, у меня длина значения Session_id - 161 символ. Если я полностью вбиваю это значение в --session-id то получаю ошибку "Синтаксическая ошибка в имени файла, имени папки или метке тома." Взял последние 28 знаков, но подозреваю, что это нправильно (основывался на знаении sessionid2, где первые 134 символа совпадают, а дальше идёт отличие). Команда, например, такая (на Windows 10): python main.py --session-id 'QDpoUP5X4bL9Lrxyk8neDxxxxxx' --hq --add-lyrics --url 'https://music.yandex.ru/artist/792433'