From e70c879d1c10ccffe9436c2fb531e9340ad401e8 Mon Sep 17 00:00:00 2001 From: tosu Date: Sat, 11 Feb 2023 15:33:38 +0100 Subject: [PATCH] Initial commit --- woxi | 5 +++++ woxi.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100755 woxi create mode 100755 woxi.py diff --git a/woxi b/woxi new file mode 100755 index 0000000..7f713ee --- /dev/null +++ b/woxi @@ -0,0 +1,5 @@ +#!/bin/bash + +W=$(which woxi.py) + +$W $@ | jq diff --git a/woxi.py b/woxi.py new file mode 100755 index 0000000..eb1bcda --- /dev/null +++ b/woxi.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 + +from bs4 import BeautifulSoup +import requests +import re +import sys +import os +import json + +def main(query='hallo'): + template_url = 'https://synonyme.woxikon.de/synonyme/%s.php' + url = template_url % query + resp = requests.get(url) + + soup = BeautifulSoup(resp.text, 'html.parser') + + os.system('') + + def formatMeaning(text): + text = text.strip() + text = re.sub(r'\s+', ' ', text) + text = text.replace(' Bedeutung', '. Bedeutung') + return text + + card_list = [] + for card in soup.select('li.synonyms-list-item.clear-content:not(.text-center)'): + synonym_group = card.select_one('div.synonyms-list-header').text + synonym_group = formatMeaning(synonym_group) + upper_synonyms = card.select_one('div.upper-synonyms') + lower_synonyms = card.select_one('div.lower-synonyms') + card_list.append({ + 'synonymGroup': synonym_group, + 'upperSynonyms': [], + 'lowerSynonyms': [] + }) + + if upper_synonyms is not None: + for syn in upper_synonyms.find_all('a'): + syn = syn.text + card_list[-1]['upperSynonyms'].append(syn) + + if lower_synonyms is not None: + for syn in lower_synonyms.find_all('a'): + syn = syn.text + card_list[-1]['lowerSynonyms'].append(syn) + + card_list = card_list[::-1] + out = json.dumps(card_list, indent=2, ensure_ascii=False) + print(out) + + +if __name__ == '__main__': + if len(sys.argv) == 1: + main() + else: + main("%20".join(sys.argv[1:]))