apprise | ||
test | ||
.coveragerc | ||
.gitignore | ||
.travis.yml | ||
dev-requirements.txt | ||
LICENSE | ||
MANIFEST.in | ||
README | ||
README.md | ||
requirements.txt | ||
setup.cfg | ||
setup.py | ||
tox.ini |
ap·prise / verb
To inform or tell (someone). To make one aware of something.
Apprise allows you to take advantage of just about every notification service available to us today. Send a notification to almost all of the most popular services out there today (such as Telegram, Slack, Twitter, etc). The ones that don't exist can be adapted and supported too!
Supported Notifications
The section identifies all of the services supported by this script.
Popular Notification Services
The table below identifies the services this tool supports and some example service urls you need to use in order to take advantage of it.
Notification Service | Service ID | Default Port | Example Syntax |
---|---|---|---|
Boxcar | boxcar:// | (TCP) 443 | boxcar://hostname boxcar://hostname/@tag boxcar://hostname/device_token boxcar://hostname/device_token1/device_token2/device_tokenN boxcar://hostname/@tag/@tag2/device_token |
Discord | discord:// | (TCP) 443 | discord://webhook_id/webhook_token discord://avatar@webhook_id/webhook_token |
Emby | emby:// or embys:// | (TCP) 8096 | emby://user@hostname/ emby://user:password@hostname |
Faast | faast:// | (TCP) 443 | faast://authorizationtoken |
Growl | growl:// | (UDP) 23053 | growl://hostname growl://hostname:portno growl://password@hostname growl://password@hostname:port Note: you can also use the get parameter version which can allow the growl request to behave using the older v1.x protocol. An example would look like: growl://hostname?version=1 |
IFTTT | ifttt:// | (TCP) 443 | ifttt://webhooksID/EventToTrigger ifttt://webhooksID/EventToTrigger/Value1/Value2/Value3 ifttt://webhooksID/EventToTrigger/?Value3=NewEntry&Value2=AnotherValue |
Join | join:// | (TCP) 443 | join://apikey/device join://apikey/device1/device2/deviceN/ join://apikey/group join://apikey/groupA/groupB/groupN join://apikey/DeviceA/groupA/groupN/DeviceN/ |
KODI | kodi:// or kodis:// | (TCP) 8080 or 443 | kodi://hostname kodi://user@hostname kodi://user:password@hostname:port |
Mattermost | mmost:// | (TCP) 8065 | mmost://hostname/authkey mmost://hostname:80/authkey mmost://user@hostname:80/authkey mmost://hostname/authkey?channel=channel mmosts://hostname/authkey mmosts://user@hostname/authkey |
Prowl | prowl:// | (TCP) 443 | prowl://apikey prowl://apikey/providerkey |
Pushalot | palot:// | (TCP) 443 | palot://authorizationtoken |
PushBullet | pbul:// | (TCP) 443 | pbul://accesstoken pbul://accesstoken/#channel pbul://accesstoken/A_DEVICE_ID pbul://accesstoken/email@address.com pbul://accesstoken/#channel/#channel2/email@address.net/DEVICE |
Pushjet | pjet:// | (TCP) 80 | pjet://secret pjet://secret@hostname pjet://secret@hostname:port pjets://secret@hostname pjets://secret@hostname:port Note: if no hostname defined https://api.pushjet.io will be used |
Pushover | pover:// | (TCP) 443 | pover://user@token pover://user@token/DEVICE pover://user@token/DEVICE1/DEVICE2/DEVICEN Note: you must specify both your user_id and token |
Rocket.Chat | rocket:// or rockets:// | (TCP) 80 or 443 | rocket://user:password@hostname/RoomID/Channel rockets://user:password@hostname:443/Channel1/Channel1/RoomID rocket://user:password@hostname/Channel |
Slack | slack:// | (TCP) 443 | slack://TokenA/TokenB/TokenC/Channel slack://botname@TokenA/TokenB/TokenC/Channel slack://user@TokenA/TokenB/TokenC/Channel1/Channel2/ChannelN |
Stride | stride:// | (TCP) 443 | stride://auth_token/cloud_id/convo_id |
Super Toasty | toasty:// | (TCP) 80 | toasty://user@DEVICE toasty://user@DEVICE1/DEVICE2/DEVICEN Note: you must specify both your user_id and at least 1 device! |
Telegram | tgram:// | (TCP) 443 | tgram://bottoken/ChatID tgram://bottoken/ChatID1/ChatID2/ChatIDN |
tweet:// | (TCP) 443 | tweet://user@CKey/CSecret/AKey/ASecret | |
XBMC | xbmc:// or xbmcs:// | (TCP) 8080 or 443 | xbmc://hostname xbmc://user@hostname xbmc://user:password@hostname:port |
Email Support
Service ID | Default Port | Example Syntax |
---|---|---|
mailto:// | (TCP) 25 | mailto://userid:pass@domain.com mailto://domain.com?user=userid&pass=password mailto://domain.com:2525?user=userid&pass=password mailto://user@gmail.com&pass=password mailto://userid:password@example.com?smtp=mail.example.com&from=noreply@example.com&name=no%20reply |
mailtos// | (TCP) 587 | mailtos://userid:pass@domain.com mailtos://domain.com?user=userid&pass=password mailtos://domain.com:465?user=userid&pass=password mailtos://user@hotmail.com&pass=password mailtos://userid:password@example.com?smtp=mail.example.com&from=noreply@example.com&name=no%20reply |
Apprise have some email services built right into it (such as hotmail, gmail, etc) that greatly simplify the mailto:// service. See more details here.
Custom Notifications
Post Method | Service ID | Default Port | Example Syntax |
---|---|---|---|
JSON | json:// or jsons:// | (TCP) 80 or 443 | json://hostname json://user@hostname json://user:password@hostname:port json://hostname/a/path/to/post/to |
XML | xml:// or xmls:// | (TCP) 80 or 443 | xml://hostname xml://user@hostname xml://user:password@hostname:port xml://hostname/a/path/to/post/to |
Installation
The easiest way is to install from pypi:
pip install apprise
Command Line
A small command line tool is also provided with this package called apprise. If you know the server url's you wish to notify, you can simply provide them all on the command line and send your notifications that way:
# Send a notification to as many servers as you want to specify
apprise -t 'my title' -b 'my notification body' \
'mailto://myemail:mypass@gmail.com' \
'pbul://o.gn5kj6nfhv736I7jC3cj3QLRiyhgl98b'
# If you don't specify a --body (-b) then stdin is used allowing
# you to use the tool as part of your every day administration:
cat /proc/cpuinfo | apprise -t 'cpu info' \
'mailto://myemail:mypass@gmail.com'
Developers
To send a notification from within your python application, just do the following:
import apprise
# create an Apprise instance
apobj = apprise.Apprise()
# Add all of the notification services by their server url.
# A sample email notification
apobj.add('mailto://myemail:mypass@gmail.com')
# A sample pushbullet notification
apobj.add('pbul://o.gn5kj6nfhv736I7jC3cj3QLRiyhgl98b')
# Then notify these services any time you desire. The below would
# notify all of the services loaded into our Apprise object.
apobj.notify(
title='my notification title',
body='what a great notification service!',
)