×
jWeather By IP. Weather from ip for Joomla! (20 апр 2019)

Новая версия погодного модуля-виджета доступна для загрузки и обновления.

Идея Раскрутка твиттер-аккаунтов. Фолловинг, анфолловинг, другие инструменты

Больше
5 мес. 2 нед. назад - 5 мес. 2 нед. назад #1 от Aleksej
Минутка социальной рекламы. ;)

Увлекла идея сооружения универсального promotion-комбайна для Твиттера: некая альтернатива проекту Леонида Кофмана Твидиум, сошедшему, увы, с дистанции. Сразу подчеркну, что софтина пребывает в фазе активной разработки по ночам, или когда у конгениального разработчика есть на нее время: код рефакторится, дописывается и перманентно меняется, так что description и видеоролики, чаще всего, далеко отстают от функционала. Проект на данный момент некоммерческий, это open source в чистом своем виде. Ссылка ведет на гитхаб, откуда всегда можно без проблем клонировать актуальную версию написанного на ruby твиттер-инструментария, рабочее название Twitter Toolkit onRails. Повторюсь для любителей MS Windows: никаких shareware, урезанных по функционалу версий, также вшитой хрени по типу "дайте денег на кофе аффтору, вынужденному с похмелья пить зеленый чай" в природе нет и не предвидится; качать для того, чтобы выложить на torrent-трекерах смысла также ни малейшего.

Примечание. Материал Twitter-инструментарий на Ruby on Rails содержит видео, иллюстрирующее работу приложения, видео уже очень неновое; - добавил, со времени его создания, в частности, эффектные flash-мессаджи на бутстрапе и ряд функций, возвращающих аяксом результат вызова. О чем далее.

По функционалу:

1,2. На момент публикации этого материала Twitter Toolkit onRails поддерживает взаимный фолловинг в двух режимах: полностью автоматический (небыстрый, т.к. API Twitter что есть силы тормозит такого рода действия, особенно для раскрученных старых аккаунтов, насчитывающих десятки тысяч последователей/читателей), и полуавтоматический режим: после запуска и обработки данных API для вашего твиттер-аккаунта программа формирует ряд ссылок на твиттерян, читающих вас, но не читаемых вами; вам только что и надо - кликнуть по ссылке и далее нажать кнопку "читать". По умолчанию выводится двадцать линков, что крайне несложно увеличить в скриптах приложения; правда, автор очень не рекомендует этим увлекаться, т.к. отрицательная реакция Твиттера, во всю дурь борющегося сегодня с массфолловингом и заодно с пресловутыми русскими хакерами/троллями, уж поверьте, не заставит себя ждать. For example, на скрине пример фолловинга в автоматическом режиме на одном из моих аккаунтов, насчитывающим полтора десятка тысяч читателей; вы видите, что программа вынуждена пережидать каждые 15 минут, чтобы ответно "зафолловить" очередных нескольких френдов, и затем снова уходит в rescue... и это еще довольно быстро. Впрочем, с молодыми аккаунтами все вроде бы немного проще.





Далее, по функциям:

3. Разумеется, анфолловинг (отписаться от тех, кто не читает вас) в полностью автоматическом режиме: в этом плане никаких ограничений Твиттер не определяет, анфолловьте хоть тысячу акков за раз:





4. Ретвит-бот. Крайне полезная фича: задаем в настройках приложения тег - один или несколько, разделенные запятыми - и запускаем работу программы всего одним нажатием кнопки (пользовательский интерфейс приложения на данный момент крайне незамысловат, хотя и построен на bootstrap и ajax-e; планирую для пущего эффекта добавить стили в ближайшем будущем): в течение пятнадцати-двадцати минут (количество ретвитов и, соответственно, время работы бота, опять же, очень несложно увеличить, причем его величество Твиттер на этот раз окажется несколько более благосклонен к вам, чем при разнообразных попытках активного масфолловинга) ваш аккаунт полностью "на автомате" будет искать и ретвитить твиты по заданным тегам. Что, исходя из опыта, активно стимулирует интерес к вашему твиттер-аккаунту потенциальных его читателей, коих сразу следует резкий приток. После окончания работы нелишне проглядеть ретвиты на предмет "наличия отсутствия" возможности возбуждения против владельца твиттер-аккаунта уголовного дела в контексте закоренелого его экстремизьма; хотя это и маловероятно, Твиттер ведь не ВКонтакте... но мало ли, что там боту из твитов попадется. Да и простая вежливость по отношению к твиттерянам велит хотя бы краем глаза пробежать, что же именно ваш аккаунт от вашего имени ретвитит. Работа ретвит-бота проиллюстрирована, в частности, коротким видеоскринкастом (см. линк в начале статьи); к слову, моего коллегу неслабо позабавил использованный при этом (сугубо в демонстрационных целях!) тег.

