diff --git a/Deepl-Trad/Deepl-Trad.py b/Deepl-Trad/Deepl-Trad.py index 92f8aea..227f2bb 100755 --- a/Deepl-Trad/Deepl-Trad.py +++ b/Deepl-Trad/Deepl-Trad.py @@ -10,7 +10,7 @@ # Listes des couleur def colored_text(text, color_code): - return f"\033[{color_code}{text}\033[0m" + return f"\033[{color_code}{text}\033[0m" # print(colored_text("Texte en Gris", "90m")) # print(colored_text("Texte en Rouge", "91m")) @@ -24,20 +24,24 @@ def colored_text(text, color_code): # Fonction pour récupérer la valeur du compteur de caractères def get_character_count(count_file): - if os.path.exists(count_file): - with open(count_file, "r") as f: - data = json.load(f) - character_count = data.get("character_count", 0) - return character_count - else: - # Si le fichier n'existe pas, le compteur est à zéro - return 0 + if os.path.exists(count_file): + with open(count_file, "r") as f: + data = json.load(f) + character_count = data.get("character_count", 0) + return character_count + else: + # Si le fichier n'existe pas, le compteur est à zéro + return 0 + +# Fonction pour obtenir le répertoire d'origine du script +def get_origin_path(): + return os.path.dirname(os.path.realpath(__file__)) # Fonction pour traduire un texte avec DeepL def translate_with_deepl(text, source_lang, target_lang, auth_key): - translator = deepl.Translator(auth_key) - result = translator.translate_text(text, source_lang=source_lang, target_lang=target_lang) - return result.text + translator = deepl.Translator(auth_key) + result = translator.translate_text(text, source_lang=source_lang, target_lang=target_lang) + return result.text # Fonction pour traduire un fichier def translate_file(input_file, source_lang, target_lang, auth_key, count_file, shell_script): @@ -57,11 +61,15 @@ def translate_file(input_file, source_lang, target_lang, auth_key, count_file, s # Extraire le nom du fichier (sans extension) ou du répertoire file_name, _ = os.path.splitext(os.path.basename(input_file)) - # Créer le chemin du répertoire de résultat - result_dir = os.path.expanduser('~/Deepl/Result') + # Obtenez le répertoire d'origine du script + script_origin_path = get_origin_path() + + # Créer le chemin du répertoire de résultat dans le répertoire d'origine + result_dir = os.path.join(script_origin_path, "result") + os.makedirs(result_dir, exist_ok=True) # Créer le répertoire s'il n'existe pas - # Créer le nom du fichier traduit + # Créer le nom du fichier traduit dans le répertoire de résultat output_file = os.path.join(result_dir, f"{file_name}_{target_lang}.md") # Écrire le texte traduit dans le fichier de sortie @@ -80,7 +88,7 @@ def translate_file(input_file, source_lang, target_lang, auth_key, count_file, s # Affiche la sortie d'erreur standard (stderr) de la commande print(colored_text("Erreur de la commande Shell:", "91m")) print(result.stderr) - + print("Nombre de caractères utilisés:", character_count) print("Nombre de caractères restants:", current_character_count) else: @@ -89,51 +97,51 @@ def translate_file(input_file, source_lang, target_lang, auth_key, count_file, s print("Nombre de caractères disponibles:", current_character_count) def main(): - # Chemin du fichier de clé API DeepL - deepl_api_key_path = os.path.expanduser("~/.config/Deepl/Key.txt") - - if os.path.isfile(deepl_api_key_path): - with open(deepl_api_key_path, 'r') as f: - DEEPL_AUTH_KEY = f.read().strip() - else: - print(colored_text("Erreur : Le fichier Key.txt est introuvable dans ~/.config/Deepl/", "91m")) - print(colored_text("Veuillez créer un fichier Key.txt dans ce répertoire avec votre clé API DeepL.", "91m")) - return # Arrêter le script en cas d'erreur - - # Chemin du fichier de compteur - count_file = os.path.expanduser("~/.config/Deepl/Deepl-Count.json") - - # Chemin vers le script Shell - shell_script = "~/Deepl/Count.sh" - - # Demander la langue source - # source_lang = input("Langue source (par exemple, FR, EN, DE) : ") - source_lang_prompt = "Langue source (par exemple, FR, EN, DE) : " - source_lang_prompt = re.sub(r'\bsource\b', colored_text('source','93m'), source_lang_prompt) - source_lang = input(source_lang_prompt) - - # Demander la langue cible - # target_lang = input("Langue cible (par exemple, FR, EN, DE) : ") - target_lang_prompt = "Langue cible (par exemple, FR, EN, DE) : " - target_lang_prompt = re.sub(r'\bcible\b', colored_text('cible','93m'), target_lang_prompt) - target_lang = input(target_lang_prompt) - - # Passer en revue les fichiers dans le répertoire ou traiter le fichier d'entrée - input_path_prompt = "Entrez le chemin vers le fichier ou le répertoire INPUT : " - input_path_prompt = re.sub(r'\bINPUT\b', colored_text('INPUT','91m'), input_path_prompt) - input_path = input(input_path_prompt) - - if os.path.isfile(input_path): - # Si c'est un fichier, traduire le fichier - translate_file(input_path, source_lang, target_lang, DEEPL_AUTH_KEY, count_file, shell_script) - elif os.path.isdir(input_path): - # Si c'est un répertoire, parcourir les fichiers et traduire chaque fichier texte - for root, _, files in os.walk(input_path): - for file in files: - if file.endswith(".md"): - translate_file(os.path.join(root, file), source_lang, target_lang, DEEPL_AUTH_KEY, count_file, shell_script) - else: - print(colored_text("Le chemin spécifié n'existe pas.", "91m")) + # Chemin du fichier de clé API DeepL + deepl_api_key_path = os.path.expanduser("~/.config/Deepl/Key.txt") + + if os.path.isfile(deepl_api_key_path): + with open(deepl_api_key_path, 'r') as f: + DEEPL_AUTH_KEY = f.read().strip() + else: + print(colored_text("Erreur : Le fichier Key.txt est introuvable dans ~/.config/Deepl/", "91m")) + print(colored_text("Veuillez créer un fichier Key.txt dans ce répertoire avec votre clé API DeepL.", "91m")) + return # Arrêter le script en cas d'erreur + + # Chemin du fichier de compteur + count_file = os.path.expanduser("~/.config/Deepl/Deepl-Count.json") + + # Chemin vers le script Shell + shell_script = "~/Deepl/Count.sh" + + # Demander la langue source + source_lang_prompt = "Langue source (par exemple, FR, EN, DE) : " + source_lang_prompt = re.sub(r'\bsource\b', colored_text('source','93m'), source_lang_prompt) + source_lang = input(source_lang_prompt) + + + # Demander la langue cible + target_lang_prompt = "Langue cible (par exemple, FR, EN, DE) : " + target_lang_prompt = re.sub(r'\bcible\b', colored_text('cible','93m'), target_lang_prompt) + target_lang = input(target_lang_prompt) + + + # Passer en revue les fichiers dans le répertoire ou traiter le fichier d'entrée + input_path_prompt = "Entrez le chemin vers le fichier ou le répertoire INPUT : " + input_path_prompt = re.sub(r'\bINPUT\b', colored_text('INPUT','91m'), input_path_prompt) + input_path = input(input_path_prompt) + + if os.path.isfile(input_path): + # Si c'est un fichier, traduire le fichier + translate_file(input_path, source_lang, target_lang, DEEPL_AUTH_KEY, count_file, shell_script) + elif os.path.isdir(input_path): + # Si c'est un répertoire, parcourir les fichiers et traduire chaque fichier texte + for root, _, files in os.walk(input_path): + for file in files: + if file.endswith(".md"): + translate_file(os.path.join(root, file), source_lang, target_lang, DEEPL_AUTH_KEY, count_file, shell_script) + else: + print(colored_text("Le chemin spécifié n'existe pas.", "91m")) if __name__ == "__main__": - main() + main()