Skip to content

Commit fe698d0

Browse files
authored
Merge pull request #10 from jonaskahn/dev
Dev
2 parents 511db97 + 9621d91 commit fe698d0

9 files changed

Lines changed: 825 additions & 407 deletions

File tree

engine/engine/processors/audio_processor.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class __AudioChainProcessor:
1919
def __init__(self):
2020
self.filters: List[Callable[[str], str]] = []
2121

22-
def add_filter(self, func: Callable[[str], str]) -> '__AudioChainProcessor':
22+
def add_filter(self, func: Callable[[str], str]) -> "__AudioChainProcessor":
2323
self.filters.append(func)
2424
return self
2525

@@ -43,10 +43,8 @@ def mp4_to_wav(audio_input_path: str) -> str:
4343

4444

4545
def __sound_converter(
46-
audio_input_path: str,
47-
input_format: str,
48-
output_format: str,
49-
codec: str = None) -> str:
46+
audio_input_path: str, input_format: str, output_format: str, codec: str = None
47+
) -> str:
5048
audio_output_file = os.path.join(TEMP_AUDIO_DIR, f"{uuid4()}.{output_format}")
5149
sound = AudioSegment.from_file(audio_input_path, format=input_format)
5250
sound.export(audio_output_file, format=output_format, codec=codec)
@@ -85,7 +83,12 @@ def denoise(audio_path: str) -> str:
8583

8684
def process_audio(audio_path: str) -> str:
8785
if env.AUDIO_ENHANCE_ENABLED in ["yes", "on", "enabled"]:
88-
return __AudioChainProcessor().add_filter(mp4_to_wav).add_filter(denoise).add_filter(remove_music).filter(
89-
audio_path)
86+
return (
87+
__AudioChainProcessor()
88+
.add_filter(mp4_to_wav)
89+
.add_filter(denoise)
90+
.add_filter(remove_music)
91+
.filter(audio_path)
92+
)
9093
else:
9194
return __AudioChainProcessor().add_filter(mp4_to_wav).filter(audio_path)

engine/engine/server.py

Lines changed: 66 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@
3232
logger.debug('use "spawn" for multi-process')
3333

3434

35-
@app.listener('before_server_start')
35+
@app.listener("before_server_start")
3636
async def connect_db(app, loop):
3737
logger.debug("open sqlite Connection")
3838
sqlite_client.connect()
3939
sqlite_client.create_tables([Video, VideoChapter, Chat])
4040

4141

42-
@app.listener('after_server_stop')
42+
@app.listener("after_server_stop")
4343
async def close_db(app, loop):
4444
if not sqlite_client.is_closed():
4545
logger.debug("close sqlite")
@@ -49,13 +49,7 @@ async def close_db(app, loop):
4949
@app.exception(Exception)
5050
async def handle_exception(request: Request, exception: Exception):
5151
logger.error(exception, exc_info=True)
52-
return json(
53-
{
54-
"status_code": 500,
55-
"message": str(exception)
56-
},
57-
status=500
58-
)
52+
return json({"status_code": 500, "message": str(exception)}, status=500)
5953

6054

6155
@app.exception(LogicError)
@@ -66,7 +60,7 @@ async def handle_exception(request: Request, exception: LogicError):
6660
"status_code": 400,
6761
"message": str(exception),
6862
},
69-
status=500
63+
status=500,
7064
)
7165

7266

@@ -77,38 +71,40 @@ async def health(request: Request):
7771

7872
@app.post("/api/youtube/prefetch")
7973
async def fetch_youtube_video_info(request: Request):
80-
url = request.json['url']
74+
url = request.json["url"]
8175
youtube_service = YoutubeService(url)
8276
data = youtube_service.fetch_basic_info()
83-
return json({
84-
"status_code": 200,
85-
"message": "Successfully fetch video info",
86-
"payload": data
87-
})
77+
return json(
78+
{
79+
"status_code": 200,
80+
"message": "Successfully fetch video info",
81+
"payload": data,
82+
}
83+
)
8884

8985

9086
@app.post("/api/youtube/process")
9187
async def process_youtube_video(request: Request):
92-
url = request.json['url']
93-
provider = request.json['provider']
88+
url = request.json["url"]
89+
provider = request.json["provider"]
9490
youtube_service = YoutubeService(url)
9591
data = await asyncio.create_task(youtube_service.fetch_video_data(provider))
96-
return json({
97-
"status_code": 200,
98-
"message": "Successfully fetch video data, analyze video in processing.",
99-
"payload": data
100-
})
92+
return json(
93+
{
94+
"status_code": 200,
95+
"message": "Successfully fetch video data, analyze video in processing.",
96+
"payload": data,
97+
}
98+
)
10199

102100

