61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
# public packages
|
|
from langdetect import detect
|
|
from google_trans_new import google_translator
|
|
# database-related
|
|
from database import Data_table, get_untranslated, insert_translated
|
|
from dotenv import load_dotenv
|
|
# own scripts
|
|
from clean_data import clean_content
|
|
|
|
def translate(text, target_lang='en'):
|
|
try:
|
|
input_lang = detect(text)
|
|
except Exception as e:
|
|
print(f'error when detecting language: {e}')
|
|
return ''
|
|
if input_lang == target_lang: return text
|
|
translator = google_translator()
|
|
try:
|
|
text_trans = translator.translate(text, lang_src=input_lang, lang_tgt=target_lang)
|
|
except Exception as e:
|
|
print(f'error when translating text: {e}')
|
|
return ''
|
|
return text_trans
|
|
|
|
def continously_translate():
|
|
with Data_table() as dt:
|
|
print('began translating')
|
|
while True: # keep going forever
|
|
try:
|
|
val_dict = get_untranslated(dt)
|
|
except Exception as e:
|
|
print(f'error when getting untranslated content from database: {e}')
|
|
continue
|
|
# if nother left untranslated, stop
|
|
if val_dict is None: break
|
|
# clean text
|
|
try:
|
|
content_clean = clean_content(val_dict['content'])
|
|
except Exception as e:
|
|
print(f'error when cleaning content: {e}')
|
|
continue
|
|
# translate text
|
|
try:
|
|
content_en = translate(content_clean)
|
|
except Exception as e:
|
|
print(f'error when translating content: {e}')
|
|
continue
|
|
# upload to database
|
|
val_dict['content_en'] = content_en
|
|
try:
|
|
insert_translated(dt, val_dict)
|
|
except Exception as e:
|
|
print(f'error when sending translated content to database: {e}')
|
|
continue
|
|
print('translated content')
|
|
print('stopped translating')
|
|
|
|
if __name__ == '__main__':
|
|
load_dotenv()
|
|
continously_translate()
|