Skip to content

Instantly share code, notes, and snippets.

@abler98
Last active November 15, 2024 19:19
Show Gist options
  • Save abler98/2fbeee9f7bd056bbe6c485041370c556 to your computer and use it in GitHub Desktop.
Save abler98/2fbeee9f7bd056bbe6c485041370c556 to your computer and use it in GitHub Desktop.
Скрипт для скачивания музыки VK
/*
Инструкция по использованию:
- заходим в раздел с аудиозаписями
- листаем в самый низ (чтобы прогрузились все аудиозаписи)
- открываем консоль браузера (F12 -> Консоль)
- вставляем код и нажимаем ENTER
- скачивание началось...
- браузер может потребовать разрешение на сохранение файлов, необходимо подтвердить действие
Важно! С открытой вкладкой ничего не делаем!
Проверено в Google Chrome
*/
var script = document.createElement('script');
script.src = "https://code.jquery.com/jquery-3.2.1.min.js";
document.getElementsByTagName('head')[0].appendChild(script);
script = document.createElement('script');
script.src = "https://cdnjs.cloudflare.com/ajax/libs/downloadjs/1.4.7/download.min.js";
document.getElementsByTagName('head')[0].appendChild(script);
// Количество одновременных загрузок
const DOWNLOAD_COUNT = 5;
function download_file(url, name, type, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.responseType = "blob";
xhr.onload = function () {
download(xhr.response, name + ".mp3", type);
callback();
};
/*xhr.onprogress = function (e) {
var progress = e.loaded * 100 / e.total;
console.log( name, Math.round(progress, 2) + "%" );
};*/
xhr.send();
}
setTimeout(function () {
var ids = $('._audio_row').map(function () {
return $(this).data('full-id');
}).get();
var progress = 0;
window.download_audio = function () {
if (progress > (ids.length - 1)) {
console.log("Все аудиозаписи скачаны!");
return;
}
$.post("al_audio.php", {
act: "reload_audio",
al: 1,
ids: ids[progress++]
}, function (data) {
var matches = data.match(/<!json>\[(.+)\]<!>/);
if (matches == null || matches[1] == null) {
download_audio();
console.log("Не удалось скачать аудиозапись, идём дальше...");
return;
}
data = JSON.parse(matches[1]);
var name = data[4] + " - " + data[3];
name = $('<textarea/>').html(name).text();
download_file(data[2], name, "audio/mp3", window.download_audio);
console.log("Скачиваем...", name);
});
}
for (var i = 0; i < DOWNLOAD_COUNT; i++) {
download_audio();
}
}, 2000);
@metalurgus
Copy link

К сожалению, больше не работает :-(
Вместо музыки скачивает заглушку, которая говорит "к сожалению музыка недоступна..."

@fizvlad
Copy link

fizvlad commented Apr 27, 2018

@denisUltimate
Copy link

Все работает, реализовано на https://musiconly.ru/

@elnurxf
Copy link

elnurxf commented Jan 8, 2019

Отличный скрипт и при том рабочий =))) Спасибо огромное автор
А можно его на php переписать? Или чтобы он автоматически сохранял в папку
И еще такой вопрос - как например аудио с поста скачать? Я так понимаю нужно взять название мелодии, потом найти ее в аудиои потом парсить.

Есть для этих целей репозиторий на PHP для скачивания с vk.com тут https://github.com/elnurxf/vk.audio

@NightStrang6r
Copy link

Отличный скрипт и при том рабочий =))) Спасибо огромное автор
А можно его на php переписать? Или чтобы он автоматически сохранял в папку
И еще такой вопрос - как например аудио с поста скачать? Я так понимаю нужно взять название мелодии, потом найти ее в аудиои потом парсить.

Есть для этих целей репозиторий на PHP для скачивания с vk.com тут https://github.com/elnurxf/vk.audio

Ещё актуально?

@TheWhatis
Copy link

TheWhatis commented Feb 22, 2021

У кого ошибки типа:
"Content Security Policy: Параметры страницы заблокировали загрузку ресурса https:// code.jquery.com/jquery-3.2.1.min.js («script-src»)."
Или
"Content Security Policy: Параметры страницы заблокировали загрузку ресурса https:// cdnjs.cloudflare.com/ajax/libs/downloadjs/1.4.7/download.min.js («script-src»)."

Я немного переделал код, вот ссылка - https://gist.github.com/Whatisone/0f8acc4cad4f4e5fe95d54e5fc454472

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment