(Как) Удалить все треки из VK



(Как) Удалить все треки из VK 

Предисловие: приспичило мне почистить музыку в вк, но в выдаче гугла по запросу удаления музыки одни нерабочие методы и примеры каких-то старых версий ВК. Так что пришлось решать вопрос самостоятельно. Заодно, надеюсь, эта инструкция в поиске будет выдаваться выше того, что давно перестало работать.
Бонусом добавил фильтрацию по названию если что-то надо сохранить.
Инструкция:
(Проверено в chrome, в остальных современных браузерах должно работать)
1. Перейти на странице vk.com в "мою музыку". В адресной строке будет vk.com/audiosЦИФРЫ. Должна быть открыта вкладка "моя музыка"
2. Скопировать этот код, или отсюда:

VK delete all tracks

3. На странице с музыкой нажать F12. Появится окно консоли, после стрелочки вставить код:

4. Нажать ENTER. Окно начнет скролить в самый низ списка, затем начнется удаление (Может занять некоторое время, особенно для больших списков; из-за медленного интернета скрипт может решить что список уже закончился и начать удаление, тогда надо будет его перезапустить)
На гитхаб закинул несколько разных версий скрипта - без скролла, с инверсированным фильтром (Удалить только треки с совпадающими названиями), докинул еще скрипт добавления треков, но его vk фильтрует на антибота (Да и вообще хз кому может пригодиться)
P.S. Удивительно, что вконтакт не фильтрует множественные запросы на удаление, отпишите в комментарии если с этим возникнут с этим проблемы
P.S.S. Я на связи, если возникнут какие-то вопросы или нужно будет добавить какую-нибудь функцию (Фильтрацию по исполнителю, например)

delete-all.js
//Сюда вписать через запятую названия своих треков, которые хотите сохранить
//Например: ["Цвет настроения", "За любовь", "Каждый раз"]
// Кстати Цвет настроения сохранится и черный и синий :D
var filter = ["Your-favorite-track-name"];

//scroll down at max
function scrollDown(callback){
    let scroll = document.body.scrollHeight;
    let lastScroll = scroll;
    window.scrollTo(0,document.body.scrollHeight);
    requestAnimationFrame(function(){
        scroll = document.body.scrollHeight;
        if(scroll != lastScroll)
            scrollDown(callback);
        else callback();
    });
}

scrollDown(function(){
    var list = document.querySelectorAll(".audio_row");
    console.log(`Total songs: ${list.length}`);

    function del(obj) {
            console.log(`delete ${obj.title}`);
            ajax.post("al_audio.php", {
                act: "delete_audio",
                oid: obj.ownerId,
                aid: obj.id,
                hash: obj.deleteHash,
                restore: 1
            });
    }

    list.forEach(function(el) {
        let obj = AudioUtils.asObject(AudioUtils.getAudioFromEl(el));
        for (let i in filter)
            if (obj.title.includes(filter[i])) {
                console.log(`keep ${obj.title}`);
                return;
            }
        del(obj);
    });
});

filter-inverted.js
//В этой версии удаляться будут только треки из списка
//Сюда вписать через запятую названия своих треков, которые хотите удалить :)
//Например: ["Never gonna give you up", "Крылья", "Automatonic electronic harmonics"]
var filter = ["Your-hated-track-name"];

//scroll down at max
function scrollDown(callback){
    let scroll = document.body.scrollHeight;
    let lastScroll = scroll;
    window.scrollTo(0,document.body.scrollHeight);
    requestAnimationFrame(function(){
        scroll = document.body.scrollHeight;
        if(scroll != lastScroll)
            scrollDown(callback);
        else callback();
    });
}

scrollDown(function(){
    var list = document.querySelectorAll(".audio_row");
    console.log(`Total songs: ${list.length}`);

    function del(obj) {
            console.log(`delete ${obj.title}`);
            ajax.post("al_audio.php", {
                act: "delete_audio",
                oid: obj.ownerId,
                aid: obj.id,
                hash: obj.deleteHash,
                restore: 1
            });
    }

    list.forEach(function(el) {
        let obj = AudioUtils.asObject(AudioUtils.getAudioFromEl(el));
        for (let i in filter)
            if (obj.title.includes(filter[i])) {
        del(obj);
                return;
            }
    });
});

no-scroll.js

