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 > <-p|--plugin > 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: