Skip to main content

Fast & Free notifications for your code: Python wrapper around the ntfy.sh notifications service.

Project description

ntfy-wrapper is a free and hassle-free customizable notifier for Python. No login, no API token, no fees, no bullshit.

It's actually a simple Python wrapper around ntfy. Kudos to them ❤️

You can now send notification from your Python code and receive them on your computer through a Web App or a CLI, or on your phone with a dedicated app!

Again, all credit to ntfy.

Install

Install ntfy-wrapper (and its 2 dependencies: requests and typer) with pip:

pip install ntfy-wrapper

How to use

from ntfy_wrapper import Notifier

if __name__ == "__main__":

    ntfy = Notifier(defaults={"title": "Your Project Name"})
    # grab the topic id that was just printed here ⬆️ in order
    # to subscribe to it on the web app or cli or mobile app
    # (ntfy_wrapper will dump a config file so the same id will be
    # re-used next time. Remember to *exclude* it from version control)

    ntfy.notify("Job has been allocated, starting Model training")

    try:
        results = do_some_stuff()
        if results["metric"] > threshold:
            ntfy.notify(
                f"Great model! Its metric is {results['metric']:.3f}",
                tags="white_check_mark",  # this is the ✅ emoji
                click=results["online_run_url"],
            )
        else:
            ntfy.notify(f"Done, but not great ({results['metric']:.3f})", tags="disappointed")
    except Exception as e:
        ntfy.notify(f"Error! -> {str(e)}", priority=4, emails="you@foo.bar")

Command-line

ntfy_wrapper comes with a command-line interface called py-ntfy. It uses the great Python CLI tool Typer

  • Get help

    $ py-ntfy --help
    Usage: py-ntfy [OPTIONS] COMMAND [ARGS]...
    
    ╭─ Options ─────────────────────────────────────────────────────────────────────╮
    │ --install-completion          Install completion for the current shell.       │
    │ --show-completion             Show completion for the current shell, to copy  │
    │                               it or customize the installation.               │
    │ --help                        Show this message and exit.                     │
    ╰───────────────────────────────────────────────────────────────────────────────╯
    ╭─ Commands ────────────────────────────────────────────────────────────────────╮
    │ add     [command sub-group] Add a new notification target or a default        │
    │         notification value. Run `$ py-ntfy add --help` for more info.         │
    │ clean   Removes the configuration file. Use --conf-path to specify a path to  │
    │         the configuration file. Use --force to skip the confirmation prompt.  │
    │ init    Initializes the configuration file. It should NOT be tracked by       │
    │         version control in order to protect the topic ID. Use --conf-path to  │
    │         specify a path to the configuration file. Use --force to overwrite an │
    │         existing configuration file.                                          │
    │ remove  [command sub-group] Remove a notification target or a default         │
    │         notification value. Run `$ py-ntfy remove --help` for more info.      │
    │ send    Sends a notification to the given emails and topics. Optional         │
    │         command-line arguments can be passed to override the defaults in the  │
    │         config file and customize the message options. Refer to               │
    │         https://ntfy.sh/docs/publish to understand the options. Run           │
    │         `py-ntfy send --help` to see the available options.                   │
    ╰───────────────────────────────────────────────────────────────────────────────╯
    
    $ py-ntfy add --help
    (similar output)
    
    $ py-ntfy add default --help
    (similar output)
    
    $ py-ntfy remove --help
    (similar output)
    
  • Initialize the configuration file

    $ py-ntfy init
    🔑 Your first topic is `f8e34b7a-74a3-49e7-96fc-4d89eaf6ea6c`.
    Use it to subscribe to notifications!
    🎉 Config file created at /path/to/repo/.ntfy.conf
    
  • Add a topic or an email

    $ py-ntfy add topic some-secret-string-for-your-topic
    🎉 Topic `some-secret-string-for-your-topic` added to /path/to/repo/.ntfy.conf
    
    $ py-ntfy add email you@foo.bar
    🎉 Email you@foo.bar added to /Users/.../vict0rsch/ntfy-wrapper/.ntfy.conf
    
  • Add a default value for the .notify(...) calls

    $ py-ntfy add default key value
    🎉 Default key=value added to /Users/.../vict0rsch/ntfy-wrapper/.ntfy.conf
    
  • Remove items by simply replacing add by remove

    $ py-ntfy remove default key
    🎉 Default key=value removed from /Users/.../vict0rsch/ntfy-wrapper/.ntfy.conf
    
    $ py-ntfy remove email hello@you.com
    Email hello@you.com does not exist. Ignoring.
    
  • Send a notification from the command-line with send

    $ py-ntfy send "hello" --topics 99e89137-c3a3-47fd-a616-01677b15c5b7 --title "This is Victor" --click "https://9gag.com"
    🎉 Notification sent to 99e89137-c3a3-47fd-a616-01677b15c5b7, you@foo.bar
    
  • Change the default configuration path for any command with the option --conf-path

    • Specify a directory --conf-path path/to/conf/directory and .ntfy.conf will be created there
    • Specify a file --conf-path path/to/file.conf and that will be used as a configuration file

Todo

  • Better readme and doc
  • CLI
  • Screenshots
  • requests timeout or non-blocking

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

ntfy_wrapper-0.1.1.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

ntfy_wrapper-0.1.1-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file ntfy_wrapper-0.1.1.tar.gz.

File metadata

  • Download URL: ntfy_wrapper-0.1.1.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.9.2 Darwin/21.2.0

File hashes

Hashes for ntfy_wrapper-0.1.1.tar.gz
Algorithm Hash digest
SHA256 532ec69fc0461e47d7c75db44d5a0fa48223114de63195c88121f5b0c42387c6
MD5 5d842872d54f9a8203b2067d81e901fc
BLAKE2b-256 d8186fda85308b81c9ca8ed734d37059c97bbdb1586fc6d938998ef31bf253a3

See more details on using hashes here.

File details

Details for the file ntfy_wrapper-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: ntfy_wrapper-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.9.2 Darwin/21.2.0

File hashes

Hashes for ntfy_wrapper-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9c7e2d986ce18d65d6c9fbfab1ff768cf10a5e4822be74c75e33dbdfd2d0b70e
MD5 e6a9f33f268e8621670bb62af26e2e9a
BLAKE2b-256 71ac5048efa70e8bf48b7b37ce70e5bd31069d1ecedb480da0cca66cde041b86

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