Script de traducción de archivos de subtitulos en formato VTT.
En este script se implementa un robot que traduce un archivo en formato VTT (usado para poner subtítulos a un video) usando la interfaz de Google Translator.
import os
import pandas as pd
import re
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
options = Options()
options.binary_location = "C:\\SeleniumDrivers\\chrome-win64\\chrome.exe"
service = Service("C:\\SeleniumDrivers\\chromedriver-win64\\chromedriver.exe")
driver= webdriver.Chrome(service=service, options=options)
driver.set_window_position(0,0)
driver.set_window_size(1024,720)
driver.get("https://translate.google.com.mx/?sl=es&tl=en&op=translate")
time.sleep(5)
captions_dir= "files\\captions"
translations_dir= "files\\translations"
files_list= []
def get_files_list(captions_dir, files_list) -> list:
for f in os.scandir(captions_dir):
if f.is_dir():
get_files_list(f.path, files_list)
else:
files_list.append(f.path)
return files_list
file_paths= get_files_list(captions_dir, files_list)
print(file_paths)
for file_path in file_paths[0:1]:
print("\nTraduciendo el archivo " + file_path)
lines_df= pd.read_table(file_path)
print(lines_df)
regular_exp = re.compile('[0-9]{2}:[0-9]{2}.[0-9]{3} --> [0-9]{2}:[0-9]{2}.[0-9]{3}')
textarea_element= driver.find_element(By.XPATH, "//*[@aria-label='Texto de origen']")
for index, line in lines_df.iterrows():
tmp_line= line["WEBVTT"]
if not regular_exp.match(tmp_line):
textarea_element.send_keys(tmp_line)
time.sleep(4)
transation_element= driver.find_element(By.XPATH, "/html/body/c-wiz/div/div[2]/c-wiz/div[2]/c-wiz/div[1]/div[2]/div[2]/c-wiz/div/div[6]/div/div[1]/span[1]/span")
print(transation_element.text)
line["WEBVTT"]= transation_element.text
textarea_element.clear()
print(lines_df)
translation_path= file_path.replace(captions_dir, translations_dir)
os.makedirs(os.path.dirname(translation_path), exist_ok=True)
lines_df.to_csv(translation_path, index=False)
WEBVTT
00:01.300 --> 00:05.620
Vamos a continuar con la instalación de nuestro ambiente de desarrollo y ahora vamos a instalar Chrome
00:05.620 --> 00:06.220
Driver.
00:06.790 --> 00:11.500
Para eso vamos a la dirección Chrome Driver Chromium punto org.
00:16.410 --> 00:18.840
Vamos a ir a la sección de descargas.
00:21.030 --> 00:25.500
Y en la página de descargas nos dice que si usamos la versión.
00:26.420 --> 00:28.130
115 o superior.
00:28.920 --> 00:30.030
Entremos a este enlace.
00:30.030 --> 00:36.030
En caso contrario podemos descargar el driver para versiones anteriores de Google Chrome.
00:36.660 --> 00:40.800
Entonces, primero vamos a verificar la versión de Chrome que tenemos.