76 lines
1.8 KiB
Python
Executable file
76 lines
1.8 KiB
Python
Executable file
#!python
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
import yaml
|
|
|
|
from getopt import getopt
|
|
from pushbullet import Pushbullet
|
|
from runbullet import parse_config_file
|
|
|
|
|
|
def print_usage():
|
|
print ('''Usage: {} [-h|--help] <-t|--target <target name>> <-a|--action <action name>> payload
|
|
-h, --help:\t\tShow this help and exit
|
|
-t, --target:\tName of the target device/host
|
|
-a, --action\tAction to run, it includes both the package name and the method (e.g. shell.exec or music.mpd.play)
|
|
payload:\t\tArguments to the action
|
|
'''.format(sys.argv[0]))
|
|
|
|
def main():
|
|
config = parse_config_file()
|
|
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:a:',
|
|
['help', 'target=', 'action='])
|
|
|
|
target = None
|
|
action = 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 == 'a' or opt == '--action':
|
|
action = arg
|
|
|
|
if len(args):
|
|
payload = json.loads(args[0])
|
|
else:
|
|
payload = json.loads(sys.stdin.read())
|
|
|
|
if not (target and action):
|
|
print_usage()
|
|
return
|
|
|
|
msg = {
|
|
'target': target,
|
|
'action': action,
|
|
**payload,
|
|
}
|
|
|
|
print('msg: {}'.format(msg))
|
|
pb.push_note('', json.dumps(msg), device)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|
|
# vim:sw=4:ts=4:et:
|
|
|