.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
random.py
Go to the documentation of this file.
1# SPDX-License-Identifier: AGPL-3.0-or-later
2# pylint: disable=missing-module-docstring
3
4
5import hashlib
6import random
7import string
8import uuid
9from flask_babel import gettext
10
11from searx.result_types import Answer
12from searx.result_types.answer import BaseAnswer
13
14from . import Answerer, AnswererInfo
15
16
18 random_string_letters = string.ascii_lowercase + string.digits + string.ascii_uppercase
19 return [random.choice(random_string_letters) for _ in range(random.randint(8, 32))]
20
21
23 return ''.join(random_characters())
24
25
27 return str(random.random())
28
29
31 random_int_max = 2**31
32 return str(random.randint(-random_int_max, random_int_max))
33
34
36 m = hashlib.sha256()
37 m.update(''.join(random_characters()).encode())
38 return str(m.hexdigest())
39
40
42 return str(uuid.uuid4())
43
44
46 color = "%06x" % random.randint(0, 0xFFFFFF)
47 return f"#{color.upper()}"
48
49
51 """Random value generator"""
52
53 keywords = ["random"]
54
55 random_types = {
56 "string": random_string,
57 "int": random_int,
58 "float": random_float,
59 "sha256": random_sha256,
60 "uuid": random_uuid,
61 "color": random_color,
62 }
63
64 def info(self):
65
66 return AnswererInfo(
67 name=gettext(self.__doc__),
68 description=gettext("Generate different random values"),
69 keywords=self.keywords,
70 examples=[f"random {x}" for x in self.random_types],
71 )
72
73 def answer(self, query: str) -> list[BaseAnswer]:
74
75 parts = query.split()
76 if len(parts) != 2 or parts[1] not in self.random_types:
77 return []
78
79 return [Answer(answer=self.random_types[parts[1]]())]