1
0
personal-data/personal_data/__main__.py
Jon Michael Aanes 119b380f8a
Some checks failed
Run Python tests (through Pytest) / Test (push) Failing after 28s
Verify Python project can be installed, loaded and have version checked / Test (push) Failing after 26s
Use new improved cloudflare avoider
2025-06-16 23:24:09 +02:00

63 lines
1.7 KiB
Python

import argparse
import logging
logging.basicConfig()
logging.getLogger('personal_data').setLevel('INFO')
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():
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()