.. role:: underline
:class: underline
.. role:: additions
:class: additions
.. role:: deletions
:class: deletions
======================
webchanges |downloads|
webchanges checks web content including images, and notifies you via email (or one of many other supported services <https://webchanges.readthedocs.io/en/stable/introduction.html#reporters-list>
__) if a change is detected.
webchanges can also check the output of local commands. The notification includes a detail of what has changed
("diff"), with an optional summary generated by AI (BETA).
webchanges anonymously alerts you of web changes.
Requirements
webchanges requires |support|.
You should use the latest version of Python <https://www.python.org/downloads/>
__ if possible, but older
Python versions are supported for 3 years after being obsoleted by a new major release (3.x). For each major release,
only the latest bug and security fix version (3.x.y) is supported.
For Generative AI summaries (BETA), you need a free API Key from Google Cloud AI Studio <https://aistudio.google.com/app/apikey>
__ (see here <https://webchanges.readthedocs.io/en/stable/differs.html#ai-google>
__).
Installation
Install webchanges |pypi_version| |format| |status| |security| with:
.. code-block:: bash
pip install webchanges
Running in Docker
webchanges can be run in a Docker <https://www.docker.com/>
__ container; please see here <https://github.com/yubiuser/webchanges-docker>
__ for one such implementation.
Documentation |readthedocs|
The documentation is hosted on Read the Docs <https://webchanges.readthedocs.io/>
__.
Quick Start
Initialize
#. Run the following command to create the default config.yaml
(configuration) and jobs.yaml
(jobs) files and
open an editor to add your jobs <https://webchanges.readthedocs.io/en/stable/jobs.html>
__:
.. code-block:: bash
webchanges --edit
#. Run the following command to change the default configuration <https://webchanges.readthedocs.io/en/stable/configuration.html>
, e.g. to receive change notifications
("reports <https://webchanges.readthedocs.io/en/stable/reporters.html>
")
by email <https://webchanges.readthedocs.io/en/stable/reporters.html#smtp>
__ and/or one of many other methods:
.. code-block:: bash
webchanges --edit-config
Run
To check the sources in your jobs and report on (e.g. display or via email) any changes found from the previous
execution, just run:
.. code-block:: bash
webchanges
webchanges does not include a scheduler. We recommend using a system scheduler to automatically run it
periodically:
- On Linux or macOS, you can use cron (if you have never used cron before, see
here <https://www.computerhope.com/unix/ucrontab.htm>
); crontab.guru <https://crontab.guru>
will build a
schedule expression for you; - On macOS, you can use
launchd <https://developer.apple .com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/ScheduledJobs.html>
__; - On Windows, you can use the built-in
Windows Task Scheduler <https://en.wikipedia.org/wiki/Windows_Task_Scheduler>
__.
Code
|coveralls| |issues|
The code and issues tracker are hosted on GitHub <https://github.com/mborsetti/webchanges>
__.
Contributing
We welcome any contribution no matter how small, both as pull requests or issue reports <https://github.com/mborsetti/webchanges/issues>
__.
More information for code and documentation contributors is here <https://webchanges.readthedocs.io/en/stable/contributing.html>
, and our wishlist is here <https://github.com/mborsetti/webchanges/blob/main/WISHLIST.md>
.
License
|license|
Released under the MIT License <https://opensource.org/licenses/MIT>
__ but redistributing modified source code from
urlwatch 2.21 <https://github.com/thp/urlwatch/tree/346b25914b0418342ffe2fb0529bed702fddc01f>
__ dated 30 July 2020
licensed under a BSD 3-Clause License <https://raw.githubusercontent.com/thp/urlwatch/346b25914b0418342ffe2fb0529bed702fddc01f/COPYING>
. See the complete
license here <https://github.com/mborsetti/webchanges/blob/main/LICENSE>
.
Compatibility with and improvements from urlwatch
This project is based on code from urlwatch 2.21 <https://github.com/thp/urlwatch/tree/346b25914b0418342ffe2fb0529bed702fddc01f>
__ dated 30 July 2020. You can
easily upgrade to webchanges from the current version of urlwatch using the same job and configuration files
(see here <https://webchanges.readthedocs.io/en/stable/migration.html>
__) and benefit from many improvements,
including:
-
Summary of changes in plain text using Generative AI, useful for long documents (e.g. legal);
-
Depicting changes to an image;
-
Element-by-element changes of JSON or XML data;
-
Much better documentation <https://webchanges.readthedocs.io/>
__, easing implementation;
-
Much clearer to HTML reports, which include:
- Links that are
clickable <https://pypi.org/project/webchanges/>
__! - Retaining of original formatting such as bolding / headers, italics, :underline:
underlining
, list bullets
(•) and indentation; - Lines that are :additions:
added
and :deletions:deleted
are clearly highlighted by color and strikethrough,
and long lines wrap around; - Correct rendering by email clients who override stylesheets (e.g. Gmail);
- Other legibility improvements;
-
New filters such as additions_only <https://webchanges.readthedocs.io/en/stable/diff_filters.html#additions-only>
__,
which makes it easier to track content that was added without the distractions of the content that was deleted;
-
New command line arguments, such as --errors
(to catch jobs that no longer work);
-
More reliability and stability, including a ~30 percentage point increase in testing coverage;
-
Many other additions, refinements and fixes (see detailed information <https://webchanges.readthedocs.io/en/stable/migration.html#upgrade-details>
__).
Example enhancements to HTML reporting:
.. image:: https://raw.githubusercontent.com/mborsetti/webchanges/main/docs/html_diff_filters_example_1.png
:width: 504
|
.. image:: https://raw.githubusercontent.com/mborsetti/webchanges/main/docs/html_diff_filters_example_3.png
:width: 504
.. |support| image:: https://img.shields.io/pypi/pyversions/webchanges.svg
:target: https://www.python.org/downloads/
:alt: Supported Python versions
.. |pypi_version| image:: https://img.shields.io/pypi/v/webchanges.svg?label=
:target: https://pypi.org/project/webchanges/
:alt: PyPI version
.. |format| image:: https://img.shields.io/pypi/format/webchanges.svg
:target: https://pypi.org/project/webchanges/
:alt: Kit format
.. |downloads| image:: https://static.pepy.tech/badge/webchanges
:target: https://www.pepy.tech/project/webchanges
:alt: PyPI downloads
.. |license| image:: https://img.shields.io/pypi/l/webchanges.svg
:target: https://pypi.org/project/webchanges/
:alt: License at https://pypi.org/project/webchanges/
.. |issues| image:: https://img.shields.io/github/issues-raw/mborsetti/webchanges
:target: https://github.com/mborsetti/webchanges/issues
:alt: Issues at https://github.com/mborsetti/webchanges/issues
.. |readthedocs| image:: https://img.shields.io/readthedocs/webchanges/stable.svg?label=
:target: https://webchanges.readthedocs.io/
:alt: Documentation status
.. |CI| image:: https://github.com/mborsetti/webchanges/actions/workflows/ci-cd.yaml/badge.svg?event=push
:target: https://github.com/mborsetti/webchanges/actions
:alt: CI testing status
.. |coveralls| image:: https://coveralls.io/repos/github/mborsetti/webchanges/badge.svg?branch=main
:target: https://coveralls.io/github/mborsetti/webchanges?branch=main
:alt: Code coverage by Coveralls
.. |status| image:: https://img.shields.io/pypi/status/webchanges.svg
:target: https://pypi.org/project/webchanges/
:alt: Package stability
.. |security| image:: https://img.shields.io/badge/security-bandit-yellow.svg
:target: https://github.com/PyCQA/bandit
:alt: Security Status