#!/usr/bin/env python3
"""Cherche des candidats d'hymnes sur Deezer et mesure la durée de preview."""
import json
import subprocess
import sys
import tempfile
import urllib.parse
import urllib.request


def search(query, limit=12):
    url = "https://api.deezer.com/search?" + urllib.parse.urlencode(
        {"q": query, "limit": limit}
    )
    with urllib.request.urlopen(url, timeout=15) as r:
        return json.load(r).get("data", [])


def measure(url):
    if not url:
        return None
    try:
        with tempfile.NamedTemporaryFile(suffix=".mp3", delete=True) as tmp:
            with urllib.request.urlopen(url, timeout=20) as r:
                tmp.write(r.read())
            tmp.flush()
            out = subprocess.run(
                ["afinfo", tmp.name], capture_output=True, text=True
            ).stdout
            for line in out.splitlines():
                if "estimated duration" in line:
                    return float(line.split(":")[1].strip().split(" ")[0])
    except Exception:
        return None
    return None


for query in sys.argv[1:]:
    print(f"\n### {query}")
    for t in search(query):
        dur = measure(t.get("preview", ""))
        print(
            f"{t['id']:>12} | prev {dur if dur else 'N/A'}s | track {t['duration']}s | "
            f"{t['title']} — {t['artist']['name']}"
        )
