#! /usr/bin/env -S uv run --script
# /// script
# requires-python = ">=3.13"
# dependencies = [
#     "beautifulsoup4",
#     "requests",
# ]
# ///

import sys
import requests
from bs4 import BeautifulSoup
import json

def get_destinations(airport_code="BCN"):
    url = f'https://www.flightsfrom.com/{airport_code.upper()}'
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
        "Accept-Language": "en-US,en;q=0.9",
    }

    try:
        response = requests.get(url, headers=headers, timeout=10)
        print(f"Status Code: {response.status_code}")
        if response.status_code != 200:
            print(f"Response Content: {response.text}")
            return "Failed to fetch data. Check the logs for details."

        soup = BeautifulSoup(response.text, 'html.parser')
        destinations = []

        for li in soup.select('ul.uk-list.uk-list-divider.uk-margin-small-top > li.ff-li-list'):
            airport_code = li.select_one('.ff-row-name a').text.strip().split(' ')[0]
            country = li.select_one('.flag-image')['uk-tooltip'].split(' - ')[0]
            duration = li.select_one('.ff-row-duration-mobile .ff-row-text-durationnr').text.strip()
            flights_per_day = li.select_one('.ff-flights-daily, .ff-flights-daily-desktop').text.strip()
            airline = li.select_one('.ff-image-airline')['alt']
            days = [day.text.strip() for day in li.select('.flightsfrom-list-days')]
            destinations.append({
                'airport_code': airport_code,
                'country': country,
                'duration': duration,
                'flights_per_day': flights_per_day,
                'airline': airline,
                'days': days
            })

        return json.dumps(destinations, indent=2)
    except Exception as e:
        print(f"Error: {e}")
        return "An error occurred. Check the logs for details."

if __name__ == '__main__':
    airport_code = "BCN"  # Default value
    if len(sys.argv) > 1:
        airport_code = sys.argv[1]
    print(get_destinations(airport_code))