5,6. Программа позволяет "спарсить" как ники (screen_name) читателей, так и последние твиты абсолютно любого, по вашему выбору, твиттер-аккаунта. Причем вывод аяксом идет как на веб-страничку приложения, так и - одновременно - в csv-файл.

7. Автопостинг (отложенный постинг). Опция позволяет, введя в текстовое поле ряд произвольных твитов (любое их количество - 10, 20, 100, сколько хотите) - занять свой аккаунт работой в течение любого временного отрезка. Через рандомные (разные, случайные) промежутки времени ваш аккаунт будет "на автомате" выстреливать в эфир Твиттера ваши сообщения. Это также весьма удобно, особенно в сочетании с функцией парсинга: например, выкачал из CNN актуальный новостной ряд, либо с anekdotru ряд приколов, и тут же скопипастил полученное - в текстовое поле функции отложенного постинга, теперь жмем "начать" - и готово, поехали. Также весьма стимулирует подписчиков, которых затем фолловим, используя один из двух вариантов ранее описанной функции following.

Важные примечания:

Twitter Toolkit onRails реализован полностью в рамках API Twitter, являясь, по сути, его клиентской частью. Иных способов работы прога элементарно не предусматривает; таким образом, инструментарий не содержит ничего, противоречащего правилам Твиттера.

Алгоритмы программы использует в работе токены доступа: consumer_key, consumer_secret, access_token, access_token_secret. Любой твиттерянин имеет право испросить эти данные в разделе "для девелоперов" своего аккаунта; все заявки проходят ручную модерацию, если правильно сформулируете запрос - в течение двух недель вы получите у Твиттера полностью бесплатный доступ к святая святых: к API Твиттера.

Работа с программой и все вышеописанные функции не требует, таким образом, ввода пароля к вашему твиттер-аккаунту, также совершенно без надобности его, аккаунта, название. В этом ряд преимуществ для особо недоверчивых: если предположить невозможное, что прога передает коварному автору/хакеру какие-то сведения - использовать полученную информацию он, при всем его врожденном коварстве, навряд ли сумеет. Упоминаю об этом только шутки ради: весь программный код приложения полностью на GitHub открыт и прозрачен, никаких злонамеренных вставок, таким образом, иметь не может.

И последнее, опять-таки для любителей проприетарной системы Windows. Описываемая программа никоим образом не является виндоус-приложением! Изначально задумывалась она как веб-приложение, вполне возможно, к этому и вернется со временем... на данный момент ничто не мешает Twitter Toolkit onRails работать на вашем домашнем компьютере, под Windows, Mac или Linux, в качестве ruby on rails приложения.
Последнее редактирование: 5 мес. 2 нед. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 мес. 1 нед. назад - 5 мес. 1 нед. назад #2 от Aleksej
Продолжаем.

До сей поры занимался в основном логикой работы Twitter Toolkit, причесать интерфейс только еще собираюсь. На случай, если кто-то захочет потестить, опишу ряд моментов, во избежание недопонимания. И заодно объясню технические названия функций выпадающего списка.

Создав впервые аккаунт в проге (все сугубо локально, никаких внешних привязок, регтесь хоть под Биллом Гейтсом) и залогинившись - необходимо создать как минимум один (или любое количество) аккаунт доступа уже к тви-аккаунту, содержащий ключи/токены, полученные в разделе "для девелоперов" Твиттера. После этого выбираем в gropdown-списке аккаунт, с которым работаем (многопоточная работа на данный момент не поддерживается, это потребовало бы прокси-серверов, оставим "на потом") и соответствующий экшен во втором dropdown-списке.

1,2. follow, unfollow - думаю, понятно без комментариев: работа приложения полностью в автоматическом режиме. Если twi-аккаунт у вас раскрученный и насчитывает немалое количество последователей - все пойдет значительно медленнее, чем на скринкасте (ссылка в начале топика); прежде всего - на этапе, показанном далее, прога, как вам вполне может показаться, замрет на несколько минут:





На самом деле все это время программа деятельно работает, вытаскивая небольшими порциями посредством API Twitter фолловеров аккаунта; затем, на этапе добавления в массив, вы увидите это в консоли: "adding follower to an array:блаблабла". Затем снова пауза: вытаскиваем френдов, и снова концовку этапа можно наблюдать в консоли. Далее прога сравнит два массива и создаст на их основе третий: перечень аккаунтов, которые необходимо фолловить/анфолловить. На скринкасте мелькают идентификаторы аккаунтов, но актуальная версия софтины показывает уже ники (screen_name, как на скриншоте далее), для наглядности.

