qwertyadrian / vk-music-downloader

Программа для скачивания музыки пользователей (и не только) ВКонтакте
GNU General Public License v3.0
28 stars 5 forks source link

Ошибки получения аудиозаписей #10

Open demions opened 1 year ago

demions commented 1 year ago

Ловлю ошибки при получении аудиозаписей, когда метод аутентификации вызывается с token_only=True. Воспроизводится на аудиозаписях пользователя. Возможно требуется большое кол-во аудиозаписей. В отладке вижу, что внутри метода tracks = self.vk_audio.get(owner_id, album_id, access_hash) от вк получаю html страницы аудиозаписей вместо json.

После установки token_only=False ошибки перестали воспроизводиться. Логику проблемы не понимаю, но в моем скрипте получения аудиозаписей первичная аутентификация осуществляется с auth() c token_only=False по логин-паролю, потом локально сохраняется auth_token, при следующих аутентификациях передается логин+токен (логин не помню, нужен ли), при этом auth вызывается с token_only=True.

Наверное здесь тоже стоит переделать на первичную аутентификацию по логин-паролю с token_only=False, сохранять токен (тоже в keyring?) и дальше использовать его с token_only=True.

В истории репо вижу, что была какая-то аутентификация по токену, с ней были какие-то проблемы?

qwertyadrian commented 1 year ago

Ловлю ошибки при получении аудиозаписей, когда метод аутентификации вызывается с token_only=True.

Изначально я это использовал чтобы обойти баг с авторизацией в библиотеке vk_api. Заключался он в том, что даже при валидных куки метод auth() делал повторную авторизацию, а использование параметра token_only=True позволяло проверять только токен, игнорируя куки. Теперь же я этот баг исправил (надеюсь) в своем форке библиотеки.

В истории репо вижу, что была какая-то аутентификация по токену, с ней были какие-то проблемы?

Да, с недавнего времени ВК перестал возвращать ссылки на аудиозаписи при использовании скрытых методов audio. Эти методы работали только при использовании токена. А при авторизации через логин и пароль ссылки на аудиозаписи получаются путем скрапинга веб-страницы, содержащей их.