summaryrefslogtreecommitdiffstats
path: root/kanji_info_fetcher/wadoku_client.py
diff options
context:
space:
mode:
Diffstat (limited to 'kanji_info_fetcher/wadoku_client.py')
-rw-r--r--kanji_info_fetcher/wadoku_client.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/kanji_info_fetcher/wadoku_client.py b/kanji_info_fetcher/wadoku_client.py
new file mode 100644
index 0000000..550f801
--- /dev/null
+++ b/kanji_info_fetcher/wadoku_client.py
@@ -0,0 +1,42 @@
+from bs4 import BeautifulSoup
+import requests
+import urllib.parse
+
+WADOKU_BASE_URL = "https://www.wadoku.de/search"
+
+def inject_hiragana_with_accents(entries: list) -> list:
+ entries_with_readings = []
+
+ for index, entry in enumerate(entries):
+ kanji = entry.kanji.replace("~", "")
+
+ if len(entry.hiragana) > 0:
+ print(f"Hiragana exists for #{index}: {kanji}. Skipping...")
+ entries_with_readings.append(entry)
+ continue
+
+ # Remove nasty characters from kanji since Wadoku
+ # fails to find anything otherwise
+ print(f"Fetching hiragana data for #{index}: {kanji}")
+
+ resource_part = urllib.parse.quote_plus(kanji)
+ url = f"{WADOKU_BASE_URL}/{resource_part}"
+ resp = requests.get(url)
+ resp.raise_for_status()
+
+ soup = BeautifulSoup(resp.text, "html.parser")
+ container = soup.select_one("section#content")
+
+ readings = container.select("span.reading")
+ first_reading = str(readings[0])
+
+ # Remove extra characters added by Wadoku
+ # https://www.wadoku.de/wiki/display/WAD/Hinweise+zur+Notation
+ result = first_reading \
+ .replace("~", "") \
+ .replace("|", "") \
+ .replace("・", "")
+ entry.hiragana = result
+ entries_with_readings.append(entry)
+
+ return entries_with_readings