Main > JavaScript > Пакетное удаление постов в твиттере

Пакетное удаление постов в твиттере

12.08.2012 53 comments » Views: 16,859

Twitter

Зайдя сегодня в твиттер увидел кучу спам твитов от меня. По всей видимости или куда-то утек пароль, или я разрешил кому-то левому запостить сообщения от меня. В любом случае, надо было восстановить справедливость и удалить все эти спам-сообщения. Их было около 500 штук, соответственно вручную (по одному посту за раз) это было делать долго. Тут я вспомнил, что я же программер, и решил написать небольшой скрипт для этой задачи..

Надо сказать что я не особый фанат твиттера, хотя и пытался подсесть на него пару раз, но не срослось. Однако твиттер остается довольно неплохим способом, загнать сайт в индекс гугла, поэтому, я его иногда использую.

Чтобы не заморачиваться с авторизациями, апи и прочей ерундой, я решил написать JavaScript скриптик для GreaseMonkey (https://addons.mozilla.org/ru/firefox/addon/greasemonkey/). Через 15 минут, скриптик был готов.

Скрипт доступен на Github: Twitter-Bulk-Delete-Posts-For-GreaseMonkey (https://github.com/orlov0562/Twitter-Bulk-Delete-Posts-For-GreaseMonkey)

Работает это так:

  • Вам нужен Firefox с установленным плагином GreaseMonkey (https://addons.mozilla.org/ru/firefox/addon/greasemonkey/)
  • Далее в Firefox выбираем в верхнем меню:
    Инструменты>GreaseMonkey>Создать скрипт :

    Создание скрипта в GreaseMonkey

    Создание скрипта в GreaseMonkey

  • Копируем туда код, написанный выше.
  • Обновляем страницу с твиттером
  • Если все сделано правильно, видим что добавились панельки с черным фоном
  • Теперь все что остается сделать, это отметить спам сообщения и нажать удалить:

    Пакетное удаление постов в твиттере

    Пакетное удаление постов в твиттере

Вот и все!

--[добавлено 21.01.2013]--

Если в будущем у кого-то возникнут проблемы со скриптом, пожалуйста, напишите об этом в комментариях. Возможны изменения на твиттере, после которых он перестанет работать 🙂

--[добавлено 15.04.2013]--

Скрипт обновлен. Добавлена кнопка [Deselect retweets], при нажатии на которую снимаются чекбоксы с твитов, которые были ретвитнуты.

Uncheck retweeted

Uncheck retweeted

--[добавлено 20.07.2013]--

По просьбе Антеи записал видео о том, как установить Greasemonkey, добавить туда скрипт, у удалить посты. Не забудьте выставить качество повыше (нажав на шестеренку в плеере) и развернуть на весь экран (или перейдите на сам youtube (http://youtu.be/xWje8yaG-lQ), тогда в плеере появится возможность выбрать размер просмотра побольше). Как всегда, на все вопросы отвечу в комментариях.

--[добавлено 06.02.2014]--

Скрипт обновлен до версии 3:

- Исправлена проблема, при которой не удалялись ретвиты.

- Блок с кнопками управления, вынесен на отдельную панельку, которая теперь размещается до блока с твитами и не ломает верстку.

Twitter Bulk Delete

Twitter Bulk Delete

- Переписан алгоритм интеграции элементов: 4 раза в секунду, проверяется наличие элементов на странице и если их нет, они добавляются. Теперь, панелька не должна пропадать, при обновлении элементов страниц самим твиттером.

- Добавлен русский язык (определяется автоматически по настройкам браузера проверить)

- Скрипт обновлен в посте и на гитхабе

Если у Вас что-то не работает, пишите в комментариях.

--[добавлено 11.06.2014]--

Скрипт обновлен. Последняя версия доступна на github-е: Twitter-Bulk-Delete-Posts-For-GreaseMonkey (https://github.com/orlov0562/Twitter-Bulk-Delete-Posts-For-GreaseMonkey/blob/master/Twitter_bulk_delete.user.js). Из поста скрипт убрал, чтобы было проще его обновлять.

--[добавлено 15.07.2016]--

Всем привет! Если у Вас скрипт не работает, значит в Твитере произошли очередные изменения в структуре страниц. В данный момент, у меня нет возможности следить и поддерживать скрипт в рабочем состоянии, поэтому если не работает - значит не работает 🙂

Если у кого-то имеются навыки и желание продолжить заниматься скриптом, Вы всегда можете форкнуть проект на гитхабе и внести нужные изменения. О своих результатах, можете написать в комментах.

Поддержка скрипта прекращена.

Author: | Rating: 4/5 | Tags: , ,

53 comments.

Write a comment
  1. Ytbpdtcnyj Reply
    02.03.2015 в 4:01 pm
    здравствуйте, у вас в видео greasemonkey версии 1.10, а сейчас уже 2,3. какую использовать?
    и у меня с ней проблемы, она не устанавливается :(
    • Vitaliy Orlov Reply
      02.03.2015 в 4:05 pm
      Привет, ставь 2.3. У меня стоит 2.3 проблем вроде нет. Что именно происходит, когда "не устанавливается"?
  2. Антон Reply
    25.09.2014 в 10:23 pm
    Здравствуйте удалял твиттеры с помощью программы удалились не все теперь они весят а их самих не видно , думал глюк , но нет их просто не видно на сайте так как я нашел свой самый первый твитт , если удалить профиль твитты пропадут с сайта ?
  3. Антон Reply
    21.09.2014 в 11:27 am
    Здравствуйте у меня не получается делаю все как у вас не идет , а еще подскажите а я удалял твитты с помощью сайта онлайн все нормально удалялось ,а потом дошло до 2800 и они пропали , число их отображается а самих их не видно , что можно делать , находил их через программу мой первый твит но там только по одному можно удалять это долго незнаю что делать , а если удалить твиттер полностью они удаляться или так так и будут болтаться на сайте ?
  4. NIk Reply
    26.07.2014 в 7:20 pm
    // ==UserScript==
    // @name Twitter Bulk Delete
    // @namespace Twitter
    // @include https://twitter.com/*
    // @version 3.1
    // @require http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js
    // @grant none
    // ==/UserScript==

    $(document).ready(function()
    {

    var language = window.navigator.userLanguage || window.navigator.language;


    var tbd_translations = {
    'defaults': {
    select_all_weets: "Select All Tweets",
    deselect_retweets: "Deselect Retweets",
    delete_selected_tweets: "Delete Selected Tweets",
    delete_selected_tweets_q:"Delete selected tweets?",
    delete_this_tweet: "delete this ↓ tweet"
    },
    'ru-ru': {
    select_all_weets: "Выбрать все твиты",
    deselect_retweets: "Исключить ретвиты",
    delete_selected_tweets: "Удалить выбранные твиты",
    delete_selected_tweets_q:"Точно удалить выбранные твиты?",
    delete_this_tweet: "удалить этот ↓ твит"
    },
    'ru': {
    select_all_weets: "Выбрать все твиты",
    deselect_retweets: "Исключить ретвиты",
    delete_selected_tweets: "Удалить выбранные твиты",
    delete_selected_tweets_q:"Точно удалить выбранные твиты?",
    delete_this_tweet: "удалить этот ↓ твит"
    }
    };

    var tbd_l = tbd_translations[language.toLowerCase()]
    ? tbd_translations[language.toLowerCase()]
    : tbd_translations.defaults;

    setInterval(function(){

    $('.js-stream-item').each(function() {

    if ($(this).find('.ProfileCard').length) return;

    if (!$(this).find('.ch_del_tweets').length)
    {
    var tweet_id = $(this).find('.js-stream-tweet').attr('data-tweet-id');
    var tweet_type = $(this).find('.js-stream-tweet a.undo-retweet:visible').length>0 ? 'retweet' : 'tweet';
    var html ='';
    html += '';
    html += '';
    html += ' ';
    html += '';
    html += '';
    html += tbd_l.delete_this_tweet;
    html += '';
    html += '';
    $(this).prepend(html);
    }

    });

    if ( ! $('#tbd-manage-panel').is(':visible') )
    {
    var html ='';
    html +='';
    html +='';
    html +='';
    html +='';
    html +='';

    $(html).insertBefore('.ProfileHeading');
    }

    var click_event_obj = $('#func_select_all_tweets');
    if (click_event_obj.length>0 && (!click_event_obj.data('events') || !click_event_obj.data('events').click))
    {
    click_event_obj.click(function(){
    $('input.ch_del_tweets').attr('checked','checked');
    });
    }

    var click_event_obj = $('#func_deselect_retweets');
    if (click_event_obj.length>0 && (!click_event_obj.data('events') || !click_event_obj.data('events').click))
    {
    click_event_obj.click(function(){
    $('.retweeted:visible').each(function(){
    $(this).parent().find('.ch_del_tweets').attr('checked','');
    });
    });
    }

    var click_event_obj = $('#func_del_tweets');
    if (click_event_obj.length>0 && (!click_event_obj.data('events') || !click_event_obj.data('events').click))
    {
    click_event_obj.click(function(){
    if (!confirm(tbd_l.delete_selected_tweets_q)) return false;

    var tweet_authenticity_token = $('input.authenticity_token').val();

    $('input.ch_del_tweets:checked').each(function(){
    var action_url = 'https://twitter.com/i/tweet/destroy';
    if ($(this).attr('tweet_type')=='retweet')
    {
    action_url = 'https://twitter.com/i/tweet/unretweet';
    }

    var tweet_id = $(this).attr('tweet_id');
    $.ajax({
    type: 'POST',
    url: action_url,
    data: {
    _method:'DELETE',
    authenticity_token: tweet_authenticity_token,
    id: tweet_id
    },
    success: function(){
    $('#stream-item-tweet-'+tweet_id).slideUp('fast', function(){
    $('#stream-item-tweet-'+tweet_id).html('')
    });

    },
    });

    });

    });
    }

    }, 250);

    });
    • Vitaliy Orlov Reply
      27.07.2014 в 6:21 am
      Привет! Да, все верно, этот код.
  5. NIk Reply
    26.07.2014 в 7:19 pm
    а какой код вставлять в браузере?
  6. Артем Reply
    25.07.2014 в 2:30 pm
    у меня взломали твиттер https://twitter.com/spss_ru. сменил пароль, но твиты, созданные ботом или еще кем-то, не удаляются ни с помощью скрипта, ни вручную.
  7. Вадим Reply
    25.06.2014 в 8:00 am
    Виталий - скинь мне мыло на --[потёрто]-- я вышлю скриншоты
    • Vitaliy Orlov Reply
      25.06.2014 в 11:40 am
      Отправил! Спасибо за помощь!
  8. Вадим Reply
    20.06.2014 в 3:41 pm
    Работаю под Мозилой.
    Могу удалить только свои твиты. Но переходя на "Главную" нету панельки и не могу поудалять спамовые твиты и ретвиты. Хотя чек боксы там есть.
    И что я не то сделал? Или они вообще не должны удаляться.
    • Vitaliy Orlov Reply
      21.06.2014 в 6:25 am
      Вадим, этот скрипт должен удалять, только твои твиты. Ситуация для которой он написан:
      1) Кто-то получил доступ к твоему аккаунту
      2) Создал от твоего имени твиты
      3) Ты обнаружил это, и поменял пароль
      4) Теперь ты хочешь удалить "свои" твиты, которые опубликовал злоумышленник от твоего имени.

      Я не большой знаток и фанат твиттера, поэтому не слежу за нововведениями. Могу резюмировать так: если вы вручную можете удалить "плохой" твит/ретвит/новость из своей ленты (например, по щелчку на иконку корзины на нем), то это можно реализовать и в скрипте.

      Чтобы мне было понятно, чего вы хотите пришлите ссылки на скриншоты и описание того как на ваш взгляд это должно работать. Когда будет время, я посмотрю смогу ли такое реализовать.
  9. Игорь Reply
    09.06.2014 в 8:37 am
    Здравствуйте! Не планируется обновление скрипта в связи с изменением оформления твиттера? Не отображается панель с кнопками, хотя чек боксы остались.
    • Vitaliy Orlov Reply
      09.06.2014 в 4:24 pm
      Привет Игорь, спасибо за информацию! Постараюсь проверить и обновить до конца недели.
      • Игорь Reply
        09.06.2014 в 10:39 pm
        Большое спасибо!
        • Vitaliy Orlov Reply
          11.06.2014 в 5:02 pm
          Игорь, скрипт обновлен. Забрать можно отсюда.
          • Игорь
            12.06.2014 в 1:25 pm
            Спасибо большое, все отлично работает!
  10. Александр Reply
    24.02.2014 в 4:35 pm
    Как раз по такой проблеме искал решение. И вот оно!
    Благодарю Виталий за скрипт и наглядную видеоинструкцию!
    • Vitaliy Orlov Reply
      24.02.2014 в 11:02 pm
      Рад, что помог! Спасибо за отзыв :)
  11. Ольга Reply
    21.02.2014 в 10:48 am
    Здравствуйте, Виталий!
    Вы можете мне помочь? У меня на странице не отображаются твиты и ретвиты. Последний раз страница обновилась 18 февраля. Люди видят мои твиты в общей ленте, я их вижу, но на моей странице ничего нет. Что произошло?
    • Vitaliy Orlov Reply
      21.02.2014 в 11:33 am
      Если это после использования моего скрипта, то попробуйте его отключить. Но, я думаю это не от него, т.к. у меня все работает.
      Попробуйте сменить броузер, используйте Firefox, Chrome, Opera или Internet Explorer. Думаю проблема где-то у Вас и связана с какими-то настройками: блокировщиками рекламы или отключенным JavaScript.
      Если все же вы использовали мой скрипт и помогло его отключение, то напишите какой браузер Вы используете и его версию.
      • Tattoo Reply
        14.07.2016 в 1:50 pm
        А на андроиде работает?
        • Vitaliy Orlov Reply
          15.07.2016 в 10:44 am
          Привет, работать будет в любом браузере с greasemonkey. Знаю что FF точно есть для андроида, а волт насчет greasemonkey не в курсе.
          Есть еще одна проблема - я не уверен, что скрипт вообще работает сейчас. Дело в том, что он завязан на структуру элементов страницы, и при некоторых изменениях в дизайне или структуре, ломается.
          Всего скорее, такие изменения довольно просто починить, однако у меня в данный момент, на это нет времени.
  12. NEVa Reply
    04.02.2014 в 8:09 pm
    а у меня ретвиты не удаляются
    я чтото не так делаю?
    • Vitaliy Orlov Reply
      06.02.2014 в 3:30 pm
      Нет, у Вас все в порядке, проблема была связана с обновлением интерфейса twitter-а. Уже все исправил. Спасибо, за уведомление!
  13. Vitaliy Orlov Reply
    28.01.2014 в 8:57 am
    Тополь, вот так заполняешь:

    Название: twitter
    Пространство имен: twitter
    Описание: twitter
    Включение (одно на строку): https://twitter.com/*
    Исключение: [ничего]

    В принципе не особо важно что тут писать, после сохранения скрипта эти значения будут переписаны, на те, что указаны в верху скрипта.

    Потом нажимаешь ОК, откроется редактор, в него надо скопировать текст скрипта.

    Там в посте внизу есть видео, ~ на 2.08, я показываю куда чего вставлять, можешь глянуть там.
  14. Тополь Reply
    27.01.2014 в 6:06 am
    Виталий, помогите, пожалуйста. Установила новый браузер, там все иначе. Кнопку "создать скрипт" с горем пополам нашла, а вот там внутри ничего не могу понять (ну совсем не программист я :) ), там присутствуют следующие ячейки:
    - название
    - пространство имен
    - описание
    - включение (одно на строку) - здесь автоматически уже вписан урл моей страницы в твиттере
    - исключение (одно на строку)
    Так куда вставлять скрипт?:(
  15. Сабака Reply
    21.01.2014 в 3:57 pm
    Спасибо огромное, Виталий! Просто не могу не оставить слова благодарности. Очень понятная инструкция, очень полезный скрипт, всё быстро и с первого раза ^_^
    • Vitaliy Orlov Reply
      21.01.2014 в 4:50 pm
      И вам спасибо за отзыв! Рад, что Вам пригодился мой скриптик!!! :)
  16. Ре4ка Reply
    17.12.2013 в 10:09 pm
    все появилось как у вас,но когда жму удалить выделенное, ничего не происходит и ничего не удаляется в итоге
    • Vitaliy Orlov Reply
      18.12.2013 в 10:19 am
      Только что проверил, у меня работает. Попробуй отметить и удалить 1 твит. Если знаешь что такое FireBug или Консоль разработчика в Chrome, то попробуй глянуть на вкладку Console, возможно там будут ошибки, напиши о них в комменты.

      Если еще у кого-то есть ошибки, отпишите пожалуйста, в комменты.
  17. Катя Reply
    15.11.2013 в 5:53 pm
    Спасибо!!!!!!!
  18. Зеркало Reply
    29.08.2013 в 8:20 pm
    Благодарю!!! 1000 твитов спама как не бывало за 15 минут :)
    • Vitaliy Orlov Reply
      30.08.2013 в 4:59 am
      Пожалуйста, рад что у тебя получилось очистить аккаунт от спама!
  19. kir Reply
    10.08.2013 в 6:22 pm
    Здравствуйте!
    Спасибо за прогу.
    Хорошо бы добавить такую функцию:
    - выбор интервала времени - например "выбрать только 1 августа" или "весь июль" и затем DEL
    • Vitaliy Orlov Reply
      12.08.2013 в 8:34 am
      Привет! Пожалуйста, рад что тебе помог. Когда текущая версия поломается и я буду её исправлять, попробую реализовать предложенный тобой функционал.
  20. Антея Reply
    19.07.2013 в 3:41 pm
    Поясните для непонимающего человека)) Что именно и куда вставлять? весь код - куда? в название? пространство? Совсем в этом не разбираюсь. Спасибо заранее)
    • Vitaliy Orlov Reply
      19.07.2013 в 10:41 pm
      Нужно установить Firefox, потом в него плагин GreaseMonkey, потом в меню выбрать создание скрипта, откроется редактор в который и надо будет вставить скрипт который выше. Записал для тебя видео, посмотри в конце поста или сразу на youtube.
  21. Katiss Reply
    06.06.2013 в 3:42 pm
    Привет!
    Спасибо огромное за скрипт и за подробную инструкцию, у меня хоть и не с первого раза, но все получилось :)
    • Vitaliy Orlov Reply
      06.06.2013 в 4:31 pm
      Пожалуйста! Рад, что Вам помог!
  22. Натик Reply
    12.05.2013 в 5:11 pm
    Скрипт просто замечательный!!! Низкий уклон тебе Vitaliy Orlov за твою работу, так как 2 дня потеряла в поисках программы для удаления всех твитов сразу...а теперь не могу нарадоваться тому, что с помощью твоего скрипта все получилось). Еще раз Спасибо!
    • Vitaliy Orlov Reply
      13.05.2013 в 7:19 am
      Спасибо, Натик. Очень рад, что скрипт тебе помог!
      Сам, в свое время, сильно огорчился от перспективы удалять все вручную, хорошо что получилось автоматизировать :D
  23. Vitaliy Orlov Reply
    15.04.2013 в 11:18 am
    Скрипт обновлен. Добавлена кнопка [Deselect retweets], при нажатии на которую снимаются чекбоксы с твитов, которые были ретвитнуты.

    Так же найдена особенность работы скрипта при которой пропадают кнопки действий (выбрать все твиты, удалить и т.д.). Если они у вас не отображаются, нажмите Ctrl+F5 в броузере. Это связано с тем, что интерфейс твитера использует AJAX и при смене страниц, GreseMonkey не всегда может прицепить кнопки в нужное место. В будущем попробую исправить.
  24. Павел Reply
    05.04.2013 в 10:26 am
    Добрый день! Mac os, поставил плагин, создал скрипт, вставил код, вхожу в твиттер, если селект олл и делит селектед, подтверждаю… и ничего не происходит
    • Vitaliy Orlov Reply
      05.04.2013 в 6:10 pm
      Проверил у себя, работает. К сожалению у меня Windows, возможно есть какая-то разница в сборках FF или GreaseMonkey. На маке нет возможности протестить :( Возможно у Вас установлена виртуальная машина с виндой или есть доступ к такой машинке, если это так, попробуйте сделать тоже самое оттуда.

      Так же попробуйте вручную отметить 1 сообщение (поставить одну галочку) и попробовать его удалить. Если сработает, то возможно проблема в большом кол-ве сообщений. Также, если получится, просьба отписать сюда.

      P.S> Если у кого-то есть похожие проблемы, просьба отписать в комментариях, не забудьте указать вашу операционку и версию броузера.
      • Павел Reply
        14.04.2013 в 3:56 pm
        Виталий! что то наверное сделал в первый раз не так, всё заработало! Спасибо! Отличный скрипт! Если бы ещё добавили функцию как отменить ретвиты (для чистки акка самое то) то было бы просто великолепно!
        • Vitaliy Orlov Reply
          14.04.2013 в 5:35 pm
          Я рад, что помог Вам :D
          Пожелания приняты, постараюсь сделать в следующей версии, либо когда будет свободное время.
  25. Relishan Reply
    03.03.2013 в 11:44 am
    спасибо вам большое за скрипт, вы меня сегодня спасли)
  26. Vitaliy Orlov Reply
    20.01.2013 в 10:30 am
    Скрипт обновлён: изменения верстки на twitter-е.
  27. Алексей Reply
    20.01.2013 в 1:50 am
    Спасибо!
    Полезный скрипт,сегодня заглянул в свой второй аккаунт и был неприятно удивлен - обнаружил там наверно больше тысячи сообщений которые не писал понятно что был взломан.
    Меня интересует пункт - выделить все твиты он выделяет только те которые загрузились на странице или все которые были написаны?
    • Vitaliy Orlov Reply
      20.01.2013 в 10:22 am
      Пожалуйста :) Выделяет только те, что загружены на странице (те что отображаются), но при просмотре твиты подгружаются автоматически, поэтому просто зажимаем кнопку End, страница будет автоматом "перематываться" вниз и будут подгружаться все твиты. Делаем так до тех пор, пока не появятся нормальные (наши) сообщения. Таким образом, можно "отобразить" на странице и 1000 и 2000 сообщений. И соответственно можно будет выбрать их все за раз.
      • Алексей Reply
        21.01.2013 в 1:41 pm
        Понятно,спасибо за ответ,обновимся но надеюсь он больше не пригодится (:
        • Vitaliy Orlov Reply
          21.01.2013 в 1:44 pm
          Пожалуйста :)

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>