import docx
import sys
import os

def convert_docx_to_txt(input_path):
    # Sprawdzenie czy plik istnieje
    if not os.path.exists(input_path):
        print(f"Błąd: Plik '{input_path}' nie istnieje.")
        return

    # Sprawdzenie rozszerzenia pliku
    if not input_path.lower().endswith('.docx'):
        print(f"Info: Plik '{input_path}' nie jest plikiem .docx, pomijanie.")
        return

    try:
        # Wczytanie dokumentu
        doc = docx.Document(input_path)
        full_text = []

        # Wyciąganie tekstu z każdego akapitu
        for para in doc.paragraphs:
            full_text.append(para.text)

        # Łączenie tekstu znakami nowej linii
        result = "\n".join(full_text)

        # Tworzenie nazwy pliku wyjściowego (zmiana rozszerzenia na .txt)
        output_path = os.path.splitext(input_path)[0] + ".txt"

        # Zapis do pliku tekstowego z kodowaniem UTF-8
        with open(output_path, "w", encoding="utf-8") as f:
            f.write(result)

        print(f"Sukces! Tekst został zapisany w: {output_path}")

    except Exception as e:
        print(f"Wystąpił błąd podczas konwersji pliku {input_path}: {e}")

def process_directory(directory_path):
    for root, dirs, files in os.walk(directory_path):
        for file in files:
            if file.lower().endswith(('.docx', '.doc')):
                file_path = os.path.join(root, file)
                if file.lower().endswith('.doc'):
                    print(f"Info: Konwersja plików .doc nie jest wspierana w tej wersji. Plik: {file_path}")
                else:
                    convert_docx_to_txt(file_path)

if __name__ == "__main__":
    # Obsługa argumentu z linii poleceń
    if len(sys.argv) > 1:
        path_arg = sys.argv[1]
        if os.path.isdir(path_arg):
            process_directory(path_arg)
        elif os.path.isfile(path_arg):
            convert_docx_to_txt(path_arg)
        else:
            print(f"Błąd: Podana ścieżka '{path_arg}' nie jest ani plikiem, ani katalogiem.")
    else:
        path_input = input("Podaj nazwę pliku .docx lub ścieżkę do katalogu: ")
        if os.path.isdir(path_input):
            process_directory(path_input)
        elif os.path.isfile(path_input):
            convert_docx_to_txt(path_input)
        else:
             print(f"Błąd: Podana ścieżka '{path_input}' nie jest ani plikiem, ani katalogiem.")

