Вы скорее всего подумаете: "Зачем десктопная программа, если можно, как минимум, загуглить?". А затем, что моя программа автоматически "гуглит" за тебя! Причём не только по одному ключевому слову, а по нескольким, которые вы, само собой, можете редактировать. А результат поиска будет направлен на указанную почту, исключая ранее направленные результаты.
Делал её для себя в рамках моего самообучения языку 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();
Остановился на этой теме (действительно интерфейс становится более интересным)
Поиск ведётся по всем источникам, которые я ранее указал в базе данных (их можно удалять или деактивировать, как ММВБ, к примеру). Посмотреть их можно, нажав на зелёный квадратик (добавлять источники можно по соседней кнопке):
В общем возможностей много:
поиск по ключевым словам
вызов 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)
alexxxst
15.12.2021 14:44Осталось лишь пароль к ящику, с которого уходит почта, убрать из кода, отвязаться от винды и много чего ещё...) ужас)
mrprogre Автор
15.12.2021 14:48+1А как убрать пароль? Я его завуалировал как мог, но понимаю, что так нельзя! В Линуксе через crontab запускается и ищет новости без GUI
alexxxst
15.12.2021 15:34+1Лучше не буду писать даже, а то уже три минуса в карму прилетело)) но с почтой надо что-то делать, особенно, если этот ящик ещё где-то используется (гугло-аккаунт).
mrprogre Автор
15.12.2021 15:36Напиши пожалуйста! Давно этим вопросом мучаюсь! Поставлю плюсик :)
Filex
15.12.2021 16:21+1Интересно тоже, как правильно прятать/хранить пароли
mrprogre Автор
15.12.2021 16:43Я придумал проще, но тут надо будет от почты плясать в плане настроек. Я сам себе отправляю письмо с mail.ru, а у них можно для приложения создать отдельный пароль от личного в аккаунте именно для своего приложения! Т.е. просто летит письмо самому себе, а пароль читается из файла конфига приложения!
mrprogre Автор
15.12.2021 16:20О, я придумал.. когда пользователь укажет свою почту куда отправлять, с неё же и будет отправляться как "отправить себе", а пароль укажет в файле конфига у себя на компьютере.. вот, вроде безопасно! Хотя может и велосипед придумываю..
pmcode
15.12.2021 15:15Какой же страшный у вас UI получился. FlatLaF не рассматривали?
aleksandy
15.12.2021 15:20JavaFX надо, вместо swing.
mrprogre Автор
15.12.2021 15:24Да, изучу.. я понимаю, что FX красивее, но пока учу саму Java..
pmcode
15.12.2021 15:34Пока учите не делайте так, пожалуйста. Понятно, что это клиентское приложение и SQL инъекций в него никто внедрять не будет, но конкатенировать user input и SQL запрос это прям фу. Ну, и если выложили проект, и хотите чтобы над ним работали другие Java разработчики, то придерживайтесь какого-нибудь общепринятого Code Style.
mrprogre Автор
15.12.2021 15:42Спасибо за дельные советы! Всё изучу.. Code style грех не знать, понимаю :)
Capri
16.12.2021 10:20В рамках изучения Java можете уже попробовать отделить бизнес-логику от представления, потом будет легче переходить на FX и вообще на любой другой UI. Смотрите в сторону Model-View-Controller или Model-View-Presenter. Группируйте похожие по смыслу и функционалу компоненты в отдельные пакеты. Не ленитесь писать осмысленные коментарии коммитов, через год даже вы сами не вспомните, что поменялось в upd_28_05_21_02 и почему.
mrprogre Автор
18.12.2021 01:23Попробовал FlatLaf.. результаты прикрепил к статье! Спасибо за совет.. осталось нормальную тему подобрать..
stranger777
Пока что эта программа заменяется зрелыми клиентами, например QuiteRSS, но чувствуется, что QRSS может умереть в плане поддержки. RSSOwl — на Java. Но там не хватает адекватной чистки новостей.
Прочие клиенты страшно тяжёлые и не заточены под условного технаря, которому нужно полноценное информационное поле, а здесь есть этот потенциал после множества переосмыслений. Третьи вообще совсем мелкие поделки, четвёртые — веб, что далеко не всегда удобно. И т. д.
Короче говоря — не останавливайтесь. Буду рад лет через несколько увидеть клиент с хорошо заточенными фильтрами и аккуратной работой именно с поиском. Такие штуки востребованы среди тех, кто плотно работает с новостями.
mrprogre Автор
Спасибо за отзыв, буду доводить до ума дальше! Но этот инструмент мне уже реально помогает не упустить нужные новости! Поэтому делюсь!