Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

Twitter-инструментарий на Ruby on Rails

Показанный далее class представляет из себя не более чем концепт идеи, задумку набора инструментов для работы в Twitter, написанный аффтором - или, лучше сказать, набросанный - как приложение Ruby on Rails на основе gem 'twitter'.

 

 

 

Рабочий пример описанного в статье кода, в числе других Rails Examples - всегда возможно найти в тестовом блоге автора на herokuapp.com, welcome.

 

Класс полностью работоспособен, вы можете попробовать самостоятельно, клонировав rails-app с GitHub автора; ну или же попросту примите на веру показанный выше скринкаст. Если идея вас заинтересовала - вы можете попробовать это форкнуть, заодно причесать и сделать логику несколько более аккуратной. Увы, после очередного закручивания гаек своего API зловредным Твиттером не вижу особого смысла в продолжении работы над данным проектом. По секрету скажу, что бдительные модераторы Twitter, испросив ссылки на демки (да, теперь вот так), моментально отказали мне в девелоперском доступе даже к одному-единственному тви-аккаунту, токены которого я запрашивал; что заведомо вселяет немалые сомнения в рентабельности дальнейшей разработки. Жаль, конечно, проект обещал быть интересным и востребованным... ну, что же; в свете текущих событий, политических и не очень... нелепо было бы обижаться на сотрудников Twitter, бегущих сегодня как огня не только ботов, но и вообще любых попыток автоматизации действий пользователя в своей соц. сети. Повторюсь, их право.

 

Увидеть на гитхабе.

 

Когда приложение в режиме твиттер-бота начинает ретвитить найденные по заданным хештегам твиты, довольно быстро приходим к:

ActionDispatch::Cookies::CookieOverflow in TweetsController#index

, в качестве же решения проблемы использован - и, по-видимому, вполне успешно - gem 'activerecord-session_store'; не забывайте однако, при необходимости (или время от времени):

db:sessions:trim

подробнее - на страничке Active Record Session Store на гитхабе.

 

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

 

class FollowJob < ApplicationJob
  queue_as :default

  def perform(*args)
    client = twi_client(args[0])
    list = follow(args[0])
    begin
      list.take(100).each do |user|
        client.follow(user.id)
        list.delete(user)
        puts "follow: #{user.screen_name} #{Time.now}"
        sleep rand(30..60)
      end
    rescue Twitter::Error::TooManyRequests,
           Twitter::Error::Forbidden,
           OpenSSL::SSL::SSLError,
           Twitter::Error::ServiceUnavailable,
           HTTP::Error
      []
      puts "rescue Twitter::Error #{Time.now}"
      sleep 905
      retry
    end
  end
end

 

Тем не менее, в качестве "домашнего" (open source и полностью бесплатно) "средства ухода" за своим тви-акком - приложение вполне имеет право на существование: как видите, в полностью автоматическом режиме вычисляются идентификаторы аккаунтов, которые далее фолловятся и анфолловятся, также приложение умеет искать твиты по заданным хеш-тегам - одному или нескольким - и ретвитить; также реализован постинг твитов (каждый твит с новой строчки) через рандомные промежутки времени. Разумеется, приложение способно не только хранить любое число аккаунтов для входа и токены доступа для любого количества твиттер-аккаунтов, но и легко переключаться между ними; что на данный момент представляется мне уже, к сожалению, избыточностью.

Оставить комментарий

Добавьте ваш комментарий