Skip to content

Latest commit

 

History

History
61 lines (52 loc) · 4.96 KB

File metadata and controls

61 lines (52 loc) · 4.96 KB

TwitterStream

Консольное приложение, выводящее на экран поток твитов по заданным условиям.

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ку)

Рекомендации:

  1. Получите доступ к апи через OAuth: https://apps.twitter.com. Нужен аккаунт в твиттере с привязанным номером мобильного.
  2. Используйте готовый клиент twitter4j, если не хочется писать свой
  3. Не комитьте файл twitter4j.properties, я не хочу видеть ваши ключи. Добавьте его в .gitignore в своём модуле.
  4. Можно использовать jCommander для обработки аргументов командной строки.
  5. Обрабатывайте исключения корректно и выводите человекопонятную диагностику на экран.
  6. Проверяйте приложение перед сдачей: что оно работает и работает правильно.
  7. Если захотите подключить ещё какие-либо библиотеки - сначала спросите, решим, действительно ли они нужны.