Удаление всех аудиозаписей из ВКонтакте

Для затравки рабочий код для строки запроса. Сначала надо зайти на страницу http://vkontakte.ru/audio?act=edit
javascript:as=document.getElementsByTagName('a');bv=new Array();j=0;for(i=0;i<as.length-1;i++){if(as[i].name!=""){bv[j++]=as[i].name}}i=0;inter=setInterval(function(){AudioEdit.deleteAudio(bv[i++]);if(i>j)clearInterval(inter)},500); Смотри UPD.
На днях ВКонтакте сделали шаг против приватности, давая возможность скрывать только 15 своих друзей, вместо всех сразу. Почему-то все сразу забыли недавние положительные обновления и сразу стали ругать Дурова. Ругать я не собираюсь, как и хвалить и защищать тоже.
Как-то раз у меня накрылся винчестер. На нем было очень много музыки. И я стал слушать музыку из ВКонтакта. В итоге мой плейлист там вырос до 200 композиций. Не так много, как у некоторых, но все же не мало. И сегодня возник вопрос, а как бы все это сразу и не напрягаясь удалить.
Поиск в интернете дал всего два результата. Первый - использовать VKBot, который надо скачивать себе на компьютер. Второй - скрипт на PHP. По поводу первого у меня сработал параноик, который ненавидит качать что-попало и вводить туда пароли даже от ВКонтакта, а по поводу второго сработал перфекционист, который считает что PHP предназначен все-таки немного не для этого.
Так же в интернете нашлись подборки JavaScript-ов для различных плюшек. К сожалению скрипта для удаления всех записей там не было. Пришлось писать самому. =)
Начинать надо естественно с исходного кода страницы.
Здесь прекрасно видно, что песня удаляется методом deleteAudio объекта AudioEdit. На вкладке Консоль инструментов разработчика в этом можно спокойно удостовериться. Так же видно что параметром передается id песни. То есть нам необходимо найти id каждой песни и вызвать функцию столько же раз.
Как же мы будем искать id?
Разработчики ВКонтакте сделали пустые ссылки в начале каждого блока песни, якоря на которых и есть id песни. Осталось их собрать.
Дальше можно пойти разными способами. Например с помощью регулярных выражений выбрать все теги <a> где якорь имеет восьми-символьное цифровое значение. Но как это сделать я не придумал =). Поэтому просто сделал выборку всех ссылок на странице, после чего отсеял только те, что имели якорь. Получилось то что надо.
Дальше появилась еще одна проблема. ВКонтакте либо специально, либо в силу архитектуры имеет ограничение по количеству запросов в секунду. Для человека это не заметно, но для программ существенно. Поэтому, что бы все удалилось пришлось делать задержку.

UPD Разработчики ВКонтакте немного поменяли код и теперь объект AudioEdit называется просто Audio, поэтому рабочий код выглядит теперь так:
javascript:as=document.getElementsByTagName('a');bv=new Array();j=0;for(i=0;i<as.length-1;i++){if(as[i].name!=""){bv[j++]=as[i].name}}i=0;inter=setInterval(function(){Audio.deleteAudio(bv[i++]);if(i>j)clearInterval(inter)},500);

Комментариев нет: