推送通知几乎适用于每个平台!

apprise的Python项目详细描述


Apprise Logo


ap·prise/verb
通知或告诉(某人)使某人意识到某事。


apprise允许您向apprise发送通知,这些通知几乎是我们今天可以使用的所有最流行的notification服务,例如:电报、不和、松弛、twitter等。

  • 一个通知库来管理它们。
  • 一种常见且直观的通知语法。
  • 支持处理图像(到将接受图像的通知服务)。

希望提供通知服务的系统所有者不再需要研究每一个新的消息。他们只需要包含这一个库,然后他们就可以立即访问我们今天可以使用的几乎所有通知服务。

希望从计划任务或命令行发送通知的系统管理员也不再需要为作业找到正确的工具。本产品附带的apprise脚本中已经包装并支持了所有内容。

PaypalBeerpay
DiscordPythonBuild StatusCodeCov StatusPyPi

支持的通知

此部分标识此库支持的所有服务。Check out the wiki for more information on the supported modules here

热门通知服务

下表列出了此工具支持的服务和一些示例服务url,您需要使用这些url才能利用它。

Notification ServiceService IDDefault PortExample Syntax
Boxcarboxcar://(TCP) 443boxcar://hostname
boxcar://hostname/@tag
boxcar://hostname/device_token
boxcar://hostname/device_token1/device_token2/device_tokenN
boxcar://hostname/@tag/@tag2/device_token
Discorddiscord://(TCP) 443discord://webhook_id/webhook_token
discord://avatar@webhook_id/webhook_token
Dbusdbus://
qt://
glib://
kde://
n/adbus://
qt://
glib://
kde://
Embyemby:// or embys://(TCP) 8096emby://user@hostname/
emby://user:password@hostname
Faastfaast://(TCP) 443faast://authorizationtoken
Flockflock://(TCP) 443flock://token
flock://botname@token
flock://app_token/u:userid
flock://app_token/g:channel_id
flock://app_token/u:userid/g:channel_id
Gittergitter://(TCP) 443gitter://token/room
gitter://token/room1/room2/roomN
Gnomegnome://n/agnome://
Gotifygotify:// or gotifys://(TCP) 80 or 443gotify://hostname/token
gotifys://hostname/token?priority=high
Growlgrowl://(UDP) 23053growl://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
IFTTTifttt://(TCP) 443ifttt://webhooksID/Event
ifttt://webhooksID/Event1/Event2/EventN
ifttt://webhooksID/Event1/?+Key=Value
ifttt://webhooksID/Event1/?-Key=value1
Joinjoin://(TCP) 443join://apikey/device
join://apikey/device1/device2/deviceN/
join://apikey/group
join://apikey/groupA/groupB/groupN
join://apikey/DeviceA/groupA/groupN/DeviceN/
KODIkodi:// or kodis://(TCP) 8080 or 443kodi://hostname
kodi://user@hostname
kodi://user:password@hostname:port
Mailgunmailgun://(TCP) 443mailgun://user@hostname/apikey
mailgun://user@hostname/apikey/email
mailgun://user@hostname/apikey/email1/email2/emailN
mailgun://user@hostname/apikey/?name="From%20User"
Matrixmatrix:// or matrixs://(TCP) 80 or 443matrix://hostname
matrix://user@hostname
matrixs://user:pass@hostname:port/#room_alias
matrixs://user:pass@hostname:port/!room_id
matrixs://user:pass@hostname:port/#room_alias/!room_id/#room2
matrixs://token@hostname:port/?webhook=matrix
matrix://user:token@hostname/?webhook=slack&format=markdown
Mattermostmmost://(TCP) 8065mmost://hostname/authkey
mmost://hostname:80/authkey
mmost://user@hostname:80/authkey
mmost://hostname/authkey?channel=channel
mmosts://hostname/authkey
mmosts://user@hostname/authkey
Microsoft Teamsmsteams://(TCP) 443msteams://TokenA/TokenB/TokenC/
Prowlprowl://(TCP) 443prowl://apikey
prowl://apikey/providerkey
PushBulletpbul://(TCP) 443pbul://accesstoken
pbul://accesstoken/#channel
pbul://accesstoken/A_DEVICE_ID
pbul://accesstoken/email@address.com
pbul://accesstoken/#channel/#channel2/email@address.net/DEVICE
Pushjetpjet:// or pjets://(TCP) 80 or 443pjet://secret@hostname
pjet://secret@hostname:port
pjets://secret@hostname
pjets://secret@hostname:port
Push (Techulus)push://(TCP) 443push://apikey/
Pushedpushed://(TCP) 443pushed://appkey/appsecret/
pushed://appkey/appsecret/#ChannelAlias
pushed://appkey/appsecret/#ChannelAlias1/#ChannelAlias2/#ChannelAliasN
pushed://appkey/appsecret/@UserPushedID
pushed://appkey/appsecret/@UserPushedID1/@UserPushedID2/@UserPushedIDN
Pushoverpover://(TCP) 443pover://user@token
pover://user@token/DEVICE
pover://user@token/DEVICE1/DEVICE2/DEVICEN
Note: you must specify both your user_id and token
Rocket.Chatrocket:// or rockets://(TCP) 80 or 443rocket://user:password@hostname/RoomID/Channel
rockets://user:password@hostname:443/#Channel1/#Channel1/RoomID
rocket://user:password@hostname/#Channel
rocket://webhook@hostname
rockets://webhook@hostname/@User/#Channel
Ryverryver://(TCP) 443ryver://Organization/Token
ryver://botname@Organization/Token
Slackslack://(TCP) 443slack://TokenA/TokenB/TokenC/
slack://TokenA/TokenB/TokenC/Channel
slack://botname@TokenA/TokenB/TokenC/Channel
slack://user@TokenA/TokenB/TokenC/Channel1/Channel2/ChannelN
Telegramtgram://(TCP) 443tgram://bottoken/ChatID
tgram://bottoken/ChatID1/ChatID2/ChatIDN
Twittertwitter://(TCP) 443twitter://CKey/CSecret/AKey/ASecret
twitter://user@CKey/CSecret/AKey/ASecret
twitter://CKey/CSecret/AKey/ASecret/User1/User2/User2
twitter://CKey/CSecret/AKey/ASecret?mode=tweet
Twisttwist://(TCP) 443twist://pasword:login
twist://password:login/#channel
twist://password:login/#team:channel
twist://password:login/#team:channel1/channel2/#team3:channel
XBMCxbmc:// or xbmcs://(TCP) 8080 or 443xbmc://hostname
xbmc://user@hostname
xbmc://user:password@hostname:port
XMPPxmpp:// or xmpps://(TCP) 5222 or 5223xmpp://password@hostname
xmpp://user:password@hostname
xmpps://user:password@hostname:port?jid=user@hostname/resource
xmpps://password@hostname/target@myhost, target2@myhost/resource
Windows Notificationwindows://n/awindows://
Webex Teams (Cisco)wxteams://(TCP) 443wxteams://Token
Zulip Chatzulip://(TCP) 443zulip://botname@Organization/Token
zulip://botname@Organization/Token/Channel
zulip://botname@Organization/Token/Email

