Требуется на Python'е написать библиотечку для поиска в Twitter, используя Twitter API. Предполагается три функции:
* Поиск
1) Входной параметр набор поисковых строк.
2) По ним раз в 30 секунд делается поиск средствами Twitter API.
3) В полученных сообщениях находятся ссылки.
4) Все ссылки проверяются на редирект, если он есть, доходим до оригинального URL'а.
5) По доменам ссылок делаются whois-запросы, результат передается в функцию, которая возвращает true/false
(саму функцию писать не надо).
6) Если вернула true, сообщение принимается, если false отбрасывается.
7) Результат сохраняется в memcache (не в базу этого не требуется).
8) Сохраняются также: Twitter ID, URL исходной записи, username, unix timestamp.
9) Сообщения сохраняются в двух форматах plain text и html. Plain text это оригинальное сообщение, все ссылки раскрыты после редиректов.
В html прописываются ссылки на #хэштеги, @пользователей и http:// пример см. ниже.
10) Если в кэше больше Х записей, самые старые удаляются. Х настроечный параметр, ориентировочно 50-80 записей на один запрос.
Функция не должна анализировать одни и те же сообщения несколько раз подряд, т.к. редиректы и whois достаточно затратные по времени операции.
* Выдача JSON
1) Входные параметры строка запроса (одна из того набора, см. п.1 в Поиске), ID сообщения или число сообщений.
2) Если задан ID, возвращается JSON с сообщениями, ID которых больше указанного.
3) Если задано число сообщений, возвращается JSON с последними сообщениями, числом не более указанного.
Пример JSON:
{ "query" : "from:irknews",
"results" : [
{ 'id' : '187473675711283200',
'timestamp' : '1333555821',
'username' : 'irknews',
'html' : 'Дни защиты от экологической опасности пройдут в Иркутске <a href="
t.co/XXTMCEoA">i350.ru/ne... <a class="hashtag" title="#irkutsk" href="
twitter.com/search?q=%23i... },
{ .... }
]}
* Retweet
После сохранения сообщения в memcache оно постится обратно в Твиттер как ретвит. Имя аккаунта, от которого идет постинг, задается в константах.
Текст сообщения в формате plain text, ссылки раскрыты после редиректов, в начале добавляется RT @username.
Пример: RT @irknews Дни защиты от экологической опасности пройдут в Иркутске
www.irkutsk-350.ru/news/c... #irkutsk
Для работы с Твиттером рекомендуется tweepy, whois-запросы через pywhois или аналог, остальные библиотеки на усмотрение.
Ваши оценки времени и стоимости пишите в комментариях.