import os import argparse import requests def get_args(): parser = argparse.ArgumentParser() parser.add_argument('--message', type=str, help='Message text') parser.add_argument('--title', type=str, help='Message title') parser.add_argument('--url', type=str, help='Supplementary URL to show with your message') parser.add_argument('--url_title', type=str, help='title for your supplementary URL, otherwise just the URL is shown') parser.add_argument('--device', type=str, help='Device name to send the message directly to') parser.add_argument('--priority', type=int, help='Notification priority (low-to-high: -2 to 1)') parser.add_argument('--sound', type=str, help='The name of a supported sound (https://pushover.net/api#sounds; custom sounds are supported)') args = parser.parse_args() return args def main(): args = get_args() token = os.environ['PUSHOVER_APP_TOKEN'] user = os.environ['PUSHOVER_USER_TOKEN'] msg: str = args.message title: str | None = args.title if args.title else None url: str | None = args.url if args.url else None url_title: str | None = args.url_title if args.url_title else None device: str | None = args.device if args.device else None priority: int | None = args.priority if args.priority else None sound: str | None = args.sound if args.sound else None if not msg: print('No message provided') return payload = { 'token' : token, 'user' : user, 'message' : msg } if title: payload['title'] = title if url: payload['url'] = url if url_title: payload['url_title'] = url_title if device: payload['device'] = device if priority: payload['priority'] = priority if sound: payload['sound'] = sound _printable_payload = payload.copy() _printable_payload['token'] = '***' _printable_payload['user'] = '***' print(_printable_payload) response = requests.post( url='https://api.pushover.net/1/messages.json', headers={'Content-Type': 'application/x-www-form-urlencoded'}, data=payload, timeout=60 ) response.raise_for_status() print(response.text) if __name__ == '__main__': main()