import argparse import os import sys from djagitit.tableau import refresh_extracts from loguru import logger from .config import TABLEAU_DATASOURCE_IDS, TABLEAU_SITE def main() -> None: parser = argparse.ArgumentParser(description="Summer playlists pipeline") parser.add_argument( "mode", choices=["skiprate", "discovery", "stats", "stats-agg", "live", "all"], help="Pipeline to run", ) parser.add_argument("--log-file", "-l", default="summer-playlists-cea.log") args = parser.parse_args() log_dir = os.getenv("LOGDIR") if log_dir: logger.add(os.path.join(log_dir, args.log_file), rotation="10 MB", retention=3) if args.mode == "skiprate": from .services.skiprate import run_update result = run_update() if result is None: sys.exit(1) elif args.mode == "discovery": from .services.discovery import run_update result = run_update() if result is None: sys.exit(1) elif args.mode == "stats": from .services.stats import run_update result = run_update() if result is None: sys.exit(1) elif args.mode == "stats-agg": from .services.stats_agg import run_update result = run_update() if result is None: sys.exit(1) elif args.mode == "live": from .services.live import run_update result = run_update() if result is None: sys.exit(1) elif args.mode == "all": from .services.skiprate import run_update as run_skiprate from .services.discovery import run_update as run_discovery from .services.stats import run_update as run_stats from .services.stats_agg import run_update as run_stats_agg result = run_skiprate() if result is None: sys.exit(1) result = run_discovery() if result is None: sys.exit(1) result = run_stats() if result is None: sys.exit(1) result = run_stats_agg() if result is None: sys.exit(1) refresh_extracts(TABLEAU_DATASOURCE_IDS, site=TABLEAU_SITE) if __name__ == "__main__": main()