diff --git a/src/app.py b/src/app.py index b2d9c8bdaf2ba836f417d6e48c795375e9669496..72fae320cdccfa323a7aa4d76c1a0b342479f2a8 100755 --- a/src/app.py +++ b/src/app.py @@ -1,5 +1,11 @@ from flask import Flask, Response, json, jsonify, request from flask_cors import CORS +from urllib.parse import unquote +import requests + +# import sys +# import codecs +# sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer, 'strict') import config from wiktextract_wrapper import Wiktextract @@ -28,6 +34,9 @@ def index(): @app.route("/simplesearch/<lang>/<word>", methods=["GET"]) def search(lang, word): + word = requests.utils.unquote(word) + word = word.encode('latin-1').decode('utf-8') # Decode the word from Latin-1 to UTF-8 + # print(word) if lang not in config.supported_wiktlangs: return jsonify({"error": f"Language {lang} not supported"}), 400 @@ -55,8 +64,11 @@ def search(lang, word): if wiktextractor.wxr.thesaurus_db_conn: wiktextractor.wxr.thesaurus_db_conn.close() -@app.route("/search/<wiktlang>/<wordlang>/<word>/<format>", methods=["GET"]) +@app.route("/search/<wiktlang>/<wordlang>/<path:word>/<format>", methods=["GET"]) def search_and_format(wiktlang, wordlang, word, format): + word = requests.utils.unquote(word) + word = word.encode('latin-1').decode('utf-8') # Decode the word from Latin-1 to UTF-8 + # print(word) # app.logger.info('Received a request from /search/<wiktlang>/<wordlang>/<word>/<format>') if wiktlang not in config.supported_wiktlangs: return jsonify({"error": f"Language {wiktlang} not supported"}), 400 @@ -64,7 +76,7 @@ def search_and_format(wiktlang, wordlang, word, format): if len(format)>2 and format[0:2] in ("a_", "A_"): ascii = True format = format[2:] - print(ascii, format) + # print(ascii, format) else: ascii = False try: