63 lines
1.7 KiB
Python
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()
|