llistochek / yandex-music-downloader

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

Параметер url указан в неверном формате #3

Closed AlexPi86 closed 1 year ago

AlexPi86 commented 1 year ago

Брал 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'

llistochek commented 1 year ago

Попробуйте брать аргументы --session-id и --url в двойные кавычки, а не в одинарные. Т.е. python main.py --session-id "QDpoUP5X4bL9Lrxyk8neDxxxxxx" --hq --add-lyrics --url "https://music.yandex.ru/artist/792433"

AlexPi86 commented 1 year ago

Отлично! Теперь при скачивании трека 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 os.makedirs(save_dir) File "", line 225, in makedirs NotADirectoryError: [WinError 267] Неверно задано имя папки: '.\сборник/PAY CLOSE ATTENTION: XL Recordings'

Если добавляю опцию --dir "e:\", то ошибка

Треков: 1 Traceback (most recent call last): File "e:\SOFT\PortableGit\yandex-music-downloader\main.py", line 324, in os.makedirs(save_dir) File "", line 215, in makedirs File "", line 215, in makedirs File "", line 225, in makedirs OSError: [WinError 123] Синтаксическая ошибка в имени файла, имени папки или метке тома: 'e:"'

llistochek commented 1 year ago

В первом случае делайте аргумент --dir равным просто сборник, без .\ в начале. Во втором случае указывайте путь к диску как "E:\\"

llistochek commented 1 year ago

На данный момент в скрипте работа с файловыми путями реализована не очень правильно, на линуксе все работает, на винде есть некоторые проблемы. Исправлю это

AlexPi86 commented 1 year ago

Команда

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'
llistochek commented 1 year ago

Проблема в том что в названии сборника PAY CLOSE ATTENTION: XL Recordings используется символ :, который нельзя использовать для имен файлов на файловой системе NTFS. Попробуйте загрузить другой альбом/трек.

AlexPi86 commented 1 year ago

Да, вот такой вариант работает: 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).

llistochek commented 1 year ago

Информация о версии альбома (Super Deluxe Edition) действительно не загружается, исправлю это. Встраивание обложки в сам .mp3 файл также будет реализовано. А вот формат записи номера трека/диска - это не ошибка, у меня все плееры корректно распознают такую запись. Поддержка жанров в тегах возможно будет добавлена, но имеет для меня низкий приоритет, т.к. жанрами при выборе музыки я не пользуюсь.

AlexPi86 commented 1 year ago

Предлагаю сделать "по фэншую". Добавить опцию(и), чтобы тег был максимально полным и корректным. типа --id3v1,--id3v2 В такос случае любой человек сможет скачать с нужными ему тегами. Поэкспериментировал в Mp3tag Получилось, что тег ID3v2.4 - это то же самое, что и (ID3v1 ID3v2.4) Соответственно получаются 2 варианта: ID3v1 и ID3v2 Вот сравнение: ID3v1 ID3v2

Если опция не указана, то сохранять ID3v2

llistochek commented 1 year ago

Не вижу смысла делать возможность сохранения тегов в ID3v1. Версия ID3v2.4 была выпущена в 2000 году, любое устройство/программа сейчас ее поддерживает и корректно распознает.

llistochek commented 1 year ago

Заменил кавычки в примерах (c294b43800a403a8bf5e598f3091e1970763e514) Улучшил обработку путей (a58888f9c710ebea050e0733ebcf35c44b24e47e) Добавил флаг --strict-path который очищает путь файла от недопустимых символов (88fc6be1a7e8a68a5689d76c401e8b617e6d5b57) Версия альбома теперь скачивается при использовании флага --add-version (422b0891f6656a7d25f2382297b75572cb403821) Добавил встраивание обложки в .mp3 файл при использовании флага --embed-cover (53373e41a332f5134ba78d609f6505b5b7c68f0a)

Спасибо за issue.

AlexPi86 commented 1 year ago

Заменил кавычки в примерах (c294b43) Улучшил обработку путей (a58888f) Добавил флаг --strict-path который очищает путь файла от недопустимых символов (88fc6be) Версия альбома теперь скачивается при использовании флага --add-version (422b089) Добавил встраивание обложки в .mp3 файл при использовании флага --embed-cover (53373e4)

Спасибо за issue.

Решил попробовать использовать новую версию. Указал опции --strict-path --dir "E:\" В итоге программ стала скачивать альбом в корневую папку, где лежит файл main.py

llistochek commented 1 year ago

Исправлено в 2103d0b053a3ced3d3450ab22a418ff47988e90e, загрузите новую версию

AlexPi86 commented 1 year ago

Исправлено в 2103d0b, загрузите новую версию

теперь нормально теги не поправили (альбом, жанр,...) ? очень жаль

llistochek commented 1 year ago

С тегами все нормально. Над жанрами не работал, открыл для них issue: #4

AlexPi86 commented 1 year ago

С тегами все нормально. Над жанрами не работал, открыл для них issue: #4

у меня первый файл скачался с альбомом Nevermind, а не Nevermind (Super Deluxe Edition)

llistochek commented 1 year ago

Какие аргументы вы передаете скрипту?

AlexPi86 commented 1 year ago

Какие аргументы вы передаете скрипту?

python main.py --session-id "3......vo" --hq --add-lyrics --url "https://music.yandex.ru/album/294912" --strict-path --dir "E:\"

llistochek commented 1 year ago

Добавьте аргумент --add-version, без него скрипт не загружает версии треков и альбомов

AlexPi86 commented 1 year ago

Добавьте аргумент --add-version, без него скрипт не загружает версии треков и альбомов

Да, теперь нормально. Жанр добавьте, пожалуйста, когда будет свободное время. Всё-таки это важный тег и если сервис его отдаёт, то почему бы его не сохранять. Много байтов он не съест. Да, обратил внимание, что URL в файле тоже не сохраняется. Было бы полезно его сохранять.