Остановка процесса интерфейсом не предусмотрена: намереваюсь реализовать это на уровне менеджера очередей, так будет правильнее. Если Twitter Toolkit сразу после начала фолловинга в автоматическом режиме получает от Твиттера отлуп (и вынужден сразу уйти в rescue, такое бывает, и нередко, особенно если ранее переборщить с фолловингом) - процесс тут же завершается, так как работать далее в этот раз уже нет смысла. Если же Твиттер позволяет работать - фолловинг идет до тех пор, пока это возможно и пока не придет отлуп; два раза подряд полученное от Твиттера предупреждение о превышении лимита означают остановку работы приложения, при этом кнопка запуска вновь станет активной:





Если необходимо почему-либо аварийно завершить работу приложения, в линуксе это возможно сделать вот так:

alex@linux-1fj7:~> lsof -wni tcp:3000
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ruby.ruby 5139 alex   11u  IPv4 113705      0t0  TCP 127.0.0.1:hbci (LISTEN)
alex@linux-1fj7:~> kill -9 5139


и на винде что-нибудь аналогичное.

3. follow-hands Фолловинг в полуавтоматическом режиме. Начало аналогично вышеописанному, используются те же самые методы класса, но затем на страничку будут выведены 20 линков (target="_blank") для ручного взаимного фолловинга:





4. acc-parsering Парсинг читателей любого тви-аккаунта (указывать можно без собачки). Выводится как на страничку, так и в csv файл в корне приложения. Несложно было бы, конечно, используя те же самые рабочие функции приложения - реализовать фолловинг по полученному таким образом массиву. Но не уверен, что это нужно, с учетом лимитов и прочих нововведений Твиттера; впрочем, посмотрим.

5,6. parsering Указываем в текстовом поле название любого аккаунта и парсим из него последние твиты; на страничку и одновременно в csv. На страничку они уже выводятся в том виде, чтоб было можно сразу скопипастить и вставить (Ctrl+A, Ctrl+C, Ctrl+V) в тот же самый textarea, выбрав при этом из списка опцию posting:





7. retweeting Ну, тоже понятно. Через запятую пишем в текстовом поле теги, предваряя каждый решеткой. И вперед:





Вот как-то так пока что.
Последнее редактирование: 5 мес. 1 нед. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
4 мес. 3 нед. назад #3 от Aleksej
Новогоднее обновление Twitter Toolkit onRails.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 мес. 3 нед. назад - 2 мес. 3 нед. назад #4 от Aleksej
Почерпнуто на SO.
Как оптимально избавиться от case в контроллере? Garrett Motzner, пожалуй, предлагает один из самых элегантных вариантов:

This is fairly readable, and works for most cases.
However, if you want to move this logic out of the controller entirely, you could do so with a routing constraint :

# you can create a constraint object to perform the match
ParamMatchContraint = Struct.new(:parameter, :expected_value) do
  def matches?(request)
    request.params[parameter] == expected_value
  end
end

Rails.application.routes.draw do
  resources :targets do
    root constraints: lambda {|request| pp(request).params[:select_action] == 'one'}, action: :one # a lambda will work as well as a constraint class
    root constraints: ParamMatchContraint.new(:select_ation, 'two'), action: :two
  end
  ...
end


Note though that this is an "opt in" constraint, and anything that doesn't match will fall through to the index action.

This is also a fairly novel thing to do, so newbies to the project could easily get tripped up by this. However, it very well could be the best way to accomplish your task. What you get from this method is that filters using only and except can specify your custom actions, and you can use the default conventions for specifying views based on action name with out having to manually specify a view file.


Есть ли смысл воспользоваться этим решением применительно к моему контроллеру? Хм, нужно подумать...
Последнее редактирование: 2 мес. 3 нед. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
2 мес. 3 нед. назад #5 от Aleksej
Продолжаем размышлять дальше.

Как сделать работу приложения многопоточной? иными словами, чтобы выбранный экшн выполнялся одновременно в двух и более (про прокси - это чуть позже) Твиттер-аккаунтах?
Можно было бы элементарно сделать вот так, добавив в select вьюхи multiple: передаем аяксом не одно, а несколько названий групп токенов доступа, подхватываем в контроллере из params, пробегаем итератором и тут же запускаем тред:

module Main
    extend ActiveSupport::Concern
    def index
        
        if params[:select].present?
        params[:select].each do |item|
        
        Thread.new {
           tweet = current_user.tweet.detect {
            |t| item == t.name
        } 
            
           config = {
# etc

Но, увы, самое простое решение не всегда самое оптимальное... впрочем, почему б не попробовать.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.