// Эта версия не будет скроллить страницу
//Сюда вписать через запятую названия своих треков, которые хотите сохранить
//Например: ["Цвет настроения", "За любовь", "Каждый раз"]
var filter = ["Your-favorite-track-name"];

//scroll down at max
function scrollDown(callback){
  callback();
  return;
    let scroll = document.body.scrollHeight;
    let lastScroll = scroll;
    window.scrollTo(0,document.body.scrollHeight);
    requestAnimationFrame(function(){
        scroll = document.body.scrollHeight;
        if(scroll != lastScroll)
            scrollDown(callback);
        else callback();
    });
}

scrollDown(function(){
    var list = document.querySelectorAll(".audio_row");
    console.log(`Total songs: ${list.length}`);

    function del(obj) {
            console.log(`delete ${obj.title}`);
            ajax.post("al_audio.php", {
                act: "delete_audio",
                oid: obj.ownerId,
                aid: obj.id,
                hash: obj.deleteHash,
                restore: 1
            });
    }

    list.forEach(function(el) {
        let obj = AudioUtils.asObject(AudioUtils.getAudioFromEl(el));
        for (let i in filter)
            if (obj.title.includes(filter[i])) {
                console.log(`keep ${obj.title}`);
                return;
            }
        del(obj);
    });
});

tracks-add.js

var filter = ["Your-favorite-track-name"];

var list = document.querySelectorAll(".audio_row");
console.log(`Total songs: ${list.length}`);

function add(el, obj, delay){
    setTimeout(function(){
        console.log(`add ${obj.title}`);
        AudioUtils.addAudio(el, obj);
    }, 10000*delay);
}

list.forEach(function(el, num) {
  let obj = AudioUtils.asObject(AudioUtils.getAudioFromEl(el));
  for (let i in filter)
    if (obj.title.includes(filter[i])) {
      console.log(`skip ${obj.title}`);
      return;
    }
    
    add(el, obj, num);
});

Скачать с зеркала
Привет, наша адмнистрация публикует только пушечный контент, поставь лайк под постом ниже и напишите самый топовый комментарий, мы готовим материал только для тебя, любимый Гость.

Пожертвовать Вы можете сделать автору Wizard, подарок в виде пожертвования на его электронную копилку ;)


Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Основа для вашей сборки
ReHLDS 3.7.0.698

ReHLDS (Reverse-engineered) - это новый шаг вперед, который дает второе дыхание нашим серверам. ReHLDS работает в 2 раза быстрей, чем HLDS.

AmxModx 5.2.7.1

AMXModX - это Metamod дополнение, которое позволяет создавать новые модификации для Half-Life на языке Pawn

Reunion 0.1.92

Reunion является продолжением Dproto для ReHLDS. Это metamod плагин, который позволяет заходить 47/48 Non-Steam на сервер.

Revoice 0.1.0.34

Revoice - это Metamod plugin, который дает возможность общения голосовым чатом между non-steam и steam клиентами.

Metamod-r 1.3.128

Новый Metamod-r содержит огромное количество оптимизаций производительности и намного более чистый код. Ядро было написано с использованием JIT-компилятора.

Ultimate Unprecacher 1.1

Ultimate Unprecacher являет плагином для MetaMod, работает он по принципу отключение не нужных ресурсов на вашем сервере, тем самым вы сможете освободить места для ресурсов под ваши плагины, с помощью данного модуля можно избавиться от ошибки 512!

ReAuthCheck 0.1.6

ReAuthCheck - это Metamod плагин, который занимается проверкой ваших игроков на валидность, с помощью данного модуля для REHLDS вы сможете защитить свой сервер от ботов, которые постоянно спамят рекламу или просто забивают слот на сервере!

NetBufExtender (NBEX) 1.0

NetBufExtender или NBEX - это метамод-плагин, который расширяет "интернет-буфер": буферы сервера и клиента(гарантия не 100%). Расширяет до 64 кб. Это значит, что у игроков уменьшается вероятность быть кикнутыми с ошибкой "Reliable channel overflowed".

UserInfoNetOptimizer (UINO) 1.0

UINO — metamod-плагин, который позволяет удалять ненужные поля из userinfo(setinfo) когда движок передаёт его другим игрокам на сервере. Данная мера уменьшает объём передаваемых данных и немного сокращает шанс быть кикнутым с "Reliable channel overflowed".

Информация

Добро пожаловать на CS-WZ.RU!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запись!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт