Felguk commited on
Commit
74a50ff
·
verified ·
1 Parent(s): 444f475

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +139 -27
app.py CHANGED
@@ -18,6 +18,7 @@ import zipfile
18
  import os
19
  import torchaudio
20
  from transformers import pipeline
 
21
 
22
  # Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
23
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
@@ -254,6 +255,84 @@ def summarize_text(text: str, max_length: int = 100):
254
  summary = summarizer(text, max_length=max_length, min_length=30, do_sample=False)
255
  return summary[0]['summary_text']
256
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
257
  # Создание интерфейса
258
  with gr.Blocks() as demo:
259
  # Заголовок с изображением
@@ -308,35 +387,68 @@ with gr.Blocks() as demo:
308
  convert_button = gr.Button("Конвертировать")
309
  convert_button.click(fn=convert_image, inputs=[img_input, img_format], outputs=img_output)
310
 
311
- # Вкладка Felguk-ImageEnhancer
312
- with gr.Tab("Felguk-ImageEnhancer"):
313
- gr.Markdown("## Felguk-ImageEnhancer: Улучшение качества изображений")
 
 
 
 
 
 
 
 
 
314
  image_input = gr.File(label="Загрузите изображение", file_types=["image"])
315
- contrast_slider = gr.Slider(label="Контраст", minimum=0.5, maximum=2.0, value=1.5)
316
- brightness_slider = gr.Slider(label="Яркость", minimum=0.5, maximum=2.0, value=1.2)
317
- sharpness_slider = gr.Slider(label="Резкость", minimum=0.5, maximum=2.0, value=1.5)
318
- enhance_button = gr.Button("Улучшить изображение")
319
- image_output = gr.Image(label="Результат", type="filepath")
320
- enhance_button.click(fn=enhance_image, inputs=[image_input, contrast_slider, brightness_slider, sharpness_slider], outputs=image_output)
321
-
322
- # Вкладка Felguk-AudioTrimmer
323
- with gr.Tab("Felguk-AudioTrimmer"):
324
- gr.Markdown("## Felguk-AudioTrimmer: Обрезка аудиофайлов")
325
  audio_input = gr.File(label="Загрузите аудиофайл", file_types=[".mp3", ".wav"])
326
- start_time = gr.Number(label="Начало обрезки (сек)", value=0)
327
- end_time = gr.Number(label="Конец обрезки (сек)", value=10)
328
- trim_button = gr.Button("Обрезать аудио")
329
- audio_output = gr.Audio(label="Результат")
330
- trim_button.click(fn=trim_audio, inputs=[audio_input, start_time, end_time], outputs=audio_output)
331
-
332
- # Вкладка Felguk-TextSummarizer
333
- with gr.Tab("Felguk-TextSummarizer"):
334
- gr.Markdown("## Felguk-TextSummarizer: Суммаризация текста")
335
- text_input = gr.Textbox(label="Введите текст для суммаризации", lines=5)
336
- max_length_slider = gr.Slider(label="Максимальная длина текста", minimum=30, maximum=200, value=100)
337
- summarize_button = gr.Button("Суммаризировать")
338
- summary_output = gr.Textbox(label="Результат", interactive=False)
339
- summarize_button.click(fn=summarize_text, inputs=[text_input, max_length_slider], outputs=summary_output)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
340
 
341
  # Интерфейс чата
342
  chat_interface = gr.ChatInterface(
 
18
  import os
19
  import torchaudio
20
  from transformers import pipeline
21
+ from googletrans import Translator
22
 
23
  # Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
24
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
 
255
  summary = summarizer(text, max_length=max_length, min_length=30, do_sample=False)
256
  return summary[0]['summary_text']
257
 
258
+ # Функция для поиска пространства на Hugging Face
259
+ def search_space(author: str, space_name: str):
260
+ url = f"https://huggingface.co/space/{author}/{space_name}"
261
+ return url
262
+
263
+ # Функция для изменения размера изображения
264
+ def resize_image(image, width: int, height: int):
265
+ if image is None:
266
+ return None
267
+
268
+ img = Image.open(image.name)
269
+ resized_img = img.resize((width, height))
270
+
271
+ # Сохраняем изображение во временный файл
272
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".jpg") as tmp_file:
273
+ resized_img.save(tmp_file.name)
274
+ return tmp_file.name
275
+
276
+ # Функция для конвертации аудио
277
+ def convert_audio(file, target_format: str):
278
+ if file is None:
279
+ return "Файл не загружен."
280
+
281
+ audio = AudioSegment.from_file(file.name)
282
+
283
+ # Сохраняем аудио в новом формате
284
+ with tempfile.NamedTemporaryFile(delete=False, suffix=f".{target_format.lower()}") as tmp_file:
285
+ audio.export(tmp_file.name, format=target_format)
286
+ return tmp_file.name
287
+
288
+ # Функция для перевода текста
289
+ def translate_text(text: str, target_language: str):
290
+ translator = Translator()
291
+ translation = translator.translate(text, dest=target_language)
292
+ return translation.text
293
+
294
+ # Функция для обрезки видео
295
+ def trim_video(file, start_time: float, end_time: float):
296
+ if file is None:
297
+ return "Файл не загружен."
298
+
299
+ cap = cv2.VideoCapture(file.name)
300
+ fps = cap.get(cv2.CAP_PROP_FPS)
301
+ width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
302
+ height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
303
+
304
+ # Создаем объект для записи видео
305
+ output_path = tempfile.NamedTemporaryFile(delete=False, suffix=".mp4").name
306
+ fourcc = cv2.VideoWriter_fourcc(*'mp4v')
307
+ out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
308
+
309
+ # Обрезка видео
310
+ cap.set(cv2.CAP_PROP_POS_MSEC, start_time * 1000)
311
+ while cap.isOpened():
312
+ ret, frame = cap.read()
313
+ if not ret or cap.get(cv2.CAP_PROP_POS_MSEC) >= end_time * 1000:
314
+ break
315
+ out.write(frame)
316
+
317
+ cap.release()
318
+ out.release()
319
+ return output_path
320
+
321
+ # Функция для объединения PDF-файлов
322
+ def merge_pdfs(files):
323
+ if not files:
324
+ return "Файлы не загружены."
325
+
326
+ merger = PyPDF2.PdfMerger()
327
+ for file in files:
328
+ merger.append(file.name)
329
+
330
+ # Сохраняем объединенный PDF во временный файл
331
+ output_path = tempfile.NamedTemporaryFile(delete=False, suffix=".pdf").name
332
+ merger.write(output_path)
333
+ merger.close()
334
+ return output_path
335
+
336
  # Создание интерфейса
