Spaces:
Running
Running
File size: 1,250 Bytes
e415f91 7b74fb2 e415f91 f302c8b e415f91 7b74fb2 e415f91 afb8db0 e415f91 e76467c 388d430 e415f91 |
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 |
import random
import time
from io import BytesIO
from urllib.parse import quote
import requests
from PIL import Image
class Inference:
def __init__(self):
self.session = requests.Session()
def _fetch(self, *args, retries=5, **kwargs):
for retry in range(retries + 1):
try:
response = self.session.get(*args, **kwargs)
response.raise_for_status()
return response.content
except requests.RequestException:
if response.status_code in {429, 500, 502, 503, 504}:
delay = min(2 ** retry, 60)
time.sleep(delay)
else:
return None
return None
def __call__(
self,
prompt,
seed=42,
width=1024,
height=1024
):
url = f"https://image.pollinations.ai/prompt/{quote(prompt)}"
params = {
"prompt": prompt,
"seed": seed,
"width": width,
"height": height,
"nologo": "true",
"private": "true"
}
image = self._fetch(url, params=params)
if image:
return Image.open(BytesIO(image))
return None |