Skip to main content

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

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

notifeed-1.2.0.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

notifeed-1.2.0-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file notifeed-1.2.0.tar.gz.

File metadata

  • Download URL: notifeed-1.2.0.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for notifeed-1.2.0.tar.gz
Algorithm Hash digest
SHA256 5408deaa11313261ae54c1c3329b225b63c7a97d00863bc99753abf711c92b25
MD5 be1b091c58e22d960496e322abc91f97
BLAKE2b-256 c87b8d2b72fb2cc3de4ee503d835cc5090981ef952e57f4735b7cf2b8ec6be18

See more details on using hashes here.

File details

Details for the file notifeed-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: notifeed-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for notifeed-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 41bebdae50688bfb3f115db1ce474ca89dbc46fabc68d221ceb65c1e70488ec3
MD5 d77417e3b32944d4c9d4353d9a48fb37
BLAKE2b-256 1a684ddceead55479213ac1f0cfff68b62fce38dc6b2308cf13680ee2fda7f00

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page