Добавление информации об ошибке 400

This commit is contained in:
Lev Plyusnin 2023-09-04 21:09:21 +07:00
parent 26a6e5e47b
commit 51f5940140
No known key found for this signature in database
GPG key ID: 21C6C2C9C0A4460D
4 changed files with 25 additions and 5 deletions

View file

@ -88,7 +88,8 @@ usage: yandex-music-downloader [-h] [--hq] [--skip-existing] [--add-lyrics]
(--artist-id <ID исполнителя> | --album-id <ID альбома> | --track-id <ID трека> | --playlist-id <владелец плейлиста>/<тип плейлиста> | -u URL)
[--unsafe-path] [--dir <Папка>]
[--path-pattern <Паттерн>] --session-id <ID
сессии> [--user-agent <User-Agent>]
сессии> [--spravka <Spravka>]
[--user-agent <User-Agent>]
Загрузчик музыки с сервиса Яндекс.Музыка
@ -129,11 +130,24 @@ ID:
Авторизация:
--session-id <ID сессии>
--spravka <Spravka>
--user-agent <User-Agent>
по умолчанию: Mozilla/5.0 (X11; Linux x86_64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/106.0.0.0 Safari/537.36
```
## Ошибка 400
Ниже приведена инструкция по устранению ошибки 400.
Перейдите на сайт Яндекс.Музыки, затем проделайте следующие шаги:
### Для Firefox
1. Нажмите на иконку замочка слева от адреса сайта
2. Нажмите `Clear cookies and site data`
3. Нажмите `Remove`
4. Перезагрузите страницу
5. Прорешайте капчу
6. Скопируйте значение куки `spravka` - передайте его как аргумент
`--spravka`
## Спасибо
Разработчикам проекта [yandex-music-download](https://github.com/kaimi-io/yandex-music-download). Оттуда был взят [код хэширования](https://github.com/kaimi-io/yandex-music-download/blob/808443cb32be82e1f54b2f708884cb7c941b4371/src/ya.pl#L720).

View file

@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "yandex-music-downloader"
version = "1.0.3"
version = "1.0.4"
description = "Загрузчик музыки с сервиса Яндекс.Музыка"
requires-python = ">=3.9"
readme = "README.md"

View file

@ -120,6 +120,7 @@ def main():
auth_group.add_argument('--session-id',
required=True,
metavar='<ID сессии>')
auth_group.add_argument('--spravka', metavar='<Spravka>')
auth_group.add_argument('--user-agent',
default=DEFAULT_USER_AGENT,
metavar='<User-Agent>',
@ -149,7 +150,8 @@ def main():
time.sleep(args.delay)
def setup_session(session: Session):
core.setup_session(session, args.session_id, args.user_agent)
core.setup_session(session, args.session_id, args.user_agent,
args.spravka)
session.hooks = {'response': response_hook}
session = cached_session = Session()

View file

@ -73,9 +73,13 @@ def set_id3_tags(path: Path, track: BasicTrackInfo, lyrics: Optional[str],
tag.save()
def setup_session(session: Session, session_id: str,
user_agent: str) -> Session:
def setup_session(session: Session,
session_id: str,
user_agent: str,
spravka: Optional[str] = None) -> Session:
session.cookies.set('Session_id', session_id, domain='yandex.ru')
if spravka:
session.cookies.set('spravka', spravka, domain='yandex.ru')
session.headers['User-Agent'] = user_agent
session.headers['X-Retpath-Y'] = urllib.parse.quote_plus(
'https://music.yandex.ru')