mirror of
https://github.com/parchlinuxB/Gitee.git
synced 2025-02-23 10:25:44 -05:00
81 lines
1.8 KiB
Python
81 lines
1.8 KiB
Python
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||
|
# pylint: disable=missing-module-docstring
|
||
|
|
||
|
from __future__ import annotations
|
||
|
|
||
|
import hashlib
|
||
|
import random
|
||
|
import string
|
||
|
import uuid
|
||
|
from flask_babel import gettext
|
||
|
|
||
|
from searx.result_types import Answer
|
||
|
from searx.result_types.answer import BaseAnswer
|
||
|
|
||
|
from . import Answerer, AnswererInfo
|
||
|
|
||
|
|
||
|
def random_characters():
|
||
|
random_string_letters = string.ascii_lowercase + string.digits + string.ascii_uppercase
|
||
|
return [random.choice(random_string_letters) for _ in range(random.randint(8, 32))]
|
||
|
|
||
|
|
||
|
def random_string():
|
||
|
return ''.join(random_characters())
|
||
|
|
||
|
|
||
|
def random_float():
|
||
|
return str(random.random())
|
||
|
|
||
|
|
||
|
def random_int():
|
||
|
random_int_max = 2**31
|
||
|
return str(random.randint(-random_int_max, random_int_max))
|
||
|
|
||
|
|
||
|
def random_sha256():
|
||
|
m = hashlib.sha256()
|
||
|
m.update(''.join(random_characters()).encode())
|
||
|
return str(m.hexdigest())
|
||
|
|
||
|
|
||
|
def random_uuid():
|
||
|
return str(uuid.uuid4())
|
||
|
|
||
|
|
||
|
def random_color():
|
||
|
color = "%06x" % random.randint(0, 0xFFFFFF)
|
||
|
return f"#{color.upper()}"
|
||
|
|
||
|
|
||
|
class SXNGAnswerer(Answerer):
|
||
|
"""Random value generator"""
|
||
|
|
||
|
keywords = ["random"]
|
||
|
|
||
|
random_types = {
|
||
|
"string": random_string,
|
||
|
"int": random_int,
|
||
|
"float": random_float,
|
||
|
"sha256": random_sha256,
|
||
|
"uuid": random_uuid,
|
||
|
"color": random_color,
|
||
|
}
|
||
|
|
||
|
def info(self):
|
||
|
|
||
|
return AnswererInfo(
|
||
|
name=gettext(self.__doc__),
|
||
|
description=gettext("Generate different random values"),
|
||
|
keywords=self.keywords,
|
||
|
examples=[f"random {x}" for x in self.random_types],
|
||
|
)
|
||
|
|
||
|
def answer(self, query: str) -> list[BaseAnswer]:
|
||
|
|
||
|
parts = query.split()
|
||
|
if len(parts) != 2 or parts[1] not in self.random_types:
|
||
|
return []
|
||
|
|
||
|
return [Answer(answer=self.random_types[parts[1]]())]
|