103101
@app.post("/api/video/analysis")
104102
async def analysis_youtube_video(request: Request):
105-
video_id: int = int(request.json['video_id'])
103+
video_id: int = int(request.json["video_id"])
106104
data = await asyncio.create_task(VideoService.analysis_video(video_id))
107-
return json({
108-
"status_code": 200,
109-
"message": "Analyze video in processing.",
110-
"payload": data
111-
})
105+
return json(
106+
{"status_code": 200, "message": "Analyze video in processing.", "payload": data}
107+
)
112108

113109

114110
@app.options("/api/video/detail/<video_id>")
@@ -119,72 +115,66 @@ async def opts_detail(request: Request, video_id: int):
119115
@app.get("/api/video/detail/<video_id>")
120116
async def get_video_detail(request: Request, video_id: int):
121117
data = VideoService.get_video_detail(video_id)
122-
return json({
123-
"status_code": 200,
124-
"message": "Successfully get video detail",
125-
"payload": data
126-
})
118+
return json(
119+
{
120+
"status_code": 200,
121+
"message": "Successfully get video detail",
122+
"payload": data,
123+
}
124+
)
127125

128126

129127
@app.post("/api/video/summary")
130128
async def summary(request: Request):
131-
vid = request.json['video_id']
132-
lang_code = request.json['lang_code']
133-
provider = request.json['provider']
129+
vid = request.json["video_id"]
130+
lang_code = request.json["lang_code"]
131+
provider = request.json["provider"]
134132
model = request.json.get("model", None)
135-
data = await asyncio.create_task(VideoService.summary_video(vid, lang_code, provider, model))
133+
data = await asyncio.create_task(
134+
VideoService.summary_video(vid, lang_code, provider, model)
135+
)
136136
asyncio.create_task(VideoService.analysis_summary_video(vid, model, provider))
137-
return json({
138-
"status_code": 200,
139-
"message": "Successfully summary video",
140-
"payload": data
141-
})
137+
return json(
138+
{"status_code": 200, "message": "Successfully summary video", "payload": data}
139+
)
142140

143141

144142
@app.delete("/api/video/<video_id>")
145143
async def delete_video(request: Request, video_id: int):
146144
VideoService.delete(video_id)
147-
return json({
148-
"status_code": 200,
149-
"message": f"Successfully delete video {video_id}"
150-
})
145+
return json(
146+
{"status_code": 200, "message": f"Successfully delete video {video_id}"}
147+
)
151148

152149

153150
@app.get("/api/videos/<page>")
154151
async def list_videos(request: Request, page: int):
155152
total, data = VideoService.get_videos_with_paging(page)
156-
return json({
157-
"status_code": 200,
158-
"message": "Successfully",
159-
"payload": {
160-
"total": total,
161-
"videos": data
153+
return json(
154+
{
155+
"status_code": 200,
156+
"message": "Successfully",
157+
"payload": {"total": total, "videos": data},
162158
}
163-
})
159+
)
164160

165161

166162
@app.post("/api/chat")
167163
async def chat(request: Request):
168-
vid = request.json['video_id']
169-
question = request.json['question']
170-
provider = request.json['provider']
164+
vid = request.json["video_id"]
165+
question = request.json["question"]
166+
provider = request.json["provider"]
171167
model = request.json.get("model", None)
172168
data = await asyncio.create_task(ChatService.ask(question, vid, provider, model))
173-
return json({
174-
"status_code": 200,
175-
"message": "Successfully",
176-
"payload": data
177-
})
169+
return json({"status_code": 200, "message": "Successfully", "payload": data})
178170

179171

180172
@app.get("/api/chat/history/<video_id>")
181173
async def chat_history(request: Request, video_id: int):
182174
chat_histories = ChatService.get_chat_histories(video_id=video_id)
183-
return json({
184-
"status_code": 200,
185-
"message": "Successfully",
186-
"payload": chat_histories
187-
})
175+
return json(
176+
{"status_code": 200, "message": "Successfully", "payload": chat_histories}
177+
)
188178

189179

190180
@app.delete("/api/chat/clear/<video_id>")
@@ -193,7 +183,14 @@ async def clear_chat(request: Request, video_id: int):
193183
return response.HTTPResponse(status=200)
194184

195185

196-
if __name__ == '__main__':
186+
if __name__ == "__main__":
197187
setup_log()
198188
app_debug_mode = True if env.DEBUG_MODE in ["on", "yes", "enabled"] else False
199-
app.run(host="0.0.0.0", port=8000, access_log=True, dev=app_debug_mode, debug=app_debug_mode, workers=10)
189+
app.run(
190+
host="0.0.0.0",
191+
port=8000,
192+
access_log=True,
193+
dev=app_debug_mode,
194+
debug=app_debug_mode,
195+
workers=10,
196+
)

0 commit comments

Comments
 (0)