Задача. Необходимо массово удалить разом все посты (темы, записи, заметки) в группе на Одноклассниках.
Решение. В самой социальной сети функции удалить все посты сразу нет. Можно удалять только вручную. Чтобы автоматизировать данный процесс предлагаю использовать js-скрипт («костыль», конечно, но у меня получилось». Скрипт будет удалять только видимые на экране посты. Поэтому заранее необходимо страницу максимально прокрутить вниз, чтобы подгрузились все посты (это тоже автоматизируем).
Алгоритм удаления всех постов в Одноклассниках:
- Перейти в группу на Одноклассниках.
- Перейти на вкладку «Темы».
- Открыть консоль разработчика в браузере (обычно F12).
- В консоли перейти во вкладку «Console».
- Чтобы автоматически прокрутить страницу всавить в консоль Код №1 и выполнить его, нажав Enter.
- Когда пролистается до последнего поста или посчитаете необходимым остановить скроллинг, нужно остановить скрипт скроллинга функцией
clearInterval(setScroll);
. - Для удаления постов вставить в консоль Код №2 и нажать Enter.
- Должно появиться диалоговое окно с предложением удалить посты — Согласиться.
Конечно будут посты некоторые пропускаться (в консоли можно будет увидеть сообщение «Пропуск»), но можно будет обновить страницу и еще раз пройтись скриптом. Всёже это быстрее, чем вручную мотать 2 тысячи постов.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
async function scrollPageOk (){
if (!document.body.querySelector('.loader-container .loader-controls-bottom')) { // Если присутствует класс кнопки "Показать ещё", тогда
let yPage = window.pageYOffset; // Получаем количество пикселей на которое сейчас прокручен документ
document.body.querySelector('.loader-controls-bottom a').click(); // Клик по кнопке "Показать ещё" (бывает перекидывает в самый верх)
window.scroll(0, yPage); // Прокручиваем страницу к месту где закончили
await new Promise(r => setTimeout(r, 1000)); // Ждем 1 сек
console.log("Клик");
}
window.scrollBy (0,1000); // Прокрутка экрана на 1000px
}
let setScroll = setInterval (scrollPageOk, 200); // Start прокрутки
clearInterval(setScroll); // Stop прокрутки
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
async function deleteOkPosts() {
let selectPostLink = document.body.querySelectorAll('.feed_menu_ic'); // Получаем элемент при наведении на который появляется блок с "удалить"
for (var i = 0; i selectPostLink.length; i++) {
var event = new Event('mouseenter', { // Создаем событие наведения на элемент
'view': window,
'bubbles': true,
'cancelable': true
});
selectPostLink[i].dispatchEvent(event); // Добавляем событие (Имитируем наведение курсора на элемент)
await new Promise(r => setTimeout(r, 1000)); // Ждем секунд, чтобы сработали скрипты ОК
let deleteElement = document.body.querySelectorAll('#hook_Block_ShortcutMenu .u-menu_li a')[2]; // Получаем элемент Удалить
if (deleteElement == undefined) { // Если элемента Удалить нет, то подождем 2 секунд (чтобы все еще подгрузилось) и пропустим эту итерацию цикла
await new Promise(r => setTimeout(r, 2000));
console.log("Пропуск " + [i]);
continue;
} else { // Если элемент есть, то имитируем клик по нему
console.log([i] +" - " + deleteElement);
deleteElement.click();
}
}
console.log(selectPostLink.length + ' posts deleted');
};
if (confirm("Удалить темы?")){
deleteOkPosts();
}
|