>> Хорошо. Список мы получили. Теперь надо его отпарсить и скачать каждую песню по отдельности. Я решил не заморачиваться, и просто использовал регулярные выражения
Просто DM помогает весь плейлист из 100500 песен по 10 файлов одновременно с 8 потоками на файл качать. Разгоняется по-максимуму и от ручной рутины избавляет.
Помнится мне я 2 года назад задался той же целью, но сделал все на php, в один поток, однако скрипт умел добавлять в очередь песни, которые не удалось выкачать (недоступен сервер с этой песней или еще чего), затем эта очередь еще пару раз обходилась (за эти проходы еще 60-70% из этих песен выкачивалось), затем скрипт пытался выкачать подобные песни (подобные оставшимся, определялось по продолжительности песни и расстоянию Левенштейна в названии), таким образом выкачивалось абсолютно все :) На тот момент было ~1200 песен в коллекции, качалось около 9 часов :)
На сколько помню, даже если бы хотелось, не получилось бы.
Точнее, с помощью VK API можно только получать информацию и управлять аудиозаписями.
А за статью спасибо, давно хотел скачать все свои скопом.
API линки на аудио отдаёт, но по правилам, качать с помощью АПИ нельзя.
Там как-то красиво это сказали, мол блокировать будут все приложения, которые предоставляют возможность скачать.
И что же тут инструменты? По-моему, нелепо городить огород, когда есть интерфейс, предоставляющий всё в структурированном виде.
Автор просто латентный извращенец.
Для api надо ведь получать id приложения, а это значит привязывать свой номер и делать дополнительные действия, разве нет? Да и как заметили, не спортивно это)
А я обычно через «Тестовое приложение» (https://vk.com/app35569) в execute использую этот код:
var audio = API.audio.get();
return audio@.url;
А дальше поиском/заменой превращаю JSON в обычный список ссылок, который загоняю в какой-нибудь Download Master (либо через wget). Ну а проименовать песни на основе ID3 тегов в любимой форме (некоторые любят в квадратных скобках имя альбома указывать) можно например программой Mp3tag (http://www.mp3tag.de/en/)
Велосипеды. Они такие велосипеды.
Расскажу свой. Получаем список песен через
saveform chrome extension и этот список выкачиваем wget'ом.
На все про все — 5 минут.
О, почти то же самое делал, тоже через SaveFrom, но не список файлов, а плейлист, т.к. файлы имеют бессмысленные имена. Потом маленьким скриптом в linqPad выкачивал и сохранял с правильным именем.
Однажды попросили скачать аудио-коллекцию с Одноклассников для прослушивания в авто. На компьютере уже стоял перехватчик медиа трафика, работающий по принципу «Все что попадается — все качаю», но тыкать кнопку Далее около тысячи раз не хотелось, поэтому в консоли отладчика браузера задал нажимать требуемую кнопку с определенным интервалом, далее уже вопрос времени, при этом закачка шла многопоточно. Основной недостаток такого подхода это лишенные смысла имена получившихся файлов.
Есть еще реализация на node.js+coffeescript. Но с небольшими отличиями:
— воспользоваться может кто угодно, кто может поставить node.js, то есть не нужно копаться в коде
— сохраняет всю инфо в локально в sqlite, и прогресс скачивания тоже, если вдруг остановилась загрузка
— показывает прогресс загрузки и гипотизу для времени конца загрузки, в минутах
— в разы меньше по объему кода ,)
Поделюсь еще раз ссылкой (уже отвечал в QA) на более дружественное к пользователю приложение на С#.
На английской Windows 7 приложение из топика, если запустить run.bat выдает сообщения в неверной кодировке «Осталось скачать 0 Число нитей 0». Еще мне показалось, что качать в несколько потоков не очень получается, так как получается слишком много пропусков, похоже, что есть ограничения на скачивания, поэтому в своем приложении не стал делать многопоточность.
Не очень понятно назначение приложения в таком виде, если квалификации пользователя хватает, на то, чтобы задать remixsid, то гораздо быстрее расширением браузера он может получить список файлов и скормить его менеджеру закачек.
Затем, что это способ быстро слить вашу личную подборку в авто, например.
Либо коллекцию заинтересовавшего пользователя — в плеер, для поиска новых имён и стилей.
У меня, к сожалению, не было вашего упорства.
Поэтому, для личного использования, писал простой скрипт на JS, который получает все ссылки из HTML. На странице /audio, с недавних пор, имеется следующая структура: pastebin.com/MK184cCy
Как можно увидеть, все ссылки легко добываются из скрытых input'ов, а информация о треке достаётся из div'ов под ними. Минусы данного подхода очевидны, но лично для своего пользования этого хватило.
Подскажите, как обработать в коде Питона ошибку 201. Access denied: Access to users audio is denied
Она возникает, когда доступ к списку аудио юзера ограничен.
Скачивание музыкальной коллекции vk.com