Класс полностью работоспособен, вы можете попробовать самостоятельно, клонировав rails-app с GitHub автора; ну или же попросту примите на веру показанный выше скринкаст. Если идея вас заинтересовала - вы можете попробовать это форкнуть, заодно причесать и сделать логику несколько более аккуратной. Увы, после очередного закручивания гаек своего API зловредным Твиттером не вижу особого смысла в продолжении работы над данным проектом. По секрету скажу, что бдительные модераторы Twitter, испросив ссылки на демки (да, теперь вот так), моментально отказали мне в девелоперском доступе даже к одному-единственному тви-аккаунту, токены которого я запрашивал; что заведомо вселяет немалые сомнения в рентабельности дальнейшей разработки. Жаль, конечно, проект обещал быть интересным и востребованным... ну, что же; в свете текущих событий, политических и не очень... нелепо было бы обижаться на сотрудников Twitter, бегущих сегодня как огня не только ботов, но и вообще любых попыток автоматизации действий пользователя в своей соц. сети. Повторюсь, их право.
Когда приложение в режиме твиттер-бота начинает ретвитить найденные по заданным хештегам твиты, довольно быстро приходим к:
ActionDispatch::Cookies::CookieOverflow in TweetsController#index
, в качестве же решения проблемы использован - и, по-видимому, вполне успешно - gem 'activerecord-session_store'; не забывайте однако, при необходимости (или время от времени):
db:sessions:trim
подробнее - на страничке Active Record Session Store на гитхабе.
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 и полностью бесплатно) "средства ухода" за своим тви-акком - приложение вполне имеет право на существование: как видите, в полностью автоматическом режиме вычисляются идентификаторы аккаунтов, которые далее фолловятся и анфолловятся, также приложение умеет искать твиты по заданным хеш-тегам - одному или нескольким - и ретвитить; также реализован постинг твитов (каждый твит с новой строчки) через рандомные промежутки времени. Разумеется, приложение способно не только хранить любое число аккаунтов для входа и токены доступа для любого количества твиттер-аккаунтов, но и легко переключаться между ними; что на данный момент представляется мне уже, к сожалению, избыточностью.