Консольное приложение, выводящее на экран поток твитов по заданным условиям.
java TwitterStream \
[--query|-q <query or keywords for stream>] \
[--place|-p <location|'nearby'>] \
[--stream|-s] \
[--hideRetweets] \
[--limit|-l <tweets>] \
[--help|-h]###Параметры
- place - искать по заданному региону (например, "долгопрудный", "москва", "татарстан"). Так как в апи нет буквально таких методов. Можно сделать поиск мест по запросу Twitter.searchPlaces(). Для Twitter.search использовать среднее арифметическое широты и долготы Place.getBoundingBoxCoordinates() и радиус как половину максимального расстояния между точками. Для TwitterStream.filter использовать прямоугольник из максимальных координат из Place.getBoundingBoxCoordinates() Кажется, грубо, но должно сработать. Кто нашёл другое апи для геокодинга - отлично. (доп. опция на 10ку)
nearby - определить регион по ip (доп. опция на 10ку)
- stream - если параметр задан, то приложение должно равномерно и непрерывно с задержкой в 1 секунду печать твиты на экран.
- hideRetweets - если параметр задан, нужно фильтровать ретвиты
- limit - выводить только твитов. Не применимо для --stream режима
- help - печатает справку. Например, этот файл с заданием или краткую справку. С хорошим форматированием
Параметры могут идти в произвольном порядке. У некоторых параметров есть сокращённая форма записи.
###Формат вывода:
Твиты по запросу <query> для <location>:
----------------------------------------------------------------------------------------
[<tweet_time>] @<nick1>: <text1> (<retweets count> ретвитов) <-- hide this if not retweeted
----------------------------------------------------------------------------------------
[<retweet_time>] @<nick2>: ретвитнул @<another_nick>: <text> <-- if this is retweet
----------------------------------------------------------------------------------------
- В случае ошибок соединения приложение должно выводить диагностику в stderr и переподключаться.
- Никаких ошибок в stdout быть не должно.
- Если по запросу не найдено ни одного твита - нужно вывести соответствующее сообщение в stdout.
- Время в --stream режиме не показывать
- Время должно быть в формате:
- Только что - если менее 2х минут назад
- n минут назад - если менее часа назад, n - цифрами
- n часов назад - если более часа, но сегодня. n - цифрами
- вчера - если вчера, n - цифрами
- n дней назад - в остальных случаях, n - цифрами
- дни, минуты и часы нужно склонять по правилам русского языка (доп. опция на 10ку)
- Получите доступ к апи через OAuth: https://apps.twitter.com. Нужен аккаунт в твиттере с привязанным номером мобильного.
- Используйте готовый клиент twitter4j, если не хочется писать свой
- Не комитьте файл twitter4j.properties, я не хочу видеть ваши ключи. Добавьте его в .gitignore в своём модуле.
- Можно использовать jCommander для обработки аргументов командной строки.
- Обрабатывайте исключения корректно и выводите человекопонятную диагностику на экран.
- Проверяйте приложение перед сдачей: что оно работает и работает правильно.
- Если захотите подключить ещё какие-либо библиотеки - сначала спросите, решим, действительно ли они нужны.