marquesafonso commited on
Commit
ab25f71
·
1 Parent(s): 1aceee0

add transparency pro tip. fix file validation.

Browse files
Files changed (3) hide show
  1. main.py +23 -7
  2. static/submit_video.html +1 -1
  3. utils/process_video.py +0 -1
main.py CHANGED
@@ -2,6 +2,7 @@ from fastapi import FastAPI, UploadFile, HTTPException, File, Form, Depends
2
  from fastapi.responses import FileResponse, HTMLResponse
3
  from fastapi.security import HTTPBasic, HTTPBasicCredentials
4
  from typing import Optional
 
5
  from utils.process_video import process_video
6
  from utils.zip_response import zip_response
7
  from utils.api_configs import api_configs
@@ -29,6 +30,25 @@ logging.basicConfig(filename='main.log',
29
  format='%(asctime)s %(levelname)s %(message)s',
30
  datefmt='%m/%d/%Y %I:%M:%S %p')
31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  @app.get("/")
33
  async def root():
34
  html_content = f"""
@@ -45,8 +65,8 @@ async def get_form():
45
  return HTMLResponse(content=html_content)
46
 
47
  @app.post("/process_video/")
48
- async def process_video_api(video_file: UploadFile = File(...),
49
- srt_file: Optional[UploadFile] = File(...),
50
  max_words_per_line: Optional[int] = Form(8),
51
  fontsize: Optional[int] = Form(36),
52
  font: Optional[str] = Form("FuturaPTHeavy"),
@@ -55,10 +75,6 @@ async def process_video_api(video_file: UploadFile = File(...),
55
  username: str = Depends(get_current_user)
56
  ):
57
  try:
58
- if not str(video_file.filename).endswith('.mp4'):
59
- raise HTTPException(status_code=400, detail="Invalid Video File type. Please upload an MP4 file.")
60
- if srt_file.size > 0 and not str(srt_file.filename).endswith('.srt'):
61
- raise HTTPException(status_code=400, detail="Invalid Subtitles File type. Please upload an SRT file.")
62
  logging.info("Creating temporary directories")
63
  temp_dir = os.path.join(os.getcwd(),"temp")
64
  os.makedirs(temp_dir, exist_ok=True)
@@ -95,4 +111,4 @@ async def process_video_api(video_file: UploadFile = File(...),
95
 
96
  if __name__ == "__main__":
97
  # Use Uvicorn to run the application
98
- uvicorn.run(app, host="127.0.0.1", port=8000)
 
2
  from fastapi.responses import FileResponse, HTMLResponse
3
  from fastapi.security import HTTPBasic, HTTPBasicCredentials
4
  from typing import Optional
5
+ from pydantic import BaseModel, validator
6
  from utils.process_video import process_video
7
  from utils.zip_response import zip_response
8
  from utils.api_configs import api_configs
 
30
  format='%(asctime)s %(levelname)s %(message)s',
31
  datefmt='%m/%d/%Y %I:%M:%S %p')
32
 
33
+ class MP4Video(BaseModel):
34
+ video_file: UploadFile
35
+
36
+ @validator('video_file')
37
+ def validate_video_file(cls, v):
38
+ if not v.filename.endswith('.mp4'):
39
+ raise HTTPException(status_code=500, detail='Invalid video file type. Please upload an MP4 file.')
40
+ return v
41
+
42
+ class SRTFile(BaseModel):
43
+ srt_file: Optional[UploadFile] = None
44
+
45
+ @validator('srt_file')
46
+ def validate_srt_file(cls, v):
47
+ if v.size > 0 and not v.filename.endswith('.srt'):
48
+ raise HTTPException(status_code=422, detail='Invalid subtitle file type. Please upload an SRT file.')
49
+ return v
50
+
51
+
52
  @app.get("/")
53
  async def root():
54
  html_content = f"""
 
65
  return HTMLResponse(content=html_content)
66
 
67
  @app.post("/process_video/")
68
+ async def process_video_api(video_file: MP4Video = Depends(),
69
+ srt_file: SRTFile = Depends(),
70
  max_words_per_line: Optional[int] = Form(8),
71
  fontsize: Optional[int] = Form(36),
72
  font: Optional[str] = Form("FuturaPTHeavy"),
 
75
  username: str = Depends(get_current_user)
76
  ):
77
  try:
 
 
 
 
78
  logging.info("Creating temporary directories")
79
  temp_dir = os.path.join(os.getcwd(),"temp")
80
  os.makedirs(temp_dir, exist_ok=True)
 
111
 
112
  if __name__ == "__main__":
113
  # Use Uvicorn to run the application
114
+ uvicorn.run(app, host="127.0.0.1", port=8000)
static/submit_video.html CHANGED
@@ -65,7 +65,7 @@
65
  Max words per line: <input type="number" name="max_words_per_line" value="8"><br>
66
  Font size: <input type="number" name="fontsize" value="36"><br>
67
  Font: <input type="text" name="font" value="FuturaPTHeavy"><br>
68
- Background color: <input type="text" name="bg_color" value="#070a13b3"><br>
69
  Text color: <input type="text" name="text_color" value="white"><br>
70
  <input type="submit">
71
  </form>
 
65
  Max words per line: <input type="number" name="max_words_per_line" value="8"><br>
66
  Font size: <input type="number" name="fontsize" value="36"><br>
67
  Font: <input type="text" name="font" value="FuturaPTHeavy"><br>
68
+ Background color (Pro tip: #00FFFF00 = transparent): <input type="text" name="bg_color" value="#070a13b3"><br>
69
  Text color: <input type="text" name="text_color" value="white"><br>
70
  <input type="submit">
71
  </form>
utils/process_video.py CHANGED
@@ -1,4 +1,3 @@
1
- # Import necessary modules
2
  from utils.transcriber import transcriber
3
  from utils.subtitler import subtitler
4
  from utils.convert_video_to_audio import convert_video_to_audio
 
 
1
  from utils.transcriber import transcriber
2
  from utils.subtitler import subtitler
3
  from utils.convert_video_to_audio import convert_video_to_audio