From 0bc0462b37b45ce5534208e068b701e3471813f2 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Wed, 3 Feb 2021 18:39:16 +0200 Subject: Add example sentence if exists --- kanji_info_fetcher/__init__.py | 4 ++-- kanji_info_fetcher/jisho_client.py | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/kanji_info_fetcher/__init__.py b/kanji_info_fetcher/__init__.py index c4b95bb..ef637fc 100644 --- a/kanji_info_fetcher/__init__.py +++ b/kanji_info_fetcher/__init__.py @@ -25,8 +25,8 @@ def main(): entries = io.read_from_file(file_path, row_format) # fetch translations from Jisho - print(f"[STATUS] Fetching English translations from Jisho") - entries = jisho_client.inject_english_translation(entries) + print(f"[STATUS] Fetching English translations and example sentences from Jisho") + entries = jisho_client.inject_english_translation_and_note(entries) # fetch kanji meanings from Jisho print(f"[STATUS] Fetching kanji meaning data from Jisho") diff --git a/kanji_info_fetcher/jisho_client.py b/kanji_info_fetcher/jisho_client.py index e74412e..5dca87b 100644 --- a/kanji_info_fetcher/jisho_client.py +++ b/kanji_info_fetcher/jisho_client.py @@ -51,7 +51,7 @@ def inject_kanji_meanings(entries: list) -> list: return entries_with_meanings -def inject_english_translation(entries: list) -> list: +def inject_english_translation_and_note(entries: list) -> list: entries_with_translations = [] for index, entry in enumerate(entries): @@ -81,12 +81,25 @@ def inject_english_translation(entries: list) -> list: meaning_translations = meaning_wrapper.select(".meaning-wrapper .meaning-meaning") meaning_translations_texts = map(lambda e: e.text.strip(), meaning_translations) + meaning_sentences = meaning_wrapper.select(".sentence") + meaning_sentence = meaning_sentences[0] if len(meaning_sentences) > 0 else None + + if meaning_sentence is not None: + sentence_japanese_parts = meaning_sentence.select(".japanese .unlinked") + sentence_japanese_parts_texts = map(lambda e: e.text.strip(), sentence_japanese_parts) + sentence_japanese_text = "".join(sentence_japanese_parts_texts) + sentence_english_text = meaning_sentence.select(".english")[0].text.strip() + note_sentence = f"{sentence_japanese_text}
{sentence_english_text}" + else: + note_sentence = "" + meanings_zipped = zip(meaning_tag_abbrevs, meaning_translations_texts) - first_translation_pair = list(meanings_zipped)[0] - result = f"{first_translation_pair[0]} {first_translation_pair[1]}" + first_translation_tuple = list(meanings_zipped)[0] + result = f"{first_translation_tuple[0]} {first_translation_tuple[1]}" entry.english = result + entry.note = note_sentence entries_with_translations.append(entry) return entries_with_translations -- cgit v1.3