import requests
import time
import random

BASE_URL = "https://yggapi.eu/torrent/{}"
INPUT_FILE = "result.txt"
OUTPUT_FILE = "hash.txt"

def fetch_torrent_data(torrent_id):
    url = BASE_URL.format(torrent_id)
    print(f"Requête envoyée: {url}")  # Log de l'URL requêtée
    try:
        response = requests.get(url, timeout=10)
        print(f"Statut de la réponse: {response.status_code}")  # Log du code HTTP
        response.raise_for_status()
        json_data = response.json()
        print(f"Réponse JSON: {json_data}")  # Log des données reçues
        return json_data
    except requests.exceptions.RequestException as e:
        print(f"Erreur lors de la récupération de l'ID {torrent_id}: {e}")
        return None

def main():
    with open(INPUT_FILE, "r", encoding="utf-8") as f:
        lines = f.readlines()

    with open(OUTPUT_FILE, "a", encoding="utf-8") as f:  # Utilisation du mode "append"
        for line in lines:
            try:
                parts = line.strip().split(" │ ID=")
                if len(parts) != 2:
                    print(f"Ligne mal formattée ignorée: {line.strip()}")
                    continue
                
                title, torrent_id = parts[0].replace("TITRE=", ""), parts[1]
                print(f"Traitement de: {title} (ID: {torrent_id})")
                
                data = fetch_torrent_data(torrent_id)
                
                if data and "hash" in data:
                    magnet_link = f"magnet:?xt=urn:btih:{data['hash']}"
                    f.write(f"{title} | {data['hash']} | {magnet_link}\n")
                    f.flush()  # Assurer l'écriture immédiate dans le fichier
                else:
                    print(f"Hash introuvable pour l'ID {torrent_id}.")

                # Pause aléatoire entre 2 et 5 secondes pour éviter de surcharger le serveur
                sleep_time = random.uniform(0, 0)
                print(f"Pause de {sleep_time:.2f} secondes...")
                time.sleep(sleep_time)
            except Exception as e:
                print(f"Erreur lors du traitement de la ligne: {line.strip()} - {e}")

    print(f"Données enregistrées dans {OUTPUT_FILE}")

if __name__ == "__main__":
    main()
