Zigaben

Zigaben

Пикабушник
поставил 33 плюса и 32 минуса
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
5 лет на Пикабу
1531 рейтинг 0 подписчиков 1 подписка 17 постов 1 в горячем

Переносим коллекцию из vk в lastfm

Переносим коллекцию из vk в lastfm Утилиты, Перенос, Python, Музыка вк, Lastfm, Длиннопост

Недавно у меня появилась потребность перенести всю мою коллекцию треков из вк. (1252 треков в ручную я переносить не хотел) в Yandex.Music и last.fm. С Яндексом нет никаких проблем у них есть прекрасный инструмент как раз для этой цели. Напомню на всякий случай https://music.yandex.ru/import
Проблемой стало, то, что вк нынче не дает работать с музыкой. Потому, выбор стоял между: либо использовать чьи-то готовые реализации (библиотека vk-api на Python), либо попробовать написать собственную реализацию. Что и было сделано в конечном счете (ссылка в конце поста).
Я пишу в основном для себя, на языке Python. Для различных оптимизационных задач.
Первым делом понимаем, что добраться до заветных аудиозаписей человека можно только зайдя на vk.com
Бежим на vk.com и сразу понимаем, что основным запросом является пост запрос на https://login.vk.com/ с данными в виде логин/пароль/lg_h/ip_h/captcha и кучей всего еще.
Вк выдает капчу, если ты не логинишься 5 раз подряд с одного айпишника, поэтому этот пункт пропустим, еще остаются проблемы с двухфакторной авторизацией, но я надеюсь реализовать ее в следующей версии (если руки конечно дотянутся).
Обновляя несколько раз страничку, понимаем, что lg_h генерируется каждый раз. ip_h меняется как только меняется ip.
Оба значения довольно легко выудить с страницы логина: https://login.vk.com/

Переносим коллекцию из vk в lastfm Утилиты, Перенос, Python, Музыка вк, Lastfm, Длиннопост

Для этой задачи я использовал библиотеку requests и регулярное выражение "%s" value="(.{18})"
Форматируем строку и получаем значения. Закидываем все в запрос вместе с паролем и логином. И... Авторизация прошла успешно!
Об этом нам говорит строка в ответе 'onLoginDone', вместе с именем пользователя и его owner_id. Сразу сохраняем второе значение, так как оно нам еще понадобится для получения списка музыки.
Идем на страницу музыки и опять ловим запросы которые идут на сервер. В этот раз это post на https://vk.com/al_audio.php, причем вызывается он два раза. В первый раз с параметром offset = 0 второй раз c 30. Первый раз выдает 30 треков в формате xml с json и кусками страниц. Второй раз все остальные в таком-же формате. Получаем нужный нам json с помощью регулярки <!><!json>(.+?)<!> и загружаем его. Осталось почистить мусор и записать все в файл, хотя некоторые данные, например ссылки на не активированные треки могут быть довольно полезны.

Переносим коллекцию из vk в lastfm Утилиты, Перенос, Python, Музыка вк, Lastfm, Длиннопост

Следующей фазой станет перенос полученного json'а в LastFM. Благо на это дело у LastFM есть удобное api на python pyLast.

Переносим коллекцию из vk в lastfm Утилиты, Перенос, Python, Музыка вк, Lastfm, Длиннопост

Для тех, кто хочет просто перенести свои треки из вк в ластфм или не знаком с python, я подготовил изолированную среду для выполнения скрипта. Удалил все лишнее, оставил только жизненно необходимое. Вам достаточно нажать кнопку run.bat и все должно заработать.
Контакты по всем багам/предложениям/вопросам/критике указаны в readme файлах.
https://yadi.sk/d/Si9exRHZrt_NiA
Всем удачи в перенесении своих музыкальных коллекций.

Показать полностью 3

Аттилыч хочет кушанья

Аттилыч хочет кушанья Кот, Вес, Срочно французкого корма!, Рисунок, Милота, Грива
Показать полностью 1

Холодно дереву

Дабы не простудиться дерево одело перчатку на сук
Холодно дереву Дабы не простудиться дерево одело перчатку на сук

Диско-лампа на работе

Диско-лампа на работе

В центре...

Растет сорняк :)
В центре... Растет сорняк :)

Обменял.

Закинул вчера в автомат с кофе 100 р. Кофе налился, сдача:
1 рубль и 118 пятьдесят копеек. Засунул обратно купил кофе коллегам.
Никогда не кидайте сумму с большой сдачей в автомат.

Сметана

Когда был мелкий, думал, что если помазать блин сметаной, то он станет творожным. Все блины обмазывал сметаной, пока не наткнулся на мясной блин...
Сметана Когда был мелкий, думал, что если помазать блин сметаной, то он станет творожным.   Все блины обмазывал сметаной, пока не наткнулся на мясной блин...

Отдел по увольнению

Давно еще на одной работе работал до того, как она слилась с гигантом.
Почти каждый год навещаю бывших колег, как дела, как жизнь спрашиваю.
Прихожу однажды:
- Ну как жизнь?
- Плохо!
- А что случилось?
- Да, вот... Мы 3000 человек сократили, а теперь и наш отдел сокращают...
Отличная работа, все прочитано!