Перейти к материалам

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

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

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

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

VK delete all tracks

3. На странице с музыкой нажать F12. Появится окно консоли, после стрелочки вставить код:
(Как) Удалить все треки из VK
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? Свяжитесь с администрацией, чтобы уточнить актуальный способ поддержки.

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

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

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

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

Войти на сайт