#!/usr/bin/env python3

import http.cookiejar
import sys

import rookiepy


def export_cookies(output_file: str) -> None:
    raw = rookiepy.firefox(
        domains=[".youtube.com", ".google.com", ".googlevideo.com"]
    )
    if not raw:
        print("ERROR: no YouTube cookies found", file=sys.stderr)
        sys.exit(1)

    cookie_jar = http.cookiejar.MozillaCookieJar(output_file)
    for cookie in raw:
        cookie_jar.set_cookie(
            http.cookiejar.Cookie(
                version=0,
                name=cookie["name"],
                value=cookie["value"],
                port=None,
                port_specified=False,
                domain=cookie["domain"],
                domain_specified=True,
                domain_initial_dot=cookie["domain"].startswith("."),
                path=cookie["path"],
                path_specified=True,
                secure=cookie["secure"],
                expires=cookie["expires"],
                discard=False,
                comment=None,
                comment_url=None,
                rest={},
                rfc2109=False,
            )
        )

    cookie_jar.save(ignore_discard=True, ignore_expires=True)
    print(f"Cookies extracted: {len(raw)}")


if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <output-file>", file=sys.stderr)
        sys.exit(2)
    export_cookies(sys.argv[1])
