#!/usr/bin/python3
"""Download CSV of flights from OpenFlights."""

import configparser
import os.path

from playwright.sync_api import Playwright, sync_playwright

config_file_path = os.path.expanduser(
    os.path.join(os.getenv("XDG_CONFIG_HOME", "~/.config"), "OpenFlights", "config")
)

config = configparser.ConfigParser()

config.read(os.path.expanduser(config_file_path))

backup_dir = os.path.expanduser(config.get("backup", "backup_dir"))
username = config.get("backup", "username")
password = config.get("backup", "password")


def run(playwright: Playwright) -> None:
    """Run backup."""
    browser = playwright.chromium.launch(headless=True)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://openflights.org/")
    page.locator('input[name="name"]').fill(username)
    page.locator('input[name="pw"]').fill(password)
    page.get_by_role("button", name="Log in").click()
    page.get_by_role("button", name="Settings").click()
    with page.expect_download() as download_info:
        page.get_by_role("button", name="Backup to CSV").click()
    download = download_info.value
    download.save_as(os.path.join(backup_dir, download.suggested_filename))
    page.close()

    context.storage_state(path="auth.json")
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)