import requests
import xml.etree.ElementTree as ET
import json
import re

# 🔹 CONFIGURATION 🔹
RSS_URL = "https://rss.dathomir.fr/rss?id=2183&passkey=fL1fKWqkwxrFvVaznrVccddJIg6eE8Hc"
YGG_API_URL = "https://yggapi.eu/torrent/"
MAGNET_TEMPLATE = "magnet:?xt=urn:btih:{}"
OUTPUT_FILE = "magnets.txt"

DEBUG = False  # 🔍 Mode Debugging

# 🔹 Télécharger et parser le flux RSS 🔹
def fetch_rss():
    response = requests.get(RSS_URL)
    if response.status_code != 200:
        print("❌ Erreur lors du téléchargement du flux RSS.")
        return []
    
    tree = ET.ElementTree(ET.fromstring(response.content))
    root = tree.getroot()

    # 🔍 Extraction des IDs de torrents
    torrents = []
    for item in root.findall(".//item"):
        enclosure = item.find("enclosure")
        if enclosure is not None:
            url = enclosure.attrib.get("url")
            match = re.search(r"id=(\d+)", url)
            if match:
                torrents.append(match.group(1))  # Ajoute l'ID du torrent
    
    print(f"📂 {len(torrents)} torrents détectés dans le flux RSS.")
    return torrents

# 🔹 Obtenir les détails du torrent depuis l'API Yggtorrent 🔹
def fetch_torrent_details(torrent_id):
    url = f"{YGG_API_URL}{torrent_id}"
    response = requests.get(url)
    
    if response.status_code != 200:
        print(f"⚠️ Impossible de récupérer le torrent {torrent_id}")
        return None

    return response.json()

# 🔹 Construire le fichier magnets.txt 🔹
def save_magnets(magnets):
    with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
        for magnet in magnets:
            f.write(f"{magnet}\n")
    print(f"✅ {len(magnets)} magnets enregistrés dans `{OUTPUT_FILE}`")

# 🔹 Processus principal 🔹
def process_torrents():
    torrent_ids = fetch_rss()
    if not torrent_ids:
        print("❌ Aucun torrent trouvé, arrêt du script.")
        return

    magnets_list = []
    for torrent_id in torrent_ids:
        details = fetch_torrent_details(torrent_id)
        if not details:
            continue
        
        title = details.get("title", "Unknown")
        hash_value = details.get("hash", "Unknown")
        magnet_link = MAGNET_TEMPLATE.format(hash_value)

        formatted_line = f"{title} | {hash_value} | {magnet_link}"
        magnets_list.append(formatted_line)

        if DEBUG:
            print(f"✔️ Ajouté : {formatted_line}")

    save_magnets(magnets_list)

# 🔹 Exécuter le script 🔹
if __name__ == "__main__":
    process_torrents()
