>>30849
>¿Tan malo es?
Tan malo es. Todo el problema comenzó porque, por alguna razón que no logro entender, la función que interactua con la API de Lynxchan se comía la ID del post realizado. Cuando se llama a la API esta regresa un JSON que contiene la ID del post nuevo hecho; la función que hace ese llamado debería regresar ese ID pero por algún motivo estaba botando
None. La peor parte es que ese bloque de código no lo había tocado desde el año pasado, ese mal comportamiento apareció de la noche a la mañana, estaba funcionando bien. Me dió un quiebre mental, así que para arreglarlo decidí grabar la ID dentro de un JSON a disco y leerlo de vuelta en la función principal, la cosa es que eso creó interacciones horrendas que han vuelto verdaderamente feo mi código.
>O probar con LibreTranslate
Creo que voy a probarlo para tener una alternativa en caso que Mymemory decida traicionarme. Traté de acceder a su API hace unos días y lo primero que me salió es que no estaba disponible.
>pero sin poder examinar el código es poco lo que se puede hacer.
Francamente no comparto mi código porque me provoca vergüenza, pero creo que debo quitarme eso y subirlo a Gitgud de una vez, acá está el código que se hace cargo de la traducción, por si quieres darle un vistazo:
from translate import Translator
from tqdm import tqdm
import re
import time
TimeLimit = 40
cd_trad = 5
pronouns = ["I'm","i'm","i am","I am",
"I was","i was"
]
def add_gender_marker(sentence):
for pronoun in pronouns:
index = sentence.find(pronoun)
if (index >= 0):
sentence = sentence[:index] + "I'm woman."+ sentence[index:]
return sentence
def remove_gender_marker(sentence):
sentence = sentence.replace("soy mujer ","")
sentence = sentence.replace("Soy mujer ","")
sentence = sentence.replace("Soy mujer, ","")
sentence = sentence.replace("soy mujer, ","")
sentence = sentence.replace("Soy mujer.","")
sentence = sentence.replace("soy mujer.","")
sentence = sentence.replace("soy una mujer ","")
sentence = sentence.replace("Soy una mujer ","")
sentence = sentence.replace("Soy una mujer, ","")
sentence = sentence.replace("soy una mujer, ","")
sentence = sentence.replace("Soy una mujer.","")
sentence = sentence.replace("soy una mujer.","")
return sentence
def translate_mymemory(text,from_lang):
if(from_lang=="español"):
translator = Translator(to_lang="en",from_lang="es")
elif(from_lang=="inglés"):
translator = Translator(to_lang="es",from_lang="en")
if(len(text)>500):
parrafos = text.split("\n")
traduccion = ''[Expand Post]
for index1,parrafo in tqdm(enumerate(parrafos)):
new_parrafo = ''
if parrafo != '':
if len(parrafo)>500:
sentences = parrafo.split(".")
new_parrafo = ''
for index2,sentence in tqdm(enumerate(sentences)):
if sentence != '':
if len(sentence) > 500:
sentence = sentence[0:500]
new_parrafo += translator.translate(sentence) + '.'
time.sleep(cd_trad)
if index1 == len(parrafos):
traduccion += new_parrafo + '.'
else:
traduccion += new_parrafo + '\n'
else:
if index1 == len(parrafos):
traduccion += translator.translate(parrafo) + '.'
else:
traduccion += translator.translate(parrafo) + '\n'
time.sleep(cd_trad)
else:
traduccion = translator.translate(text)
return traduccion
translator_service = 'mymemory'
def translate(text,from_lang,gender):
if (gender == "f"):
text = add_gender_marker(text)
if(translator_service=="mymemory"):
traduccion = translate_mymemory(text,from_lang)
if(gender == "f"):
traduccion = remove_gender_marker(traduccion)
print("======================")
print("Texto a traducir: ",text)
print("Texto traducido: ",traduccion)
return traduccion
El problema sucede, como dije, cuando el texto supera los 500 caracteres y hay más saltos de lineas; provoca excesivos llamados a la API y por ende agota mi cuota demasiado rápido.