337
  with gr.Blocks() as demo:
338
  # Заголовок с изображением
 
387
  convert_button = gr.Button("Конвертировать")
388
  convert_button.click(fn=convert_image, inputs=[img_input, img_format], outputs=img_output)
389
 
390
+ # Вкладка Felguk-SpaceSearcher
391
+ with gr.Tab("Felguk-SpaceSearcher"):
392
+ gr.Markdown("## Felguk-SpaceSearcher: Поиск пространства на Hugging Face")
393
+ author_input = gr.Textbox(label="Имя автора")
394
+ space_name_input = gr.Textbox(label="Название пространства")
395
+ search_button = gr.Button("Найти пространство")
396
+ space_url_output = gr.Textbox(label="Ссылка на пространство", interactive=False)
397
+ search_button.click(fn=search_space, inputs=[author_input, space_name_input], outputs=space_url_output)
398
+
399
+ # Вкладка Felguk-ImageResizer
400
+ with gr.Tab("Felguk-ImageResizer"):
401
+ gr.Markdown("## Felguk-ImageResizer: Изменение размера изображения")
402
  image_input = gr.File(label="Загрузите изображение", file_types=["image"])
403
+ width_input = gr.Number(label="Ширина", value=300)
404
+ height_input = gr.Number(label="Высота", value=300)
405
+ resize_button = gr.Button("Изменить размер")
406
+ resized_image_output = gr.Image(label="Результат", type="filepath")
407
+ resize_button.click(fn=resize_image, inputs=[image_input, width_input, height_input], outputs=resized_image_output)
408
+
409
+ # Вкладка Felguk-AudioConverter
410
+ with gr.Tab("Felguk-AudioConverter"):
411
+ gr.Markdown("## Felguk-AudioConverter: Конвертация аудиофайлов")
 
412
  audio_input = gr.File(label="Загрузите аудиофайл", file_types=[".mp3", ".wav"])
413
+ target_format_input = gr.Dropdown(
414
+ choices=["mp3", "wav", "ogg"],
415
+ label="Выберите формат для конвертации",
416
+ value="mp3"
417
+ )
418
+ convert_button = gr.Button("Конвертировать")
419
+ converted_audio_output = gr.Audio(label="Результат")
420
+ convert_button.click(fn=convert_audio, inputs=[audio_input, target_format_input], outputs=converted_audio_output)
421
+
422
+ # Вкладка Felguk-TextTranslator
423
+ with gr.Tab("Felguk-TextTranslator"):
424
+ gr.Markdown("## Felguk-TextTranslator: Перевод текста")
425
+ text_input = gr.Textbox(label="Введите текст для перевода", lines=5)
426
+ target_language_input = gr.Dropdown(
427
+ choices=["en", "ru", "es", "fr", "de"],
428
+ label="Выберите язык перевода",
429
+ value="en"
430
+ )
431
+ translate_button = gr.Button("Перевести")
432
+ translated_text_output = gr.Textbox(label="Результат", interactive=False)
433
+ translate_button.click(fn=translate_text, inputs=[text_input, target_language_input], outputs=translated_text_output)
434
+
435
+ # Вкладка Felguk-VideoTrimmer
436
+ with gr.Tab("Felguk-VideoTrimmer"):
437
+ gr.Markdown("## Felguk-VideoTrimmer: Обрезка видеофайлов")
438
+ video_input = gr.File(label="Загрузите видеофайл", file_types=[".mp4", ".avi"])
439
+ start_time_input = gr.Number(label="Начало обрезки (сек)", value=0)
440
+ end_time_input = gr.Number(label="Конец обрезки (сек)", value=10)
441
+ trim_button = gr.Button("Обрезать видео")
442
+ trimmed_video_output = gr.Video(label="Результат")
443
+ trim_button.click(fn=trim_video, inputs=[video_input, start_time_input, end_time_input], outputs=trimmed_video_output)
444
+
445
+ # Вкладка Felguk-PDFMerger
446
+ with gr.Tab("Felguk-PDFMerger"):
447
+ gr.Markdown("## Felguk-PDFMerger: Объединение PDF-файлов")
448
+ pdf_files_input = gr.File(label="Загрузите PDF-файлы", file_types=[".pdf"], multiple=True)
449
+ merge_button = gr.Button("Объединить PDF")
450
+ merged_pdf_output = gr.File(label="Результат")
451
+ merge_button.click(fn=merge_pdfs, inputs=pdf_files_input, outputs=merged_pdf_output)
452
 
453
  # Интерфейс чата
454
  chat_interface = gr.ChatInterface(