Spaces:
Sleeping
Sleeping
File size: 3,146 Bytes
9b7a547 e5df579 9b7a547 dd27f57 568361d 9b7a547 dd27f57 f5815bd 9b7a547 dd27f57 e5df579 9b7a547 e5df579 568361d e5df579 dd27f57 9b7a547 568361d dd27f57 9b7a547 179bebc dd27f57 9b7a547 dd27f57 e5df579 dd27f57 9b7a547 e5df579 568361d e5df579 568361d e5df579 dd27f57 e5df579 b622977 e5df579 9b7a547 dd27f57 c1039cb 6303e29 179bebc 05115bb 179bebc dd27f57 e5df579 568361d dd27f57 9b7a547 dd27f57 e5df579 dd27f57 179bebc 05115bb 179bebc 05115bb 179bebc 7f17f6f |
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import os
import time
import requests
import gradio as gr
import uuid
# Hugging Face API
HF_API_KEY = os.getenv("HF_TOKEN")
# Chevereto API
CHEVERETO_API_URL = os.getenv("API_URL")
CHEVERETO_API_KEY = os.getenv("API_KEY")
CHEVERETO_ALBUM_ID = os.getenv("ALBUM_ID")
EXPECTED_API_KEY = os.getenv("API_PASS")
HEADERS = {"Authorization": f"Bearer {HF_API_KEY}"}
def generate_random_filename(extension: str) -> str:
return str(uuid.uuid4()) + extension
def validate_api_key(api_key: str) -> bool:
return api_key == EXPECTED_API_KEY
def generate_image(prompt: str, model_name: str):
hf_api_url = f"https://api-inference.huggingface.co/models/{model_name}"
response = requests.post(hf_api_url, headers=HEADERS, json={"inputs": prompt})
if response.status_code == 200:
image_data = response.content
random_filename = generate_random_filename(".png")
image_path = f"/tmp/{random_filename}"
with open(image_path, "wb") as f:
f.write(image_data)
time.sleep(10) # 10-second delay
return image_path
else:
return f"Error generating image: {response.text}"
def upload_to_chevereto(image_path: str):
with open(image_path, "rb") as img_file:
files = {"source": img_file}
data = {"key": CHEVERETO_API_KEY, "format": "json", "album_id": CHEVERETO_ALBUM_ID, "expiration": "PT10M"}
response = requests.post(CHEVERETO_API_URL, files=files, data=data)
if response.status_code == 200:
return response.json().get("image", {}).get("url")
else:
return f"Error uploading image: {response.text}"
def generate_and_upload(prompt: str, model_name: str, api_key: str):
if not validate_api_key(api_key):
return "Invalid or missing API key", ""
img_path = generate_image(prompt, model_name)
if "Error" in img_path:
return img_path, ""
url = upload_to_chevereto(img_path)
return img_path, url
# Gradio UI
with gr.Blocks(theme='NoCrypt/miku') as app:
gr.HTML(
"""
<h1 style='text-align: center; color: red; font-size: 20px; font-weight: bold;'>♥ Tasia API on Marty Space ♥</h1>
"""
)
with gr.Row():
prompt_input = gr.Textbox(label="Enter a prompt:", placeholder="A futuristic spaceship...")
model_input = gr.Textbox(label="Enter model name:", placeholder="stabilityai/stable-diffusion-3.5-large")
api_key_input = gr.Textbox(label="Enter your API key:", type="password", placeholder="Your secret API key")
generate_button = gr.Button("Generate & Upload")
image_output = gr.Image(label="Generated Image")
url_output = gr.Textbox(label="Image URL", interactive=False)
generate_button.click(
fn=generate_and_upload,
inputs=[prompt_input, model_input, api_key_input],
outputs=[image_output, url_output]
)
# Footer
gr.HTML(
"""
<h1 style='text-align: center; color: red; font-size: 20px; font-weight: bold;'>♥ Made by Tasia with ♥</h1>
"""
)
app.launch(server_port=7860)
|