Skip to main content

notifeed

Automatically get notifications for new posts on your favorite RSS/Atom feeds.

Installation

pip3 install notifeed
# or
git clone git@github.com:loganswartz/notifeed.git && pip3 install ./notifeed

Usage

~ $ notifeed -h
Usage: notifeed [OPTIONS] COMMAND [ARGS]...

Options:
  --debug     Show debug logging messages
  --db PATH   Path to an SQLite database, or where to save a new one
  -h, --help  Show this message and exit.

Commands:
  add
  delete
  list
  run
  set

Notifeed has 3 main things that need to be configured:

  • Feeds to watch
  • Available notification channels
  • The actual configured notifications (i.e. on a new post to X, send a notification to Y)

To configure these values, you can use notifeed add <feed|channel|notification> .... Here are some examples on how to use them:

Working with Feeds

$ notifeed add feed Dolphin https://dolphin-emu.org/blog/feeds/
Added Dolphin!

$ notifeed add feed MelonDS http://melonds.kuribo64.net/rss.php
Added MelonDS!

$ notifeed list feeds
Currently watching:
  Dolphin (https://dolphin-emu.org/blog/feeds/)
  MelonDS (http://melonds.kuribo64.net/rss.php)

$ notifeed delete feed Dolphin
Deleted Dolphin!

Working with Channels

$ notifeed add channel --type slack MySlackWorkspace <Slack Webhook URL>
Added MySlackWorkspace!

$ notifeed add channel MyDiscordChannel <Discord Webhook URL>
Added MyDiscordChannel!

$ notifeed delete channel MySlackWorkspace
Deleted MySlackWorkspace!

$ notifeed list channels
Available notification channels:
  MyDiscordChannel (discord, <Discord Webhook URL>)

Working with Notifications

$ notifeed add notification Dolphin MySlackWorkspace
Added notification for new posts to Dolphin!

$ notifeed list notifications
Configured notifications:
  New posts to Dolphin --> MySlackWorkspace

$ notifeed delete notification Dolphin MySlackWorkspace
Disabled notifications for Dolphin on MySlackWorkspace

Notifeed will start listening for new posts when you start it via notifeed run. The best way to deploy this is setting it up as a systemctl service, using the provided template service file.

Set poll interval

$ notifeed set poll_interval 1800  # 1800 seconds = 30 minutes

The default polling interval is 15 minutes.

Available Notification Channels

  • Slack
  • Discord
  • Email

Currently, Slack and Discord are supported. Other connectors can be added by implementing a subclass of the NotificationChannelAsync class, specifically the notify method. notify is called with one argument, post (which is of type notifeed.Post), when a new post is found on a feed. Notifeed will automatically import any NotificationChannel subclasses found in modules within the notifications folder of this repo, and the notifications/plugins path specifically is gitignore'd to allow symlinking your own modules into an importable location.

Misc

Configuration data is stored in an SQLite database file. By default, this lives in the root of the project folder.

Service Installation

Install the service file by symbolically linking to it from /etc/systemd/system/:

$ sudo ln -s /path/to/notifeed/notifeed.service /etc/systemd/system/notifeed.service

Then, reload the service daemon, and start the service:

$ sudo systemctl daemon-reload && sudo systemctl start notifeed

You'll probably also want to start the service automatically on startup:

$ sudo systemctl enable notifeed

Once the service is running, you can setup notifications, feeds, etc as you would normally with the notifeed command.

Release files for notifeed 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for notifeed 1.2.0
File Size Uploaded
notifeed-1.2.0.tar.gz 5.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for notifeed 1.2.0
File Interpreter ABI Platform
notifeed-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.3 kB

Release files / notifeed-1.2.0.tar.gz

Download URL notifeed-1.2.0.tar.gz
Size 5.7 kB
Tags Source
SHA-256 checksum
How to use checksums
5408deaa11313261ae54c1c3329b225b63c7a97d00863bc99753abf711c92b25
BLAKE2b-256 checksum
How to use checksums
c87b8d2b72fb2cc3de4ee503d835cc5090981ef952e57f4735b7cf2b8ec6be18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.0.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.10

Release files / notifeed-1.2.0-py3-none-any.whl

Download URL notifeed-1.2.0-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
41bebdae50688bfb3f115db1ce474ca89dbc46fabc68d221ceb65c1e70488ec3
BLAKE2b-256 checksum
How to use checksums
1a684ddceead55479213ac1f0cfff68b62fce38dc6b2308cf13680ee2fda7f00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.0.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.10

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page