File size: 1,694 Bytes
633f17a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import httpx
import random
import string
import uuid
import re

class Lexica:
    def __init__(self, query, negativePrompt="", guidanceScale: int = 7, portrait: bool = True, cookie=None):
        self.query = query
        self.negativePrompt = negativePrompt
        self.guidanceScale = guidanceScale
        self.portrait = portrait
        self.cookie = cookie

    def images(self):
        response = httpx.post("https://lexica.art/api/infinite-prompts", json={
            "text": self.query,
            "searchMode": "images",
            "source": "search",
            "model": "lexica-aperture-v2"
        })

        prompts = [f"https://image.lexica.art/full_jpg/{ids['id']}" for ids in response.json()["images"]]

        return prompts

    def _generate_random_string(self, length):
        chars = string.ascii_letters + string.digits
        result_str = ''.join(random.choice(chars) for _ in range(length))

        return result_str

    def generate(self):
        response = httpx.post("https://z.lexica.art/api/generator", headers={
            "cookie": self.cookie
        }, json={
            "requestId": str(uuid.uuid4()),
            "id": self._generate_random_string(20),
            "prompt": self.query,
            "negativePrompt": self.negativePrompt,
            "guidanceScale": self.guidanceScale,
            "width": 512 if self.portrait else 768,
            "height": 768 if self.portrait else 512,
            "enableHiresFix": False,
            "model": "lexica-aperture-v2",
            "generateSources": []
        }, timeout=50
        )

        return [f"https://image.lexica.art/full_jpg/{ids['id']}" for ids in response.json()["images"]]