Rooni commited on
Commit
8bf60b6
·
verified ·
1 Parent(s): dd936f8

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +74 -0
app.py ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import random
3
+ import requests
4
+ from deep_translator import GoogleTranslator
5
+ from langdetect import detect
6
+ from gradio_client import Client, handle_file
7
+ import gradio as gr
8
+
9
+ # Функция для получения случайного API ключа
10
+ def get_random_api_key():
11
+ keys = os.getenv("KEYS", "").split(",")
12
+ if keys and keys[0]: # Проверяем, что KEYS установлен и не пуст
13
+ return random.choice(keys).strip()
14
+ else:
15
+ raise ValueError("API ключи не найдены. Пожалуйста, установите переменную окружения KEYS.")
16
+
17
+ # Ссылка на файл CSS
18
+ css_url = "https://neurixyufi-aihub.static.hf.space/style.css"
19
+
20
+ # Получение CSS по ссылке
21
+ try:
22
+ response = requests.get(css_url)
23
+ response.raise_for_status() # Поднимаем исключение, если статус ответа не 200
24
+ css = response.text + " h1{text-align:center} /* Ещё стили. если они есть в оригинале */"
25
+ except requests.exceptions.RequestException as e:
26
+ print(f"Ошибка при загрузке CSS: {e}")
27
+ css = " h1{text-align:center} /* Ещё стили. если они есть в оригинале */" # Используем базовый стиль, если загрузка CSS не удалась
28
+
29
+ # Функция для обработки изображения и текста через API
30
+ def process_image_and_text(image, text):
31
+ # Проверка и перевод текста на английский, если необходимо
32
+ language = detect(text)
33
+ if language != 'en':
34
+ text = GoogleTranslator(source=language, target='en').translate(text)
35
+
36
+ # Загрузка изображения в кеш и получение ссылки
37
+ image_path = image.name
38
+ image_url = handle_file(image_path)
39
+
40
+ # Получение случайного API ключа
41
+ api_key = get_random_api_key()
42
+
43
+ # Инициализация клиента
44
+ client = Client("Yuanshi/OminiControl", hf_token=api_key)
45
+
46
+ # Вызов API
47
+ result = client.predict(
48
+ image=image_url,
49
+ text=text,
50
+ api_name="/predict"
51
+ )
52
+
53
+ # Возврат результата
54
+ return result['path']
55
+
56
+ # Интерфейс Gradio
57
+ demo = gr.Interface(
58
+ fn=process_image_and_text,
59
+ inputs=[
60
+ gr.Image(type="pil"),
61
+ gr.Textbox(lines=2),
62
+ ],
63
+ outputs=gr.Image(type="pil", show_share_button=False),
64
+ title="OminiControl / Subject driven generation",
65
+ css=css,
66
+ concurrency_limit=250
67
+ )
68
+
69
+ # Запуск интерфейса
70
+ if __name__ == "__main__":
71
+ demo.launch(
72
+ show_api=False,
73
+ share=False
74
+ )