И имеет своей целью провести интересное, на взгляд автора, сравнение, представленное далее двумя снимками консоли, иллюстрирующими фолловинг и анфолловинг твиттер-аккаунтов. И первое и второе весьма несложно на основе the Twitter Ruby Gem, a Ruby interface to the Twitter API:
client.follow("gem")
client.unfollow("gem")
На первый взгляд, хотя и приводящие к диаметрально противоположным результатам, но на уровне API принципиально ничем, вероятно, не отличающиеся действия. Хотите взглянуть, как это выглядит на практике, а не в теории, и какой разительный контраст из себя представляет? Схема работы, которой будем придерживаться, очень проста: сортируем на два массива всех фолловеров и всех френдов аккаунта, сравниваем, и в результате получаем третий массив, который: 1. содержит список аккаунтов, читающих наш аккаунт и которые мы пока не читаем, соответственно, их будем фолловить, или: 2. содержит список аккаунтов, которые мы читаем, но которые не читают нас, их мы анфолловим. На данном этапе мы еще худо-бедно, посредством ряда ухищрений, но все-таки справляемся с лимитами Твиттера, которые уже весьма ощутимо дают о себе знать; это если twitter-аккаунт у нас более-менее раскрученный, и насчитывает хотя бы тысяч пятнадцать или двадцать последователей. А вот затем начинается уже самое интересное, взгляните: итак, получили мы с вами фолловеров и фолловингов (фолловинг — синоним френдинга, в терминологии Рунета), сформировали массив твиттер-аккаунтов для дальнейших действий, и... видим что Twitter API, через посредство которого мы работаем, дает нам возможность зафолловить (даже в ответ) всего лишь несколько акков, после чего неизбежно следует таймаут, на время которого приходится "спасать" наш rails-app, дабы он не завершил работу:
rescue Twitter::Error::TooManyRequests
А теперь попробуем запустить, согласно изложенному выше алгоритму действий, вместо фолловинга - анфолловинг, есть некоторая надежда, что Его Величество Твиттер отнесется к этому чуть более благосклонно... хм, взгляните на следующий снимок. Надежды были не напрасны: Твиттеру, походу, вообще пофиг, кого там и сколько мы анфолловим. На здоровье: