Spaces:
Sleeping
Sleeping
import os | |
import sys | |
import subprocess | |
from iso639 import languages | |
from deep_translator import GoogleTranslator | |
from tqdm import tqdm | |
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) | |
sys.path.append(parent_dir) | |
# Your language mapping dictionary from lang.py | |
from lib.lang import language_mapping | |
env = os.environ.copy() | |
env["PYTHONIOENCODING"] = "utf-8"; | |
env["LANG"] = "en_US.UTF-8" | |
# Base text to be translated | |
base_text = "This is a test from the result of text file to audiobook conversion." | |
# Output directory | |
output_dir = "../ebooks/tests" | |
if not os.path.exists(output_dir): | |
os.makedirs(output_dir) | |
# Path to your base cover image (adjust the path accordingly) | |
base_cover_image = "../ebooks/tests/__cover.jpg" | |
# List to keep track of languages that failed | |
failed_languages = [] | |
# Loop over languages with a progress bar | |
for lang_code, lang_info in tqdm(language_mapping.items(), desc="Processing languages"): | |
try: | |
lang_iso = lang_code | |
language_array = languages.get(part3=lang_code) | |
if language_array and language_array.part1: | |
lang_iso = language_array.part1 | |
if lang_iso == "zh": | |
lang_iso = "zh-CN" | |
# Translate the text | |
translated_text = GoogleTranslator(source='en', target=lang_iso).translate(base_text) | |
print(f"\nTranslated text for {lang_info['name']} ({lang_iso}): {translated_text}") | |
# Write the translated text to a txt file | |
txt_filename = f"test_{lang_code}.txt" | |
txt_filepath = os.path.join(output_dir, txt_filename) | |
with open(txt_filepath, 'w', encoding='utf-8') as f: | |
f.write(translated_text) | |
# Prepare the ebook-convert command | |
azw3_filename = f"test_{lang_code}.azw3" | |
azw3_filepath = os.path.join(output_dir, azw3_filename) | |
title = f"Ebook {lang_info['name']} Test" | |
authors = "Dev Team" | |
language = lang_iso | |
command = [ | |
"ebook-convert", | |
txt_filepath, | |
azw3_filepath, | |
"--cover", base_cover_image, | |
"--title", title, | |
"--authors", authors, | |
"--language", language, | |
"--input-encoding", "utf-8" | |
] | |
result = subprocess.run(command, env=env, text=True, encoding="utf-8") | |
print(f"Ebook generated for {lang_info['name']} at {azw3_filepath}\n") | |
except Exception as e: | |
print(f"Erro: language {lang_code} not supported!") | |
failed_languages.append(lang_code) | |
continue | |
# After processing all languages, output the list of languages that failed | |
if failed_languages: | |
print("\nThe following languages could not be processed:") | |
for lang_code in failed_languages: | |
lang_name = language_mapping[lang_code]['name'] | |
print(f"- {lang_name} ({lang_code})") | |