import tkinter as tk
from tkinter import filedialog, messagebox
import subprocess
import os

def convert_to_mp3():
    # Creează o fereastră invizibilă
    root = tk.Tk()
    root.withdraw()  # Ascunde fereastra principală

    # Deschide dialogul pentru a selecta fișierul TXT
    txt_file = filedialog.askopenfilename(
        title="Selectează fișierul TXT",
        filetypes=[("Fișiere text", "*.txt")]
    )

    if not txt_file:
        return  # Dacă utilizatorul anulează, ieși

    try:
        # Creează calea pentru fișierele temporare și finale
        base_name = os.path.splitext(txt_file)[0]
        temp_wav = base_name + "_temp.wav"
        output_mp3 = base_name + ".mp3"

        # Comandă espeak-ng pentru a citi direct din fișier
        espeak_cmd = [
            "espeak-ng",
            "-v", "ro",  # Voce în română
            "-f", txt_file,  # Citește textul din fișier
            "-w", temp_wav
        ]
        subprocess.run(espeak_cmd, check=True, shell=False)

        # Comandă ffmpeg pentru a converti WAV în MP3
        ffmpeg_cmd = [
            "ffmpeg",
            "-i", temp_wav,
            "-acodec", "mp3",
            "-y",  # Suprascrie fișierul MP3 dacă există
            output_mp3
        ]
        subprocess.run(ffmpeg_cmd, check=True, shell=False)

        # Șterge fișierul WAV temporar
        if os.path.exists(temp_wav):
            os.remove(temp_wav)

        # Afișează mesaj de succes
        messagebox.showinfo("Succes", f"Fișierul {output_mp3} a fost creat!")

    except subprocess.CalledProcessError as e:
        messagebox.showerror("Eroare", f"A apărut o eroare la procesare: {e}")
    except Exception as e:
        messagebox.showerror("Eroare", f"Eroare neașteptată: {e}")

    finally:
        root.destroy()  # Închide fereastra invizibilă

if __name__ == "__main__":
    convert_to_mp3()
