2024-07-31 13:33:59 -03:00
|
|
|
import re
|
|
|
|
import time
|
|
|
|
import pandas as pd
|
|
|
|
|
2024-07-31 11:54:44 -03:00
|
|
|
# Diccionario de idiomas
|
|
|
|
IDIOMAS = {
|
2024-07-31 13:33:59 -03:00
|
|
|
0: ("Italian", "it-IT"),
|
2024-07-31 11:54:44 -03:00
|
|
|
1: ("English", "en-GB"),
|
|
|
|
2: ("Portuguese", "pt-PT"),
|
|
|
|
3: ("Spanish", "es-ES"),
|
|
|
|
4: ("Russian", "ru-RU"),
|
|
|
|
5: ("French", "fr-FR"),
|
|
|
|
6: ("German", "de-DE"),
|
|
|
|
}
|
|
|
|
|
|
|
|
def mostrar_idiomas():
|
|
|
|
print("Selecciona el idioma de destino:")
|
|
|
|
for numero, (nombre, _) in IDIOMAS.items():
|
|
|
|
print(f"{numero}: {nombre}")
|
|
|
|
|
|
|
|
def transformar_texto(texto):
|
2024-07-31 13:33:59 -03:00
|
|
|
if pd.isnull(texto):
|
|
|
|
return texto
|
2024-07-31 11:54:44 -03:00
|
|
|
# Sustituir [[digits]] por <>
|
|
|
|
texto_transformado = re.sub(r'\[\[digits\]\]', '<>', texto)
|
|
|
|
# Sustituir cualquier <...> por <#>
|
|
|
|
texto_transformado = re.sub(r'<.*?>', '<#>', texto_transformado)
|
|
|
|
return texto_transformado
|
|
|
|
|
|
|
|
|
|
|
|
def save_dataframe_with_retries(df, output_path, max_retries=5, retry_delay=5):
|
|
|
|
"""
|
|
|
|
Guarda un DataFrame en un archivo Excel, reintentando si el archivo está en uso.
|
|
|
|
|
|
|
|
:param df: El DataFrame a guardar.
|
|
|
|
:param output_path: La ruta del archivo donde se guardará el DataFrame.
|
|
|
|
:param max_retries: El número máximo de reintentos en caso de error.
|
|
|
|
:param retry_delay: El tiempo de espera (en segundos) entre cada reintento.
|
|
|
|
"""
|
|
|
|
retries = 0
|
|
|
|
while retries < max_retries:
|
|
|
|
try:
|
|
|
|
df.to_excel(output_path, index=False)
|
|
|
|
print("Archivo guardado exitosamente.")
|
|
|
|
return
|
|
|
|
except PermissionError as e:
|
2024-07-31 13:33:59 -03:00
|
|
|
print(f"Error de permiso: {e}. Por favor cierre el archivo. Reintentando en {retry_delay} segundos...")
|
2024-07-31 11:54:44 -03:00
|
|
|
retries += 1
|
|
|
|
time.sleep(retry_delay)
|
|
|
|
|
|
|
|
print(f"No se pudo guardar el archivo después de {max_retries} intentos.")
|