Skip to main content

Client and framework for receiving notifications via NTFY

Project description

https://img.shields.io/pypi/l/ntfy-real-time-client.svg PyPI-Server https://img.shields.io/pypi/pyversions/ntfy-real-time-client.svg https://img.shields.io/pypi/status/ntfy-real-time-client.svg Project generated with PyScaffold

ntfy-real-time-client

THIS IS NOT READY YET

https://github.com/iacchus/python-pushover-open-client/blob/main/src/python_pushover_open_client/__init__.py

Command line app and framework for receiving and processing NTFY push notifications in real time.

Features

  • Receive notifications real time via NTFY websocket server.

  • Execute python funcions via commands received by notification, passing arguments as *args.

  • Execute shell commands, passing arguments.

  • Execute python functions to all received notifications (eg.,. you can use Popen to send all notifications to notify-send.)

  • Can be run as a system service, enabling your scripts from boot time.

  • It is being developed with facilities to make it easy subclassing.

Installing

pip install ntfy-real-time-client

Python minimum version 3.10 is needed.

Setting Up

u can start by setting three required envvars: NTFY_SERVER_HOSTNAME, NTFY_TOPIC and NTFY_TOKEN.

file: ~/.zshrc or ~/.bashrc etc

export NTFY_SERVER_HOSTNAME="ntfy.yourdomain.comm"
export NTFY_TOPIC="general"
export NTFY_TOKEN="tk_mahb1gt0k3nz4321"

Then restart the shell.

Using

Command line

Our command line ntfy-real-time-client still needs more functions, but we already have one. His whole interface is here.

ntfy-real-time-client json

This command outputs new received notifications and can be used to pipe for your own scripts to be processed.

Programatically

Here is an example script of how using decorators to use the lib. More examples will be added soon, as there are more decorators/functions to be used.

file: notify.py

#!/usr/bin/env python

from subprocess import Popen

from ntfy_real_time_client import register_command
from ntfy_real_time_client import register_parser
from ntfy_real_time_client import NTFYClientRealTime


# Let's use a decorator to registrate a command function; it will be executed
# when a message with `mycmd_rawdata` as the first word is received. All
# the arguments, *ie.*, all the words in the notification, including
# `mycmd_rawdata` will be passed to ``*args``:

@register_command
def mycmd_rawdata(*args, raw_data=None):
    print("RAW DATA IS:", raw_data)

# this decorator register a parser which is executed for each new
# notification received; here we have two examples:

@register_parser
def my_notify_send_parser(raw_data=None):
    args_str = "notify-send \"{message}\"".format(message=raw_data["message"])
    Popen(args=args_str, shell=True)


@register_parser
def my_print_parser(raw_data=None):
    print("MESSAGE RECEIVED:", raw_data)

# this instantiates the NTFY websocket class and runs it
client = NTFYClientRealTime()
client.run_forever()

You can save the script above to a file (eg. ~/notify.py), then make it executable and run, after you have installed the package and entered your NTFY credentials:

chmod +x notify.py
./notify.py

Then while it is running, try to send a notification to the device (or all the devices) via NTFY website or other notification sending app.

A Little More Inner

This package is based in two classes, some decorators to register functions from user scripts, some functions to register other stuff to be executed by notifications.

The two classes are ntfy_real_time_client.PushoverOpenClient and ntfy_real_time_client.NTFYClientRealTime. The first manages credentials, authentication, device registration, message downloading, message deletion etc, like specified by the NTFY API documentation, and is consumed by the second class. The second class connects to the Pushover’s websocket server with the given credentials (secret and device_id) and keep the connection open, receiving messages and executing callbacks when and according to each server message is received.

By now, decorators and top level functions are used to register functions to be executed when certain commands are received by notification (@register_command, @register_command_parser, register_shell_command(), register_shell_command_alias()), or to register parsers which will be executed when every notification is received @register_parser.)

Contributing

Please open an issue if you want to contribute with code. Or use discussions.

The sources’ package in reality contain only two files:

  • __init__.py - This contains the ntfy_real_time_client library itself.

  • __main__.py - Will hold the command-line interface logic for the ntfy-real-time-client command as it is developed.

Support

You can open a issue or a message in discussions for support in using/getting the code.

Is it ready already?

100%

Note

This project has been set up using PyScaffold 4.1.4. For details and usage information on PyScaffold see https://pyscaffold.org/.

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_real_time_client-0.0.2.tar.gz (40.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ntfy_real_time_client-0.0.2-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file ntfy_real_time_client-0.0.2.tar.gz.

File metadata

  • Download URL: ntfy_real_time_client-0.0.2.tar.gz
  • Upload date:
  • Size: 40.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for ntfy_real_time_client-0.0.2.tar.gz
Algorithm Hash digest
SHA256 482f924fbec5b6807a6f22cdf245c3cb36787a28e7da78f3638bc0940a4607a4
MD5 1268ea6ca896e45558ae3708f0f58864
BLAKE2b-256 dc05b2e7acb03b9c5aa5a5faf7c3609288a5faa997ed489502c3beea08275790

See more details on using hashes here.

File details

Details for the file ntfy_real_time_client-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ntfy_real_time_client-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4ebd70cecc74de3527b53174c7aa1c11b4783e1661a8a34a69ee7a345f55c3f2
MD5 35a984b1e5c934d3b0ea9db03f06b77a
BLAKE2b-256 e83da33fcb927fa113c583e2a7ab934ccd6c491648773ae6e13c79608433bd6a

See more details on using hashes here.

Supported by

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