New script for pushing messages
This commit is contained in:
parent
fd68c7b4da
commit
1bb0527adc
1 changed files with 81 additions and 0 deletions
81
pusher.py
Normal file
81
pusher.py
Normal file
|
@ -0,0 +1,81 @@
|
|||
import json
|
||||
import os
|
||||
import sys
|
||||
import yaml
|
||||
|
||||
from getopt import getopt
|
||||
from pushbullet import Pushbullet
|
||||
|
||||
def get_config():
|
||||
curdir = os.path.dirname(os.path.realpath(__file__))
|
||||
config_file = curdir + os.sep + 'config.yaml'
|
||||
config = {}
|
||||
|
||||
with open(config_file,'r') as f:
|
||||
config = yaml.load(f)
|
||||
|
||||
return config
|
||||
|
||||
def print_usage():
|
||||
print ('''Usage: {} [-h|--help] <-t|--target <target name>> <-p|--plugin <plugin name>> payload
|
||||
-h, --help:\t\tShow this help and exit
|
||||
-t, --target:\tName of the target device/host
|
||||
-p, --plugin:\tPlugin to use (e.g. shell or music.mpd)
|
||||
payload:\t\tArguments to the plugin
|
||||
'''.format(sys.argv[0]))
|
||||
|
||||
def main():
|
||||
config = get_config()
|
||||
API_KEY = config['pushbullet']['token']
|
||||
pb = Pushbullet(API_KEY)
|
||||
|
||||
devices = [
|
||||
_ for _ in pb.devices if _.nickname == config['pushbullet']['device']
|
||||
]
|
||||
|
||||
if len(devices) > 0:
|
||||
device = devices[0]
|
||||
else:
|
||||
print('Device {} not found - please create a virtual device on ' +
|
||||
'your PushBullet account'.format(config['pushbullet']['device']))
|
||||
return
|
||||
|
||||
optlist, args = getopt(sys.argv[1:], 'ht:p:',
|
||||
['help', 'target=', 'plugin='])
|
||||
|
||||
target = None
|
||||
plugin = None
|
||||
payload = {}
|
||||
|
||||
for opt, arg in optlist:
|
||||
if opt == 'h' or opt == '--help':
|
||||
print_usage()
|
||||
return
|
||||
elif opt == 't' or opt == '--target':
|
||||
target = arg
|
||||
elif opt == 'p' or opt == '--plugin':
|
||||
plugin = arg
|
||||
|
||||
if len(args):
|
||||
payload = json.loads(args[0])
|
||||
else:
|
||||
payload = sys.stdin.read()
|
||||
|
||||
if not (target and plugin):
|
||||
print_usage()
|
||||
return
|
||||
|
||||
msg = {
|
||||
'target': target,
|
||||
'plugin': plugin,
|
||||
'args': payload,
|
||||
}
|
||||
|
||||
pb.push_note('', json.dumps(msg), device)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
# vim:sw=4:ts=4:et:
|
||||
|
Loading…
Reference in a new issue