From 9ab55ea47a41ced4d752c0cc45a4fea411d47ad5 Mon Sep 17 00:00:00 2001 From: kvan7 Date: Mon, 22 Jan 2024 21:01:04 +0000 Subject: [PATCH] adds more random options --- searx/answerers/__init__.py | 4 ++-- searx/answerers/random/answerer.py | 25 ++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/searx/answerers/__init__.py b/searx/answerers/__init__.py index 8e2b9b35a..a58f52a81 100644 --- a/searx/answerers/__init__.py +++ b/searx/answerers/__init__.py @@ -23,8 +23,8 @@ def get_answerers_by_keywords(answerers): by_keyword = defaultdict(list) for answerer in answerers: for keyword in answerer.keywords: - for keyword in answerer.keywords: - by_keyword[keyword].append(answerer.answer) + # for keyword in answerer.keywords: + by_keyword[keyword].append(answerer.answer) return by_keyword diff --git a/searx/answerers/random/answerer.py b/searx/answerers/random/answerer.py index a1306e2eb..76d3e19c0 100644 --- a/searx/answerers/random/answerer.py +++ b/searx/answerers/random/answerer.py @@ -6,7 +6,7 @@ from flask_babel import gettext # required answerer attribute # specifies which search query keywords triggers this answerer -keywords = ('random',) +keywords = ('random', 'rand', '!r') random_int_max = 2**31 random_string_letters = string.ascii_lowercase + string.digits + string.ascii_uppercase @@ -42,6 +42,20 @@ def random_color(): color = "%06x" % random.randint(0, 0xFFFFFF) return f"#{color.upper()}" +def random_number(x: int): + return str(random.randint(1, x)) + +def random_coin(): + return random.choice(['heads', 'tails']) + +def random_card(): + return random.choice(['2', '3', '4', '5', '6', '7', '8', '9', '10', 'jack', 'queen', 'king', 'ace']) + ' of ' + random.choice(['diamonds', 'spades', 'hearts', 'clubs']) + +def random_dice(): + return str(random.randint(1, 6)) + +def random_d20(): + return str(random.randint(1, 20)) random_types = { 'string': random_string, @@ -50,6 +64,10 @@ random_types = { 'sha256': random_sha256, 'uuid': random_uuid, 'color': random_color, + 'coin': random_coin, + 'card': random_card, + 'dice': random_dice, + 'd20': random_d20, } @@ -61,6 +79,11 @@ def answer(query): return [] if parts[1] not in random_types: + try: + if parts[1].isnumeric(): + return [{'answer': random_number(int(parts[1]))}] + except: + pass return [] return [{'answer': random_types[parts[1]]()}]