Вы скорее всего подумаете: "Зачем десктопная программа, если можно, как минимум, загуглить?". А затем, что моя программа автоматически "гуглит" за тебя! Причём не только по одному ключевому слову, а по нескольким, которые вы, само собой, можете редактировать. А результат поиска будет направлен на указанную почту, исключая ранее направленные результаты.

Делал её для себя в рамках моего самообучения языку Java и чтобы не пропускать все новости, касающиеся ипотеки, выплат и т.д. (моя жена - инвестор - мониторит интересующие её фирмы, дивиденды и т.д. в этом духе). Теперь хочу поделиться ею с общественностью, т.к. польза на лицо, а я не меркантильный. Да и Ленин завещал делиться! :))

Для работы приложения на ПК должна быть установлена Java. Здесь можно посмотреть код или предложить доработки по нему github. Актуальная версии программы news.jar

Интерфейс (крайний вариант) выглядит так (пример - поиск по слову "росси" за последние 8 часов по всем источникам кроме ММВБ, с целью найти все новости где указана Россия + анализ частоты употребления слов в заголовках новостей посредством SQLite):

Благодаря совету из комментариев, я попробовал темы из FlatLaf.

Краткий туториал

Вот так указываем в pom.xml (если используете Maven для сборки проекта..или же качайте сам jar и подключайте как библиотеку).

Вся информация здесь - FlatLaf.

<dependency>
  <groupId>com.formdev</groupId>
  <artifactId>flatlaf</artifactId>
  <version>1.6.5</version>
</dependency>

//Дополнительные темы:
<dependency>
  <groupId>com.formdev</groupId>
  <artifactId>flatlaf-intellij-themes</artifactId>
  <version>1.6.5</version>
</dependency>

В методе main вызываем перед созданием фрейма:

FlatLightLaf.setup();
//new Gui();

Остановился на этой теме (действительно интерфейс становится более интересным)

тема FlatLightLaf
тема FlatLightLaf

Поиск ведётся по всем источникам, которые я ранее указал в базе данных (их можно удалять или деактивировать, как ММВБ, к примеру). Посмотреть их можно, нажав на зелёный квадратик (добавлять источники можно по соседней кнопке):

В общем возможностей много:
  • поиск по ключевым словам

  • вызов jar с параметрами в crontab на сервере с авто отправкой результатов на почту

  • отправка результата поиска на электронную почту (+ возможность выбора автоматической отправки результатов после каждого поиска)

  • экспорт результатов поиска в Excel

  • двойной щелчок по новости открывает веб-страницу новости

  • дополнительный поиск по ключевым словам. Слова можно удалять, а вместо них добавлять новые (без ограничений)

  • анализ употребления слов в заголовках новостей с использованием базы данных SQLite

  • с помощью флажков вы можете выбрать, где искать ключевое слово: в заголовке или в ссылке на новость

  • отображение журнала работы программы

  • при закрытии программы сохраняются все установленные чекбоксы, адрес электронной почты, ключевые слова и интервал поиска

  • автоматическое обновление данных для основного поиска или поиска по ключевым словам каждые 60 секунд

  • возможность работы в базе SQLite

  • возможность добавления нового источника для поиска (а также их деактивация или удаление)

  • возможность просмотра папки с файлами программы

  • возможность исключить ненужные слова из таблицы анализа (и удалить их из исключенных ранее)

Работа программы выглядит примерно так (интерфейс чуть старый):

То ради чего всё делалось находится в нижней части интерфейса:

Здесь я указываю все нужные мне ключевые слова и получаю по ним все новости нажатием одной кнопки! Данная автоматика экономит много времени.

