apprise/cli/notify.py

76 lines
2.1 KiB
Python
Executable File

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import click
import logging
import sys
from apprise import Apprise
# Logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
@click.command()
@click.option('--title', '-t', default=None, type=str,
help='Specify the message title.')
@click.option('--body', '-b', default=None, type=str,
help='Specify the message body.')
@click.option('--theme', '-T', default='default', type=str,
help='Specify the default theme.')
@click.option('--image-url', '-i', default=None, type=str,
help='Specify the image URL.')
@click.argument('urls', nargs=-1)
def _main(title, body, urls, theme, image_url):
"""
Notify all specified servers
"""
if not (title and body):
logger.error('Neither a message body or title was specified.')
return 1
if not urls:
logger.error('You must specify at least one server URL')
return 1
# Create our object
apprise = Apprise()
# Load our inventory up
for url in urls:
apprise.add(url)
# now print it out
apprise.notify(title=title, body=body)
return 0
# """\
# Usage: apprise [options] [URL ...]
#
# Send notifications to a variety of different supported services.
# See also https://github.com/caronc/apprise
#
# URL The notification service URL
#
# Options:
#
# -h, --help show this message
# -t TITLE, --title TITLE Specify a notification title.
# -b BODY, --body BODY Specify a notification body.
# -i IMGURL, --image IMGURL Specify an image to send with the notification.
# The image should be in the format of a URL
# string such as file:///local/path/to/file.png or
# a remote site like: http://my.host/my.image.png.
# """
if __name__ == '__main__':
exit(_main())