summaryrefslogtreecommitdiffstats
path: root/attain_vocab_to_anki_py/jisho_client.py
diff options
context:
space:
mode:
authorJan Tuomi <jan.tuomi@valuemotive.com>2020-11-19 22:33:18 +0200
committerJan Tuomi <jan.tuomi@valuemotive.com>2020-11-19 22:33:18 +0200
commit75c731c78880c5a31a50e166d33dcae03b76349a (patch)
treeeb87160816e3f9a50456f9f924b658cbf5f0602b /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.py35
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