1
0
personal-data/personal_data/__main__.py

63 lines
1.7 KiB
Python

import argparse
import logging
import personal_data.main
from personal_data.notification import NotificationType
def parse_arguments():
available_scraper_names = personal_data.main.available_scraper_names()
if len(available_scraper_names) == 0:
msg = 'Failed to load any scrapers'
raise Exception(msg)
parser = argparse.ArgumentParser(
epilog='Available fetchers: ' + ' '.join(available_scraper_names),
)
parser.add_argument(
'fetchers',
metavar='FETCHER',
type=str,
nargs='+',
choices=available_scraper_names,
)
parser.add_argument('--cookiejar', action='store_true')
parser.add_argument('--email', action='store_true', dest='send_email_notification')
parser.add_argument(
'--loud-sound',
action='store_true',
dest='trigger_loud_and_annoying_sound',
)
parser.add_argument(
'--ignore-cache',
action='store_true',
dest='ignore_cache',
)
return parser.parse_args()
def main():
logging.basicConfig()
logging.getLogger('personal_data').setLevel('INFO')
args = parse_arguments()
scraper_filter = frozenset(args.fetchers)
# Determine notification sounds
notification_types = set()
if args.send_email_notification:
notification_types.add(NotificationType.EMAIL)
if args.trigger_loud_and_annoying_sound:
notification_types.add(NotificationType.LOUD_SOUND)
personal_data.main.main(
scraper_filter,
use_cookiejar=args.cookiejar,
notification_types=frozenset(notification_types),
ignore_cache=args.ignore_cache,
)
if __name__ == '__main__':
main()