Задача. Необходимо массово удалить разом все посты (темы, записи, заметки) в группе на Одноклассниках.
Решение. В самой социальной сети функции удалить все посты сразу нет. Можно удалять только вручную. Чтобы автоматизировать данный процесс предлагаю использовать 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(); } |