svjack's picture
Upload 2 files
633f17a
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"]]