Также, я сделал так, что сам jar можно выложить на сервер где установлен Linux и указать команду в Сrontab для круглосуточного вызова программы. Ни одна новость не будет упущена! Вот команда, которую указывал я (параметр № 1 - адресат, 2 - интервал (момент вызова минус 1440 минут (сутки), далее ключевые слова. Т.е. каждый день в 10:30 утра я получал все новости за сутки по указанным словам + записывал их в лог):

30 10 * * * java -jar /home/dchernyavskij/news.jar rps_project@mail.ru 1440 выплат ипотек рефинанс штраф налог > /home/dchernyavskij/news.log

В Windows при вызове данной команды в PowerShell:
java -jar .\news.jar rps_project@mail.ru 180 москв хлеб балаших

процесс поиска и отправки новостей выглядит так

На почту новости приходят в таком виде:

В общем дерзайте! Кому пригодится - пишите!

Также будет интересно почитать Ваши комментарии.

Даёшь Open source!

Комментарии (21)


  1. stranger777
    15.12.2021 14:42
    +2

    Пока что эта программа заменяется зрелыми клиентами, например QuiteRSS, но чувствуется, что QRSS может умереть в плане поддержки. RSSOwl — на Java. Но там не хватает адекватной чистки новостей.

    Прочие клиенты страшно тяжёлые и не заточены под условного технаря, которому нужно полноценное информационное поле, а здесь есть этот потенциал после множества переосмыслений. Третьи вообще совсем мелкие поделки, четвёртые — веб, что далеко не всегда удобно. И т. д.

    Короче говоря — не останавливайтесь. Буду рад лет через несколько увидеть клиент с хорошо заточенными фильтрами и аккуратной работой именно с поиском. Такие штуки востребованы среди тех, кто плотно работает с новостями.


    1. mrprogre Автор
      15.12.2021 14:50

      Спасибо за отзыв, буду доводить до ума дальше! Но этот инструмент мне уже реально помогает не упустить нужные новости! Поэтому делюсь!


  1. alexxxst
    15.12.2021 14:44

    Осталось лишь пароль к ящику, с которого уходит почта, убрать из кода, отвязаться от винды и много чего ещё...) ужас)


    1. mrprogre Автор
      15.12.2021 14:48
      +1

      А как убрать пароль? Я его завуалировал как мог, но понимаю, что так нельзя! В Линуксе через crontab запускается и ищет новости без GUI


      1. alexxxst
        15.12.2021 15:34
        +1

        Лучше не буду писать даже, а то уже три минуса в карму прилетело)) но с почтой надо что-то делать, особенно, если этот ящик ещё где-то используется (гугло-аккаунт).


        1. mrprogre Автор
          15.12.2021 15:36

          Напиши пожалуйста! Давно этим вопросом мучаюсь! Поставлю плюсик :)


          1. Filex
            15.12.2021 16:21
            +1

            Интересно тоже, как правильно прятать/хранить пароли


            1. mrprogre Автор
              15.12.2021 16:43

              Я придумал проще, но тут надо будет от почты плясать в плане настроек. Я сам себе отправляю письмо с mail.ru, а у них можно для приложения создать отдельный пароль от личного в аккаунте именно для своего приложения! Т.е. просто летит письмо самому себе, а пароль читается из файла конфига приложения!


              1. Filex
                15.12.2021 16:49
                +2

                Я бы создал отдельный файл конфигов, откуда будут читаться настройки (email, логин, пароль) и в git его заливал пустым.


                1. mrprogre Автор
                  15.12.2021 16:56
                  +1

                  Да, я так и решил сделать :) спасибо!


        1. mrprogre Автор
          15.12.2021 16:16

          Пароль на почте поменял, на всякий случай :) спасибо за этот совет!


        1. mrprogre Автор
          15.12.2021 16:20

          О, я придумал.. когда пользователь укажет свою почту куда отправлять, с неё же и будет отправляться как "отправить себе", а пароль укажет в файле конфига у себя на компьютере.. вот, вроде безопасно! Хотя может и велосипед придумываю..


  1. pmcode
    15.12.2021 15:15

    Какой же страшный у вас UI получился. FlatLaF не рассматривали?


    1. aleksandy
      15.12.2021 15:20

      JavaFX надо, вместо swing.


      1. mrprogre Автор
        15.12.2021 15:24

        Да, изучу.. я понимаю, что FX красивее, но пока учу саму Java..


        1. pmcode
          15.12.2021 15:34

          Пока учите не делайте так, пожалуйста. Понятно, что это клиентское приложение и SQL инъекций в него никто внедрять не будет, но конкатенировать user input и SQL запрос это прям фу. Ну, и если выложили проект, и хотите чтобы над ним работали другие Java разработчики, то придерживайтесь какого-нибудь общепринятого Code Style.


          1. mrprogre Автор
            15.12.2021 15:42

            Спасибо за дельные советы! Всё изучу.. Code style грех не знать, понимаю :)


        1. Capri
          16.12.2021 10:20

          В рамках изучения Java можете уже попробовать отделить бизнес-логику от представления, потом будет легче переходить на FX и вообще на любой другой UI. Смотрите в сторону Model-View-Controller или Model-View-Presenter. Группируйте похожие по смыслу и функционалу компоненты в отдельные пакеты. Не ленитесь писать осмысленные коментарии коммитов, через год даже вы сами не вспомните, что поменялось в upd_28_05_21_02 и почему.


          1. mrprogre Автор
            16.12.2021 10:21

            Спасибо! Принято!


    1. mrprogre Автор
      15.12.2021 15:22

      Спасибо! Посмотрю FlatLaF


    1. mrprogre Автор
      18.12.2021 01:23

      Попробовал FlatLaf.. результаты прикрепил к статье! Спасибо за совет.. осталось нормальную тему подобрать..