Apprise - Push Notifications that work with just about every platform!
delay=
switch to aprs:// plugin (#1107)host
parsed from user login (if present) for Emails in https://github.com/caronc/apprise/pull/1095
Apprise is available on PyPI through pip:
# Install Apprise v1.7.6 from PyPI
pip install apprise==1.7.6
Apprise is available on PyPI through pip:
# Install Apprise v1.7.5 from PyPI
pip install apprise==1.7.5
.conf
configuration file support added to CLI. This PR also resolved some documentation ambiguity in https://github.com/caronc/apprise/pull/1080
Apprise is available on PyPI through pip:
# Install Apprise v1.7.4 from PyPI
pip install apprise==1.7.4
Another minor release to push some outstanding bug-fixes that have accumulated and patched over the past month
mailto://
comcast.net email template added (#1059)mailto://
improved custom email server handling (5ae212fbafb94a3d03c61739d2e81f7502595902)
to=
and from_addr=
are no longer required in most circumstances and can be automatically determined based on basic information provided.ntfy://
markdown support added (#1056)
?format=markdown
to format the content accordinglypaho-mqtt
v2.0 was released and it's documentation for v1.6.1 was completely incompatible with it. For the stability of the mqtt://
plugin, paho-mqtt
has been pinned to the stable v1.x release (#1065)yaml
files (#1069) - Thank you @samueltardieu
.yml
and .yaml
files by default (#1073)macosx://
- Update terminal-notifier notify_paths (#1052) - Thank you @joergschultzelutterApprise is available on PyPI through pip:
# Install Apprise v1.7.3 from PyPI
pip install apprise==1.7.3
This was just a second small release add some improvements and bug fixes
See the release notes for Apprise v1.7.0 to see all of the bells and whistles now available!
overflow
features split
and truncate
(#1035 & #1038)Apprise is available on PyPI through pip:
# Install Apprise v1.7.2 from PyPI
pip install apprise==1.7.2
This was just a small release to patch a small bug (#1032) preventing Apprise v1.7.0 from being compatible with the Apprise API.
See the release notes for Apprise v1.7.0 to see all of the bells and whistles now available!
Apprise is available on PyPI through pip:
# Install Apprise v1.7.1 from PyPI
pip install apprise==1.7.1
:slightly_smiling_face:
(as an example) in your apprise message body and have it swap to :slightly_smiling_face:In your Apprise URL, simply add the parameter emojis=yes
and they will be ran against that service only:
# The below would run the title and body through the emoji engine to produce their unicode
# emoji equivalent..
# :rocket: would become 🚀 and :+1: would become 👍
apprise --title=":+1: Great work everyone!" \
--body="So proud of you all! :rocket:." \
"myschema://credentials?emojis=yes"
You can also ensure that the emoji engine is always turned on via the CLI using the switch --interpret-emojis
or it's synonymous equivalent -j
# again ... :rocket: would become 🚀 and :+1: would become 👍
apprise --title=":+1: Great work everyone!" \
--body="So proud of you all! :rocket:." \
--interpret-emojis
"myschema://credentials"
In your Apprise Asset object, just set emojis=True
. This becomes a bit more of a global switch and turns on the emoji support for all notifications regardless if the emojis=yes
is set on the URL.
import apprise
# if set to True:
# Emoji Engine is enabled by default (but can be over-ridden on a per-url base ?emojis=no
# if set to False:
# Emoji Engine is never enabled (regardless of URL definition)
# if set to None (Default):
# Emoji Engine is enabled on demand (per URL definition only)
asset = apprise.AppriseAsset(emojis=True)
apobj = apprise.Apprise(asset=asset)
# The below will be passed through the emoji engine because the asset enabled it
# by default
apobj.add("myschema://credentials")
# The below will never use the emoji engine, regardless if it is enabled or not:
apobj.add("myschema://credentials?emojis=no")
?emojis=no
, then the engine will never be applied against it.tgram://
) supports topics inline per target specified (#1028)
tgram://{bot_token}/
tgram://{bot_token}/{chat_id}/
tgram://{bot_token}/{chat_id1}/{chat_id2}/{chat_id3}/
tgram://{bot_token}/{chat_id}:{topic}/
tgram://{bot_token}/{chat_id1}:topic1}/{chat_id2}:{topic2}/{chat_id3}:{topic3}/
tgram://{bot_token}/{chat_id1}/{chat_id2}:{topic2}/{chat_id3}/
discord://
) support for user
and role
ping support (#1004).
<@123>
<@&456>
@everyone
Apprise is available on PyPI through pip:
# Install Apprise v1.7.0 from PyPI
pip install apprise==1.7.0
mqtt://
added log entry on successful transmission for both consistency and to align with other plugins (#946)
Refactored URLBase() object to prepare for API Webhook support in the Apprise API (#973)
A global change to handles user=
directive a better and auto-solves ambiguous situations where the URL looks like this: schema://username@hostname?user=username2
(#947).
In the past the username
would get lost and be trumped with username2
. This is fine, but to may Apprise more versatile, Now in these circumstances Apprise will interpret it as: schema://password@hostname?user=username
. This change does not disrupt other common formatting such as:
schema://username:password@hostname
schema://username@hostname
schema://hostname?user=username&password=password
Default Attachment maximum attachment size changed from 5MB to 1GB (be3baed7e3d33bae973f1714df4ebbf65aa33f85). This just makes it easier to use the API and CLI without issues. It lets the upstream service complain if the attachment is too large instead of Apprise restricting you.
xml://
custom URL parsing better handles customized XML elements (inserted, renamed and deleted); (#945).
Configuration now supports Groups. You can now assign pre-defined tags to groups and trigger your notifications off of them. (#967)
Groups are processed at the end, so there is no requirement to define it at the front or end of your configuration files.
Group definitions stack as well (so defining the same group again with append any entries to what was already assigned.
You can assign more groups to groups
You can assign multiple groups in one single declaration
Here is a simple TEXT example:
# assign "tag1" and "tag2" to the group "group"
group = tag1, tag2
# Group assigned to a group plus another tag
groupA = group, tag3
# Support multi-assignments (also stackable)
# both groupB and groupC would acquire tag1 and tag4
groupB, groupC = tag1, tag4
# Append another tag into a group already defined
group = tag4
# Just some URLs defined as examples
tag1 = mailto://credentials
tag2 = mailto://credentials
tag3 = mailto://credentials
tag4 = mailto://credentials
If you were to send your notification to the tag group
it would in fact trigger both tag1
, tag2
, and tag4
:
apprise -g 'group' -b "Test Message!"
Here is a simple YAML example:
# You must define a groups section
groups:
group: tag1, tag2
groupA: group, tag3
group: tag4
# Support multi assignments:
groupB, groupC: tag1, tag4
# Another way you can define your groups:
groupD:
- tagX: Place an optional comment here; this is ignored and only tagX is retrieved
- tagY: Another spot to place an optional comment
# You can also just list them:
groupG:
- tag1
- tag3
- group
# Define your tags as usual here:
urls:
- json://localhost:
- tag: tag1
- form://localhost:
- tag: tag2
- mailto://credentials:
- tag: tag3
- mailto://credentials:
- tag: tag4
x://
in addition to tweet://
and twitter://
to align with re-branding (#971)?v=2
to your Apprise URL to use the older API for now. (#970)Apprise is available on PyPI through pip:
# Install Apprise v1.6.0 from PyPI
pip install apprise==1.6.0
rsyslog://
split from the original syslog://
Servicehref=
variable that can be set on the Apprise URL which allows you to leverage the embed
part of the API and turn your title
into a hyperlink to the specified location. You can also use url=
(as an alias to href=
) (#927)body
if at least 1 attachment
was provided. This expands the use of Apprise to not constrict you to always include a body
when the only intent you had was to post an attachment.
# For the CLI you are still required to set the `--body` to "", but this no longer
# generates an error
apprise --attach="/path/to/attachment.zip --body ""
Apprise.details()
improvements
attachment_support
variable added (#916)# as an example ...
import apprise
import pickle
# Instantiate our object
apobj = apprise.Apprise()
# Add our URLs
apobj.add("json://localhost")
apobj.add("xml://localhost")
apobj.add("form://localhost")
apobj.add("mailto://user:pass@localhost")
# Now serialize our object for any purpose
serialized = pickle.dumps(apobj)
# do what you will; write this to disk, send it to a remote
# server, etc.
# We can re-load our serialized content and turn it back into
# and object like so:
apobj_n2 = pickle.loads(serialized)
getdefaultlocale()
deprecation warnings now handled (#754)
placed in the Title/Subject of some notifications; this has now been fixed. (#914)gettext()
no longer installs _
into the global namespace, but instead keeps the _
at an apprise
module scope. (#821)Apprise is available on PyPI through pip:
# Install Apprise v1.5.0 from PyPI
pip install apprise==1.5.0
pover://
) (#843)ntfy://
) now correctly displays attached images inline (#892)matrix://
) bugfix with the internal URL generation when a port
is not provided. (#900)tgram://
) correctly places attachments in thread when specified (#893)Apprise is available on PyPI through pip:
# Install Apprise v1.4.5 from PyPI
pip install apprise==1.4.5