短信通知支持

Notification ServiceService IDDefault PortExample Syntax
AWS SNSsns://(TCP) 443sns://AccessKeyID/AccessSecretKey/RegionName/+PhoneNo
sns://AccessKeyID/AccessSecretKey/RegionName/+PhoneNo1/+PhoneNo2/+PhoneNoN
sns://AccessKeyID/AccessSecretKey/RegionName/Topic
sns://AccessKeyID/AccessSecretKey/RegionName/Topic1/Topic2/TopicN
D7 Networksd7sms://(TCP) 443d7sms://user:pass@PhoneNo
d7sms://user:pass@ToPhoneNo1/ToPhoneNo2/ToPhoneNoN
Nexmonexmo://(TCP) 443nexmo://ApiKey:ApiSecret@FromPhoneNo
nexmo://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo
nexmo://ApiKey:ApiSecret@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
Twiliotwilio://(TCP) 443twilio://AccountSid:AuthToken@FromPhoneNo
twilio://AccountSid:AuthToken@FromPhoneNo/ToPhoneNo
twilio://AccountSid:AuthToken@FromPhoneNo/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/
twilio://AccountSid:AuthToken@ShortCode/ToPhoneNo
twilio://AccountSid:AuthToken@ShortCode/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/

电子邮件支持

Service IDDefault PortExample Syntax
mailto://(TCP) 25mailto://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://mySendingUsername:mySendingPassword@example.com?to=receivingAddress@example.com
mailto://userid:password@example.com?smtp=mail.example.com&from=noreply@example.com&name=no%20reply
mailtos://(TCP) 587mailtos://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://mySendingUsername:mySendingPassword@example.com?to=receivingAddress@example.com
mailtos://userid:password@example.com?smtp=mail.example.com&from=noreply@example.com&name=no%20reply

apprise内置了一些电子邮件服务(如yahoo、fastmail、hotmail、gmail等),大大简化了mailto:/服务。查看更多详细信息here

自定义通知

