# 📝 Fichier source contenant les données
INPUT_FILE = "films_list.txt"
OUTPUT_FILE = "converted_magnets.txt"

# 📌 Fonction pour parser et convertir les données
def parse_and_convert():
    output_lines = []
    total_lines = 0
    processed_lines = 0
    skipped_lines = 0

    try:
        with open(INPUT_FILE, "r", encoding="utf-8") as file:
            for line in file:
                total_lines += 1
                line = line.strip()
                if not line:
                    skipped_lines += 1
                    print(f"⚠️ Ligne vide ignorée.")
                    continue  # Ignore les lignes vides

                parts = line.split("##")
                if len(parts) < 6:  # Vérifie si toutes les parties attendues sont présentes
                    skipped_lines += 1
                    print(f"⚠️ Ligne ignorée (format incorrect) : {line}")
                    continue
                
                # Extraction des données
                title_id = parts[1].strip()  # ID du film (inutilisé ici)
                hash_code = parts[4].strip()  # Le hash BTIH
                title = parts[5].strip()  # Le titre du film avec qualité

                # Vérification si le hash est valide (40 caractères)
                if len(hash_code) != 40 or not all(c in "0123456789abcdefABCDEF" for c in hash_code):
                    skipped_lines += 1
                    print(f"⚠️ Hash invalide ignoré : {hash_code}")
                    continue
                
                # Génération de la ligne au bon format
                formatted_line = f"{title} | {hash_code} | magnet:?xt=urn:btih:{hash_code}"
                output_lines.append(formatted_line)
                processed_lines += 1

        if processed_lines == 0:
            print("\n❌ Aucune ligne valide n'a été trouvée dans le fichier.")
        else:
            print(f"\n✅ {processed_lines} lignes converties sur {total_lines}.")

    except FileNotFoundError:
        print(f"❌ Le fichier {INPUT_FILE} est introuvable.")
        return []

    return output_lines

# 📌 Sauvegarde du fichier formaté
def save_output(output_lines):
    if not output_lines:
        print("❌ Aucun résultat à sauvegarder.")
        return
    
    with open(OUTPUT_FILE, "w", encoding="utf-8") as file:
        file.write("\n".join(output_lines))
    print(f"\n✅ Conversion terminée. Résultat sauvegardé dans {OUTPUT_FILE}")

# 🚀 Exécution du script
if __name__ == "__main__":
    converted_data = parse_and_convert()
    save_output(converted_data)
