Rooni commited on
Commit
594642f
·
verified ·
1 Parent(s): 51fcd64

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -46
app.py CHANGED
@@ -19,60 +19,80 @@ def get_random_api_key():
19
  # Ссылка на файл CSS
20
  css_url = "https://neurixyufi-aihub.static.hf.space/style.css"
21
 
22
- # Получение CSS по ссылке
23
  try:
24
- response = requests.get(css_url)
25
- response.raise_for_status() # Поднимаем исключение, если статус ответа не 200
26
  css = response.text + " h1{text-align:center}"
27
  except requests.exceptions.RequestException as e:
28
  print(f"Ошибка при загрузке CSS: {e}")
29
- css = " h1{text-align:center}" # Используем базовый стиль, если загрузка CSS не удалась
30
 
31
  # Функция для обработки изображения и текста через API
32
  def process_image_and_text(image, text):
33
- # Проверка и перевод текста на английский, если необходимо
34
- language = detect(text)
35
- if language != 'en':
36
- text = GoogleTranslator(source=language, target='en').translate(text)
37
-
38
- # Сохранение изображения во временный файл
39
- with tempfile.NamedTemporaryFile(delete=False, suffix=".png") as temp_file:
40
- image.save(temp_file.name)
41
- image_path = temp_file.name
42
-
43
- # Загрузка изображения в кеш и получение ссылки
44
- image_url = handle_file(image_path)
45
-
46
- # Получение случайного API ключа
47
- api_key = get_random_api_key()
48
-
49
- # Инициализация клиента
50
- client = Client("Yuanshi/OminiControl", hf_token=api_key)
51
-
52
- # Вызов API
53
- result = client.predict(
54
- image=image_url,
55
- text=text,
56
- api_name="/predict"
57
- )
58
 
59
- if result is None:
60
- return gr.update(value=None) # Важно: обновляем на None, если нет результата
61
- elif isinstance(result, Image.Image):
62
- return gr.update(value=result)
63
- elif isinstance(result, str) and result.startswith("/tmp"):
64
- try:
65
- return gr.update(value=Image.open(result))
66
- except FileNotFoundError:
67
- print(f"Файл не найден по пути: {result}")
68
- return gr.update(value=None)
69
- except Exception as e:
70
- print(f"Ошибка при открытии файла: {e}, путь: {result}")
71
- return gr.update(value=None)
72
- else:
73
- print(f"Неизвестный тип результата: {type(result)}, данные: {result}")
74
- return gr.update(value=None)
75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
 
77
  # Интерфейс Gradio с использованием gr.Blocks
78
  with gr.Blocks(css=css) as demo:
@@ -92,9 +112,14 @@ with gr.Blocks(css=css) as demo:
92
  concurrency_limit=250
93
  )
94
 
 
 
 
 
 
95
  # Запуск интерфейса
96
  if __name__ == "__main__":
97
  demo.launch(
98
  show_api=False,
99
  share=False
100
- )
 
19
  # Ссылка на файл CSS
20
  css_url = "https://neurixyufi-aihub.static.hf.space/style.css"
21
 
22
+ # Получение CSS по ссылке (с обработкой ошибок)
23
  try:
24
+ response = requests.get(css_url, timeout=10) # Добавлено timeout
25
+ response.raise_for_status()
26
  css = response.text + " h1{text-align:center}"
27
  except requests.exceptions.RequestException as e:
28
  print(f"Ошибка при загрузке CSS: {e}")
29
+ css = " h1{text-align:center}" # Используем базовый стиль
30
 
31
  # Функция для обработки изображения и текста через API
32
  def process_image_and_text(image, text):
33
+ try:
34
+ # Проверка и перевод текста на английский, если необходимо
35
+ language = detect(text)
36
+ if language != 'en':
37
+ text = GoogleTranslator(source=language, target='en').translate(text)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
+ # Сохранение изображения во временный файл
40
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".png") as temp_file:
41
+ image.save(temp_file.name)
42
+ image_path = temp_file.name
43
+
44
+ # Загрузка изображения в кеш и получение ссылки
45
+ image_url = handle_file(image_path)
46
+
47
+ # Получение случайного API ключа
48
+ api_key = get_random_api_key()
49
+
50
+ # Инициализация клиента (обработка ошибок)
51
+ client = Client("Yuanshi/OminiControl", hf_token=api_key)
52
+ result = client.predict(image=image_url, text=text, api_name="/predict")
 
 
53
 
54
+ if result is None:
55
+ return None
56
+ elif isinstance(result, Image.Image):
57
+ return result
58
+ elif isinstance(result, str) and result.startswith("/tmp"):
59
+ try:
60
+ return Image.open(result)
61
+ except FileNotFoundError:
62
+ print(f"Файл не найден: {result}")
63
+ return None
64
+ except Exception as e:
65
+ print(f"Ошибка при открытии файла: {e}, путь: {result}")
66
+ return None
67
+ else:
68
+ print(f"Неизвестный тип результата: {type(result)}, данные: {result}")
69
+ return None
70
+ except Exception as e:
71
+ print(f"Ошибка при обработке: {e}")
72
+ return None
73
+
74
+ # Функция для получения примеров
75
+ def get_samples():
76
+ sample_list = [
77
+ {
78
+ "image": "img/example_1in.png",
79
+ "text": "Луна, данный предмет лежит на поверхности луны — груша. На заднем плане Земля возвышается на переднем плане, уль��ра реализм",
80
+ },
81
+ ]
82
+
83
+ samples_with_images = []
84
+ for sample in sample_list:
85
+ image_path = sample["image"]
86
+ if os.path.exists(image_path):
87
+ try:
88
+ img = Image.open(image_path)
89
+ samples_with_images.append([img, sample["text"]])
90
+ except Exception as e:
91
+ print(f"Ошибка при открытии изображения {image_path}: {e}")
92
+ else:
93
+ print(f"Файл изображения {image_path} не найден.")
94
+
95
+ return samples_with_images
96
 
97
  # Интерфейс Gradio с использованием gr.Blocks
98
  with gr.Blocks(css=css) as demo:
 
112
  concurrency_limit=250
113
  )
114
 
115
+ # Добавление примеров
116
+ examples = get_samples()
117
+ if examples:
118
+ demo.load_examples(examples)
119
+
120
  # Запуск интерфейса
121
  if __name__ == "__main__":
122
  demo.launch(
123
  show_api=False,
124
  share=False
125
+ )