mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-04 03:27:06 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# SPDX-License-Identifier: AGPL-3.0-or-later
 | 
						|
# pylint: disable=missing-module-docstring
 | 
						|
 | 
						|
 | 
						|
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]]())]
 |