Скачать весь свой плейлист Вконтакте

Что делать если хочется скачать всю музыку из вконтакте на своей странице, даже если её очень много? (например over +1000 треков). Набросал скрипт на js, данный способ требует времени, но подойдёт для тех кто хочет запустить этот процесс в фоне, при этом не отвлекаясь от сёрфинга интернета и своих дел. Понадобится только браузер Chrome (Chromium).

Первым делом идём скачиваем расширение для браузера хром здесь. Всё что оно делает, это выводит новую кнопку для скачивания трека, но не предоставляет функционал для выкачивания всех треков (нет волшебной галочки "скачать все"). Не проблема. Переходим в свою Музыку, открываем инспектор кода (в хроме F12 клавиша), переходим на вкладку Console, вставляем код ниже и нажимаем клавишу Enter:

function getAllTracks(positionStart) {
    var height = 600;
    var step = 300;
    var scrollInterval = 0;

    function scrollToEndPage() {
        window.scrollTo(0, height);
        step++;
        height += step;
    }

    function downloadTracks() {
        clearInterval(scrollInterval);
        window.scrollTo(0, 0);
        var time = 3000;
        $('.mtz-vk-btn-icon').slice(positionStart).each(function (key, value) {
            setTimeout(function () {
                value.click();
            }, time);
            time += 10000; // delay 10 seconds...
        });
    }

    function tryDownloadTracks() {
        if (height < document.body.scrollHeight) {
            scrollToEndPage();
        } else {
            downloadTracks();
        }
    }

    scrollInterval = setInterval(tryDownloadTracks, 30);
}

getAllTracks(0);

После этого начнётся процесс загрузки всех ваших треков. Страница переместится в самый низ, преодолевая lazyload загрузку треков, тем самым собирая все ваши треки вместе и начнёт загрузку, делая паузу в 10 секунд между скачиваниями (данную вкладку нельзя закрывать и уходить со страницы музыки на этой вкладке, пока не загрузится вся музыка). Останется только ждать, когда все треки загрузятся, а тем временем можно перейти в новую вкладку и работать оттуда. 10 секундная пауза вычислена экспериментальным путём, но при желании вы можете редактировать скрипт (только не делайте слишком малые значения, а то можно "повесить" браузер).

Если в последнюю строчку в коде передать другое число вместо 0, то скрипт начнет скачивание именно с этого трека по счету. Например, скачали 99 файлов и случайно закрыли/перезагрузили вкладку, поэтому чтобы заново всё не качать, в последней строке в коде передаём 100, - getAllTracks(100); (начать скачивать с 100го файла включительно). И снова запускаем весь скрипт в консоли.

Протестировано в браузере Chrome, полёт нормальный, я пока писал эту заметку, моя музыка уже почти вся скачалась. В других браузерах (если у них есть доступ к расширению loady) тоже должно отработать.

download vk music



Похожие заметки:

Корзина на сайте — часть 1

В статье рассказывается как создать JavaScript корзину на сайте с помощью плагина simpleCart.js

Открыть здесь

626

Скрипт динамической ширины

Скрипт для равномерного распределения блоков по ширине родительского контейнера. В качестве контейнера может выступать любой блок как определенной ширины, так и неопределенной, вплоть до body. Что умеет?

  • Нарезать блоки на одинаковую ширину в зависимости от заданного количества колонок
  • Генерировать нужное количество колонок
  • Проставлять clearfix после оканчивающей ряд колонки, чтобы вовремя отменить обтекание
  • Удалять лишние clearfix

Открыть здесь

286

Корзина на сайте — часть 2

В статье рассказывается как c помощью simpleCart.js делать такие вещи:

  • Выводить товары в том виде, в котором вам надо
  • Обрабатывать переданные товары и возвращать результат
  • Делать дальнейшие операции с заказом

Открыть здесь

1452


Перед тем как писать комментарии, рекомендую ознакомиться:

Markdown синтаксис »

Оформление кода »

Нужна аватарка »

Комментарии