Spaces:
Paused
Paused
Upload app.py
Browse files
app.py
CHANGED
|
@@ -7,7 +7,7 @@ import gradio as gr
|
|
| 7 |
from fastapi import FastAPI, HTTPException
|
| 8 |
from fastapi.middleware.cors import CORSMiddleware
|
| 9 |
from pydantic import BaseModel, HttpUrl
|
| 10 |
-
from typing import Optional
|
| 11 |
import requests
|
| 12 |
import tempfile
|
| 13 |
import os
|
|
@@ -51,10 +51,10 @@ class VideoResponse(BaseModel):
|
|
| 51 |
|
| 52 |
# V2.2: スライドデータ→音声付き動画変換モデル(history: String型対応)
|
| 53 |
class SlideDataToVideoRequest(BaseModel):
|
| 54 |
-
"""スライドデータ→音声付き動画変換リクエスト(V2.
|
| 55 |
-
slide_data: str
|
| 56 |
-
pdf_url: str
|
| 57 |
-
history: str
|
| 58 |
|
| 59 |
class AudioInfo(BaseModel):
|
| 60 |
"""音声情報"""
|
|
@@ -631,9 +631,9 @@ def create_video_with_audio_from_slides(
|
|
| 631 |
|
| 632 |
|
| 633 |
def create_video_with_audio_from_slides_v2(
|
| 634 |
-
slide_data: str,
|
| 635 |
pdf_url: str,
|
| 636 |
-
history: str,
|
| 637 |
gemini_token: str,
|
| 638 |
progress_callback=None
|
| 639 |
) -> tuple:
|
|
@@ -1214,9 +1214,12 @@ async def slidedata_to_video(request: SlideDataToVideoRequest):
|
|
| 1214 |
)
|
| 1215 |
|
| 1216 |
try:
|
| 1217 |
-
logger.info(f"API リクエスト受信(V2.
|
|
|
|
|
|
|
|
|
|
| 1218 |
|
| 1219 |
-
# 動画生成(V2.
|
| 1220 |
video_url, page2_image_url, audio_info_list = create_video_with_audio_from_slides_v2(
|
| 1221 |
slide_data=request.slide_data,
|
| 1222 |
pdf_url=request.pdf_url,
|
|
|
|
| 7 |
from fastapi import FastAPI, HTTPException
|
| 8 |
from fastapi.middleware.cors import CORSMiddleware
|
| 9 |
from pydantic import BaseModel, HttpUrl
|
| 10 |
+
from typing import Optional, Union
|
| 11 |
import requests
|
| 12 |
import tempfile
|
| 13 |
import os
|
|
|
|
| 51 |
|
| 52 |
# V2.2: スライドデータ→音声付き動画変換モデル(history: String型対応)
|
| 53 |
class SlideDataToVideoRequest(BaseModel):
|
| 54 |
+
"""スライドデータ→音声付き動画変換リクエスト(V2.3 - Dify list型対応)"""
|
| 55 |
+
slide_data: Union[str, list] # JSON文字列 or list(Difyからの直接配列も受付)
|
| 56 |
+
pdf_url: str # GASが生成したPDF URL
|
| 57 |
+
history: Union[str, list] # JSON文字列 or list(Difyからの直接配列も受付) # 6件の元イベント(年号・語呂合わせ・サマリー)- JSON文字列
|
| 58 |
|
| 59 |
class AudioInfo(BaseModel):
|
| 60 |
"""音声情報"""
|
|
|
|
| 631 |
|
| 632 |
|
| 633 |
def create_video_with_audio_from_slides_v2(
|
| 634 |
+
slide_data: Union[str, list],
|
| 635 |
pdf_url: str,
|
| 636 |
+
history: Union[str, list],
|
| 637 |
gemini_token: str,
|
| 638 |
progress_callback=None
|
| 639 |
) -> tuple:
|
|
|
|
| 1214 |
)
|
| 1215 |
|
| 1216 |
try:
|
| 1217 |
+
logger.info(f"API リクエスト受信(V2.3 - Dify list型対応)")
|
| 1218 |
+
logger.info(f" slide_data type: {type(request.slide_data).__name__}")
|
| 1219 |
+
logger.info(f" history type: {type(request.history).__name__}")
|
| 1220 |
+
logger.info(f" pdf_url: {request.pdf_url[:50]}...")
|
| 1221 |
|
| 1222 |
+
# 動画生成(V2.3完全版)
|
| 1223 |
video_url, page2_image_url, audio_info_list = create_video_with_audio_from_slides_v2(
|
| 1224 |
slide_data=request.slide_data,
|
| 1225 |
pdf_url=request.pdf_url,
|