Post MethodService IDDefault PortExample Syntax
JSONjson:// or jsons://(TCP) 80 or 443json://hostname
json://user@hostname
json://user:password@hostname:port
json://hostname/a/path/to/post/to
XMLxml:// or xmls://(TCP) 80 or 443xml://hostname
xml://user@hostname
xml://user:password@hostname:port
xml://hostname/a/path/to/post/to

安装

最简单的方法是从pypi安装这个包:

pip install apprise

命令行

这个包还提供了一个名为apprise的小型命令行工具。如果您知道要通知的服务器url,只需在命令行中提供它们,然后按以下方式发送通知:

# Send a notification to as many servers as you want# as you can easily chain one after another:
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'# The title field is totally optional
uptime | apprise \'discord:///4174216298/JHMHI8qBe7bk2ZwO5U711o3dV_js'

配置文件

没有人想在命令行上显示所有人的凭据。没问题apprise也支持配置文件。它可以处理特定的YAML format或非常简单的TEXT format。您也可以通过http查询来获取这些配置文件!有关APVISE配置的更多信息,请参见here

# By default now if no url or configuration is specified aprise will# peek for this data in:#  ~/.apprise#  ~/.apprise.yml#  ~/.config/apprise#  ~/.config/apprise.yml# Windows users can store their default configuration files here:#  %APPDATA%/Apprise/apprise#  %APPDATA%/Apprise/apprise.yml#  %LOCALAPPDATA%/Apprise/apprise#  %LOCALAPPDATA%/Apprise/apprise.yml# If you loaded one of those files, your command line gets really easy:
apprise -t 'my title' -b 'my notification body'# Know the location of the configuration source? No problem, just# specify it.
apprise -t 'my title' -b 'my notification body'\
	--config=/path/to/my/config.yml

# Got lots of configuration locations? No problem, specify them all:
apprise -t 'my title' -b 'my notification body'\
	--config=/path/to/my/config.yml \
	--config=https://localhost/my/apprise/config

开发人员

要从python应用程序内部发送通知,请执行以下操作:

importapprise# Create an Apprise instanceapobj=apprise.Apprise()# Add all of the notification services by their server url.# A sample email notificationapobj.add('mailto://myemail:mypass@gmail.com')# A sample pushbullet notificationapobj.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(body='what a great notification service!',title='my notification title',)

配置文件

开发人员也需要访问配置文件。好消息是,它们的使用只涉及声明另一个对象(称为appriseconfig),该对象可以摄取apprise。您还可以自由地混合和匹配配置和通知条目,只要您愿意!

importapprise# Create an Apprise instanceapobj=apprise.Apprise()# Create an Config instanceconfig=apprise.AppriseConfig()# Add a configuration source:config.add('/path/to/my/config.yml')# Add another...config.add('https://myserver:8080/path/to/config')# Make sure to add our config into our apprise objectapobj.add(config)# You can mix and match; add an entry directly if you want too# In this entry we associate the 'admin' tag with our notificationapobj.add('mailto://myemail:mypass@gmail.com',tag='admin')# Then notify these services any time you desire. The below would# notify all of the services loaded into our Apprise object; this includes# all items identified in the configuration files.apobj.notify(body='what a great notification service!',title='my notification title',)# If you're using tagging, then you can load all of your notifications# but only selectively notify the ones associated with one or more # matched tags:apobj.notify(body='send a notification to our admin group'title='Attention Admins',# notify any services tagged with the 'admin' tagtag='admin',)

如果您有兴趣阅读有关如何自定义通知的此方法和其他方法的更多信息,请访问https://github.com/caronc/apprise/wiki/Development_API

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java ModelRenderable具有多个子图,仅显示一个子图   java如何通过引用从Firebase获取一个对象数据   java GraphQL SPQR扩展输入对象的参数   多线程java并发、生产者(代理)和消费者   这个黑客试图用这个Java代码做什么?   java共享库编译,但有未定义的符号   java对基元类型使用常量或枚举   serversocket 安卓/ios聊天应用服务器端java实现   javajavax。摆动计时器和jpanel可见性   javacom。太阳邮政smtp。SMTPAddressFailedException:收件人地址被拒绝:需要身份验证   java是使用Hibernate处理数据库中多对一关系中实体并发创建的最佳方法   仅导入服务时的java customsql(Liferay)   java迫使Storm使用胖jar依赖项,而不是类路径定义的依赖项   关于返回参数的oracle java mapper ibatis错误   java Netbeans scala插件无文档   java Eclipse RCP应用程序在长时间不活动后崩溃,为什么?   java Fire base错误安卓   java在2D数组中查找节点位置   使用Jbox2d(java)中的图像