У вас в vk.com есть любимые музыкальных группы или друзья, с которыми ваши музыкальные вкусы совпадают? У меня да. И хотелось иметь актуальную локальную копию музыки этих групп и друзей, чтобы слушать её, например в машине, телефоне, плейере или где-нибудь ещё. Так родилась идея создания консольного open sourse приложения vmd (vkontakte music downloader), которое я обещал выложить на github вот в этом посте. Программа мультиплатформенная работает под linux, windows и mac os x. Скачать бинарные сборки под эти ОС можно скачать на домашней странице проекта. Под хабракатом рассказано, как vmd использовать и некоторые технические подробности.
Как vmd пользоваться?
Для использования программы надо получить api_id, перейдя по ссылке: http://vk.com/apps.php?act=add. Если у вас есть api_id существующего приложения — можете использовать его.
После этого надо создать файл с сессией.
Используйте следующею команду для его генерации:
$ vmd --login <ваш email или номер телефона> --password <ваш пароль> --api_id <ID приложения>
vmd не хранит ваш пароль на жестком диске, используя файл с сессией для авторизации. Эту команду надо выполнить всего один раз!
Теперь можно скачивать музыку.
Скачивание музыки у пользователей
Если страница пользователя vk.com/genaev или vk.com/id2302071, то для того что бы скачать его музыку надо запустить:
$ vmd --uid genaev
$ vmd --uid 2302071
Скачивание музыки из групп
Если страница группы vk.com/teamfly, то надо запустить
$ vmd --gid teamfly
Загрузка музыки происходит в текущею директорию. Имеет смысл скопировать vmd куда-нибудь в PATH.
Синхронизация происходит автоматически по имени файла, если трек уже скачан, второй раз он скачиваться не будет. Имена файлов соответствуют шаблону: исполнитель-название_трека-id_трека.mp3. Зачастую в vk.com файлы называют как попало, включая названия всякие смайлики, сердечки и прочий мусор. Для его удаления была написана функция clean_name().
ToDo
Я рад, что программа и модуль VK::App оказался полезен не только мне. Уже составлен не большой ToDo лист.
- Добавить возможность скачивать плей листы и альбомы
- Добавить возможность поиска музыки
- Добавить возможность скачивания в многопоточном режиме
- Добавить поддержку proxy
- Добавить возможность скачивания сразу у нескольких пользователей или из нескольких групп
- Создание GUI интерфейса на QT
Буду рад любым фитбекам!
Автор: genaev