diff options
| author | Jan Tuomi <jan.tuomi@valuemotive.com> | 2020-11-19 22:33:18 +0200 |
|---|---|---|
| committer | Jan Tuomi <jan.tuomi@valuemotive.com> | 2020-11-19 22:33:18 +0200 |
| commit | 75c731c78880c5a31a50e166d33dcae03b76349a (patch) | |
| tree | eb87160816e3f9a50456f9f924b658cbf5f0602b /attain_vocab_to_anki_py/jisho_client.py | |
Initial commit
Diffstat (limited to 'attain_vocab_to_anki_py/jisho_client.py')
| -rw-r--r-- | attain_vocab_to_anki_py/jisho_client.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/attain_vocab_to_anki_py/jisho_client.py b/attain_vocab_to_anki_py/jisho_client.py new file mode 100644 index 0000000..0ca2147 --- /dev/null +++ b/attain_vocab_to_anki_py/jisho_client.py @@ -0,0 +1,35 @@ +from bs4 import BeautifulSoup +import requests +import urllib.parse + +JISHO_BASE_URL = "https://jisho.org/search" + +def inject_kanji_meanings(entries: list) -> list: + entries_with_meanings = [] + + for index, entry in enumerate(entries): + kanji = entry.kanji + print(f"Fetching data for #{index}: {kanji}") + + resource_part = urllib.parse.quote_plus(f"{kanji}#kanji") + url = f"{JISHO_BASE_URL}/{resource_part}" + resp = requests.get(url) + resp.raise_for_status() + + soup = BeautifulSoup(resp.text, "html.parser") + container = soup.select_one("div#page_container") + + meanings = container.select(".kanji-details__main-meanings") + kanji_meaning_texts = map(lambda e: e.text.strip(), meanings) + + kanji_characters = container.select(".character") + kanji_character_texts = map(lambda e: e.text.strip(), kanji_characters) + + result_tuples = zip(kanji_character_texts, kanji_meaning_texts) + result_strs = map(lambda t: " ".join(t), result_tuples) + result = "<br>".join(result_strs) + + entry.meanings = result + entries_with_meanings.append(entry) + + return entries_with_meanings
\ No newline at end of file |
