from lib import *
import os
import argparse


def parse_args():
    parser = argparse.ArgumentParser(
        description='Download clips from a course',
    )

    parser.add_argument('course_id', type=str, help='Course ID')
    parser.add_argument('--out-dir', type=str,
                        help='Output directory', default='./out')
    parser.add_argument('--starter-url', type=str,
                        help='Starter URL', default="https://www.fau.tv/auth/sso")

    parser.add_argument('--start-at', type=int,
                        help='Skip all previous indices (index starts at 1)', default=1)
    parser.add_argument('--only', type=int,
                        help='Only download the given index')

    parser.add_argument('--auth-token', type=str)
    parser.add_argument('--session-id', type=str)
    parser.add_argument('--session-ci', type=str)
    parser.add_argument('--csrf-cookie', type=str)

    parser.add_argument('--no-auth', action='store_true')

    return parser.parse_args()


def main():
    args = parse_args()

    try:
        if not args.no_auth and args.auth_token and args.session_id and args.session_ci:
            set_token(args.auth_token, args.session_id,
                      args.session_ci, args.csrf_cookie)
        elif not args.no_auth:
            load_token(args.starter_url)

        os.makedirs(args.out_dir, exist_ok=True)

        for index, clip_id in enumerate(get_course_clip_ids(args.course_id)):
            if args.only is not None:
                if index != args.only - 1:
                    continue
            elif index < args.start_at - 1:
                continue

            download_clip(
                clip_id, f'{args.out_dir}/{index+1:04d}_{clip_id}.mp4')
    except KeyboardInterrupt:
        pass


if __name__ == '__main__':
    main()