Closed GRbit closed 1 year ago
У меня не получилось воспроизвести проблему. Залил новую версию на гитхаб, в ней улучшен вывод отладочной информации. Обновите ее через git pull
и попробуйте еще раз. Прямо перед ошибкой будет выведен XML, пришлите мне его.
@llistochek
Тогда наверное стоит отметить что python3.9, Linux на основе Debian (MX 21.3 Wildflower)
Никакого дополнительного выхлопа не наблюдается
08:04:45 |DEBUG| https://music.yandex.ru:443 "GET /api/v2.1/handlers/track/74681567:13072859/web-album_track-track-track-main/download/m?hq=0 HTTP/1.1" 200 None
08:04:45 |DEBUG| {"codec":"mp3","bitrate":128,"src":"//storage.mds.yandex.net/file-download-info/14665_2aed5343.113178619.5.74681567/preview?sign=4dfb0fc4c2926ad75f4844ef3a1585dd93dafeee0c531ddfd55f422b7ad83f12&ts=64801e3a&offset=5335","gain":false,"preview":true}
08:04:48 |DEBUG| Starting new HTTPS connection (1): storage.mds.yandex.net:443
08:06:57 |DEBUG| https://storage.mds.yandex.net:443 "GET /file-download-info/14665_2aed5343.113178619.5.74681567/preview?sign=4dfb0fc4c2926ad75f4844ef3a1585dd93dafeee0c531ddfd55f422b7ad83f12&ts=64801e3a&offset=5335 HTTP/1.1" 401 574
Traceback (most recent call last):
File "/home/grbit/ssd/git/yandex-music-downloader/main.py", line 466, in <module>
url = get_track_download_url(session, track, args.hq)
File "/home/grbit/ssd/git/yandex-music-downloader/main.py", line 201, in get_track_download_url
url_info = ET.fromstring(resp.text)
File "/usr/lib/python3.9/xml/etree/ElementTree.py", line 1347, in XML
parser.feed(text)
xml.etree.ElementTree.ParseError: mismatched tag: line 6, column 2
Я добавил вот это
--- a/main.py
+++ b/main.py
@@ -198,6 +198,7 @@ def get_track_download_url(session: Session, track: BasicTrackInfo,
url_info_src = resp.json()['src']
resp = session.get('https:' + url_info_src)
+ logging.debug(resp.text)
url_info = ET.fromstring(resp.text)
path = url_info.find('path').text[1:]
s = url_info.find('s').text
И уже после... Оно просто заработало.
У меня такое ощущение что это связано с соединением. Возможно где-то вместо реального ответа получается что-то типа 503 Service Timeout или там сам клиент что-то пишет про то невозможность дождаться ответа. В итоге этот момент не проверяется, а при попытке его распарсить всё падает.
Я попробую ещё потестить в разных условиях, но похоже конкретно с кавычками или подобным никаких багов нет.
Действительно, в последней строчке перед ошибкой можно заметить, что яндекс возвращает код 401 (Unauthorized). Это очень странно, с учетом того что все предыдущие запросы отрабатывают нормально. Но, в любом случае, круто что у вас все заработало, спасибо за issue. Если ошибка повторится, переоткрывайте эту issue. Если будут еще какие нибудь ошибки/предложения - открывайте новую
Пробовал на двух альбомах
сначала на этом: https://music.yandex.com/album/7489514 . думал что проблема с кавычкой в названии артиста, но потом попробовал на этом: https://music.yandex.com/album/13072859 проблема всё такая же.
python3 main.py --add-lyrics --embed-cover --session-id '...' --url "https://music.yandex.com/album/7489514" --log-level DEBUG
Есть идеи в чём может быть проблема?