commented code

This commit is contained in:
simplypower-bbj
2023-01-09 19:02:17 +01:00
parent ec60648ad9
commit 8562f49dda
+15 -45
View File
@@ -1,15 +1,11 @@
# public packages
from langdetect import detect from langdetect import detect
from google_trans_new import google_translator from google_trans_new import google_translator
import pandas as pd # database-related
import multiprocessing as mp from database import Data_table, get_untranslated, insert_translated
import numpy as np
from dotenv import load_dotenv from dotenv import load_dotenv
from tqdm import tqdm # own scripts
import logging
from database import Data_table
from clean_data import clean_content from clean_data import clean_content
from setup_logging import setup_logging
def translate(text, target_lang='en'): def translate(text, target_lang='en'):
try: try:
@@ -26,65 +22,39 @@ def translate(text, target_lang='en'):
return '' return ''
return text_trans return text_trans
def get_untranslated(dt):
query = (
f'SELECT * FROM {dt._name} '
'WHERE content_en IS NULL '
'ORDER BY random() '
'LIMIT 1 '
)
df = pd.read_sql_query(query, dt.con)
if len(df)==0: return None
val_dict = {
'id': int(df['id'][0]),
'content': str(df['content'][0])
}
return val_dict
def insert_translated(dt, val_dict):
assert 'id' in val_dict.keys()
assert 'content_en' in val_dict.keys()
query = (
f'UPDATE {dt._name} '
' SET content_en = (%(content_en)s) '
'WHERE id = (%(id)s) '
)
dt.execute(query, val_dict)
def continously_translate(): def continously_translate():
with Data_table() as dt: with Data_table() as dt:
logging.info('began translating') print('began translating')
while True: while True: # keep going forever
try: try:
val_dict = get_untranslated(dt) val_dict = get_untranslated(dt)
except Exception as e: except Exception as e:
logging.warning(f'error when getting untranslated content from database: {e}') print(f'error when getting untranslated content from database: {e}')
continue continue
# if nother left untranslated, stop
if val_dict is None: break if val_dict is None: break
# clean # clean text
try: try:
content_clean = clean_content(val_dict['content']) content_clean = clean_content(val_dict['content'])
except Exception as e: except Exception as e:
logging.warning(f'error when cleaning content: {e}') print(f'error when cleaning content: {e}')
continue continue
# translate # translate text
try: try:
content_en = translate(content_clean) content_en = translate(content_clean)
except Exception as e: except Exception as e:
logging.warning(f'error when translating content: {e}') print(f'error when translating content: {e}')
continue continue
# upload to database # upload to database
val_dict['content_en'] = content_en val_dict['content_en'] = content_en
try: try:
insert_translated(dt, val_dict) insert_translated(dt, val_dict)
except Exception as e: except Exception as e:
logging.warning(f'error when sending translated content to database: {e}') print(f'error when sending translated content to database: {e}')
continue continue
logging.info('translated content') print('translated content')
logging.warning('stopped translating') print('stopped translating')
if __name__ == '__main__': if __name__ == '__main__':
load_dotenv() load_dotenv()
setup_logging()
continously_translate() continously_translate()
# later try to set all empty strings back to null and retranslate failed...