From 00ead935d40917ecfd77bc4b11b1b6e1033ec853 Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Sun, 16 Jun 2024 02:10:58 +0300 Subject: [PATCH] Feat(Python3): Use `urllib.parse.parse_qs` Prepare for Python 3.13 dropping `cgi`. --- requirements.txt | 2 ++ search-tags.py | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..22fd5ba --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +Cheetah3 +lark diff --git a/search-tags.py b/search-tags.py index a844960..a358a02 100755 --- a/search-tags.py +++ b/search-tags.py @@ -6,7 +6,9 @@ __author__ = "Oleg Broytman " __copyright__ = "Copyright (C) 2014-2024 PhiloSoft Design" __license__ = "GNU GPL" -import cgi +from html import escape +from urllib.parse import parse_qs +import os import sys from lark import ParseError @@ -14,14 +16,14 @@ from lark import ParseError from html.response import redirect, response from parser import parser -form = cgi.FieldStorage() -if 'q' not in form: +qs_dict = parse_qs(os.environ['QUERY_STRING'], encoding='koi8-r') +if 'q' not in qs_dict or len(qs_dict['q']) > 1: status = "400 Bad request" title = "Error!" body = "Required parameter is missing!" else: - q = form['q'].value + q = qs_dict['q'][0] try: tree = parser.parse(q) except ParseError: @@ -44,7 +46,7 @@ else: from tags import find_tags posts = find_tags(tree) status = None - title = "úÁÐÉÓÉ, ÎÁÊÄÅÎÎÙÅ ÄÌÑ ×ÙÒÁÖÅÎÉÑ " + cgi.escape(q) + title = "úÁÐÉÓÉ, ÎÁÊÄÅÎÎÙÅ ÄÌÑ ×ÙÒÁÖÅÎÉÑ " + escape(q) if posts: _posts = ["""\

-- 2.39.2