From 57b1bb87bc7b0895dd8aa918af87602b94c52509 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Thu, 1 Feb 2024 14:11:04 +0100 Subject: [PATCH] Profile parameter added, build.py script created --- media-samurai/api.py | 17 ++++++++++------- media-samurai/build.py | 14 ++++++++++++++ media-samurai/logger.yaml | 2 +- media-samurai/main.py | 3 ++- media-samurai/transcode.py | 3 ++- 5 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 media-samurai/build.py diff --git a/media-samurai/api.py b/media-samurai/api.py index 062b28d5..a44848db 100644 --- a/media-samurai/api.py +++ b/media-samurai/api.py @@ -4,11 +4,11 @@ from typing import Optional import shortuuid from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles -from fastapi import BackgroundTasks, FastAPI +from fastapi import BackgroundTasks, FastAPI, HTTPException from pydantic import BaseModel from hls import TranscodeJob -from transcode import TranscodeItem, TranscodeStatus, background_tasks_results, execute_transcode_task +from transcode import TranscodeItem, TranscodeStatus, background_tasks_results, execute_hls_transcode_task # https://docs.pydantic.dev/2.4/concepts/models/ @@ -34,11 +34,14 @@ app.mount("/video", StaticFiles(directory="hls"), name="VIDEO") @app.post("/submit") async def submit(item: TranscodeItem, background_tasks: BackgroundTasks): - task_id = shortuuid.uuid() - background_tasks.add_task(execute_transcode_task, task_id, item.source, item.target, item.frames) - job = TranscodeJob() - job.status = TranscodeStatus.RUNNING - background_tasks_results[task_id] = job + if item.profile == 'hls': + task_id = shortuuid.uuid() + background_tasks.add_task(execute_hls_transcode_task, task_id, item.source, item.target, item.frames) + job = TranscodeJob() + job.status = TranscodeStatus.RUNNING + background_tasks_results[task_id] = job + else: + raise HTTPException(status_code=400, detail="Profile not defined!") return {"task_id": task_id} diff --git a/media-samurai/build.py b/media-samurai/build.py new file mode 100644 index 00000000..b4873a69 --- /dev/null +++ b/media-samurai/build.py @@ -0,0 +1,14 @@ +import os +import subprocess +from pathlib import Path +import nicegui + +cmd = [ + 'pyinstaller', + 'main.py', # your main file with ui.run() + '--name', 'media-samurai', # name of your app + '--onefile', + #'--windowed', # prevent console appearing, only use with ui.run(native=True, ...) + '--add-data', f'{Path(nicegui.__file__).parent}{os.pathsep}nicegui' +] +subprocess.call(cmd) \ No newline at end of file diff --git a/media-samurai/logger.yaml b/media-samurai/logger.yaml index 3dddc5ed..c9484ff7 100644 --- a/media-samurai/logger.yaml +++ b/media-samurai/logger.yaml @@ -3,7 +3,7 @@ handlers: format: '{time:YYYY-MM-DD HH:mm:ss.SSS} {message}' colorize: true diagnose: true - - sink: media-samurai.log + - sink: /logs/media-samurai.log enqueue: true serialize: false format: '{time:YYYY-MM-DD HH:mm:ss.SSS} {message}' diff --git a/media-samurai/main.py b/media-samurai/main.py index 08c5b3a3..594d975f 100644 --- a/media-samurai/main.py +++ b/media-samurai/main.py @@ -15,4 +15,5 @@ ui.label(f'MediaSamurai listening on port: {app_config.api.port}') ui.link('Check documentation', '/docs') ui.run_with(app, favicon=site_icon_lizzard) if __name__ == "__main__": - uvicorn.run(app, port=8181, log_level='critical') + uvicorn.run(app, port=8181) + # , log_level='critical' diff --git a/media-samurai/transcode.py b/media-samurai/transcode.py index 546c914a..5f12bb7e 100644 --- a/media-samurai/transcode.py +++ b/media-samurai/transcode.py @@ -15,6 +15,7 @@ executor = ThreadPoolExecutor(max_workers=5) class TranscodeItem(BaseModel): source: str target: str + profile: str frames: int @@ -28,7 +29,7 @@ def simulate_background_task(task_id, duration): job.status = TranscodeStatus.COMPLETED -def execute_transcode_task(task_id, remote_source_file, remote_target_directory, frames): +def execute_hls_transcode_task(task_id, remote_source_file, remote_target_directory, frames): job = background_tasks_results[task_id] job.started = datetime.now() job.status = TranscodeStatus.RUNNING -- 2.54.0