diff --git a/word_way/scrapping/word.py b/word_way/scrapping/word.py index 7c2bf81..87ea545 100644 --- a/word_way/scrapping/word.py +++ b/word_way/scrapping/word.py @@ -16,7 +16,7 @@ from word_way.models import Pronunciation, Sentence, Word, WordSentenceAssoc from word_way.utils import convert_word_part -__all__ = 'save_word', 'save_word_task', +__all__ = 'save_word', 'save_word_task', 'save_words_task', @celery.task @@ -24,6 +24,20 @@ def save_word_task(target_word: str): save_word(target_word, session) +@celery.task +def save_words_task(): + """단어가 없는 발음을 가져와서 단어를 저장하는 테스크""" + q = session.query(Word).filter(Word.pronunciation_id == Pronunciation.id) + pronunciations = session.query(Pronunciation).filter( + ~q.exists() + ).all() + for pronunciation in pronunciations: + pronunciation_id = save_word(pronunciation.pronunciation, session) + if not pronunciation_id: + session.delete(pronunciation) + session.commit() + + def save_word( target_word: str, session: Session, ) -> typing.Optional[uuid.UUID]: