Доброго времени суток, %username%.
Я не являюсь разработчиком (я себя таковым не считаю) и не занимаюсь программированием для заработка (хотя раньше такое и было), но иногда возникает острое желание чего-нибудь написать для себя, чтоб оно работало, как надо мне, чтоб выглядело, как я хочу, и чтоб была возможность что-то изменить в поведении программы/скрипта/сайта.
В очередной такой "приступ" и было решено написать SiteWatcher. А чтобы труд не пропал зря, решил опубликовать свой проект. Может кому понадобится сама программа или что-то из её кода.
Читать всё, что написано ниже не обязательно, можно просто посмотреть скриншоты, скачать или ознакомиться с результатом на GitHub. Там же есть описание элементов интерфейса.
Минимальные системные требования
Windows 7+ x64
Причины создания
В Интернете есть ряд программ для отслеживания активности на сайтах. Самым ярким примером которых являются, наверное, клиенты RSS (Rich Site Summary — обогащённая сводка сайта, чаще всего представлена лентой новостей).
И всё хорошо, когда на сайте есть рассылки или RSS, но иногда возникают ситуации, когда стандартного функционала для уведомления пользователей на сайте нет, недостаточно или он работает не так, как надо или хочется. В этих случаях помогают сторонние программы (клиенты для API, парсеры, шлюзы и т.д. ). Вот одной из таких программ и является SiteWatcher.
В большинстве случаев такого типа продукты представлены в двух видах: как самостоятельное ПО и как расширения для браузеров.
Я использовал несколько вариантов, и в каждом было что-то, что не устраивало
(это не список минусов, а мои "хотелки"):
Обработка происходила в облаке
Было необходимо постоянно держать запущенным браузер
(относится к расширениям для браузеров)Ограничения бесплатных версий
Невозможность повлиять на порядок работы или поведение программы
"Тяжелый" внешний вид
другие незначительные мелочи, вроде хранения данных в облаках или браузере
После очередного "улучшения" разработчиком программы, которой я пользовался, в виде перехода на коммерческие рельсы, я задумался над тем, что бы написать свой вариант с "блэкджеком"...
Чем руководствовался при выборе инструментов для написания
Во избежания дальнейших вопросов, поясню причины выбора
Windows - работаю в основном на ней
x64 - уже везде, за исключением ну очень старого железа
C# / .NET - что-то на нем умею, что-то читал про WPF, родной для Windows и .NET возможно использовать на linux-системах
CefSharp - корректно отображает страницы, популярный, простой
Русский язык - мне достаточно и нет желания разбираться в многоязычных подходах ради такого маленького "проекта", да и не консольное приложение
А также причины, почему программа выглядит именно так
Я не программист и тем более не дизайнер
Программа писалась для себя, и когда было желание
Что реализовано на данный момент
Программа запускается и работает, то, для чего была написана, делает, не без ошибок, не все "хотелки" ещё реализованы.
Список наблюдателей
Управление списком
Фильтр элементы по категориям, наличию изменений и тексту
Ссылки на отслеживаемые страницы и их последние изменения
История изменений текста на отслеживаемой странице
Несколько последних изменений на странице
Подсветка измененных данных
Настройки наблюдателя
Возможно выбрать отслеживаемый элемент на странице сайта
Эмуляция движения мыши на сайте
Шаблон вывода данных через regexp
Всплывающие уведомления
В уведомлении выводится название наблюдателя и последние изменения на странице
Что планировалось, но (пока?) не сделано
Плагины для обработки данных полученных со страницы
Плагины для уведомлений
Нормальный вывод истории изменений
Доработка иконки в трее
Экспорт и импорт списка наблюдателей
Более тонкая настройка уведомлений
Косметические улучшения интерфейса
Вывести настройки в интерфейс
Пофиксить все найденные баги
На этом всё. Спасибо за внимание
Страница проекта на GitHub
Скачать скомпилированный вариант можно там же в Releases.
Комментарии (9)
Javian
27.10.2022 19:24+2Испытываю чувство дежавю, что во времена модемов были такие программы, название которых глубоко погребено во времени.
connected201
27.10.2022 20:11+3также могу порекомендовать данный интрумент https://github.com/dgtlmoon/changedetection.io
click0
28.10.2022 03:16+4Open-source self-hosted web archiving:
* ArchiveBox
* wayback
Также есть более навороченные аналоги.Chronas Автор
28.10.2022 06:31+1Также есть более навороченные аналоги.
Спасибо. Много интересного нашел.
Didimus
28.10.2022 13:44+1А в магазине так можно цену отслеживать и подавать сигнал при падении цены?
gwg605
29.10.2022 04:06+1АААА!!! Ностальгия :) Это была вторая программа которую я написал в конторе в которой отработал 24 года :))) Называлась программа WhatsNew. Умела вытаскивать из разных типов доков текст и его сравнивать, также могла сравнивать между собой документы от ворда и экселя, ну и просто веб страницы. Была написана на чистом Win32 и C++. Это был 1998 год :)
KizhiFox
Вообще, хорошо, что вы на примере новостного сайта демонстрацию функционала сделали. Я думаю, тем же самым журналистам или социологам было бы интересно получить возможность отслеживать изменения в какой-нибудь статье в каких-нибудь госСМИ и не лазать за этим в webarchive, который и не факт что конкретно эту нужную статью отследит. А если сюда ещё прикрутить какой-нибудь мониторинг выхода новых материалов и автоматически добавлять их в отслеживание... В общем, интересный и в теории полезный проект.
laatoo
RSS уже существует, rss-bridge (и конкретно xpath bridge, которым можно выбрать по селектору в каких то сложных случаях) уже существуют
отслеживание изменений статьи - это уж больно какой то специфический случай, но и то лучше свести к формированию rss фида, и отслеживать его в любом удобном клиенте, чем к standalone приложению