From 9027cd720290caac10a89ead3299631dfaffcb5f Mon Sep 17 00:00:00 2001 From: Brett Williams Date: Sat, 21 Oct 2023 22:45:30 -0500 Subject: [PATCH] More code re-organizing --- src/{engines/downloaders => api}/__init__.py | 0 src/{ => api}/api_server.py | 6 +++--- src/{ => api}/server_proxy.py | 0 src/distributed_job_manager.py | 2 +- src/engines/{scripts => aerender}/__init__.py | 0 src/engines/{ => aerender}/aerender_engine.py | 5 +---- .../aerender}/aerender_worker.py | 4 ++-- src/engines/{scripts => }/blender/__init__.py | 0 .../blender_downloader.py | 3 +-- src/engines/{ => blender}/blender_engine.py | 11 ++++------- .../blender}/blender_worker.py | 4 ++-- .../scripts}/get_file_info.py | 0 .../scripts}/pack_project.py | 0 src/{workers => engines/core}/__init__.py | 0 src/engines/{ => core}/base_engine.py | 0 src/{workers => engines/core}/base_worker.py | 0 .../{downloaders => core}/downloader_core.py | 0 .../core}/worker_factory.py | 8 ++++---- src/engines/engine_manager.py | 18 ++++++------------ src/engines/ffmpeg/__init__.py | 0 .../ffmpeg_downloader.py | 2 +- src/engines/{ => ffmpeg}/ffmpeg_engine.py | 6 ++---- .../ffmpeg}/ffmpeg_worker.py | 4 ++-- src/render_queue.py | 4 ++-- src/utilities/ffmpeg_helper.py | 2 +- start_server.py | 2 +- 26 files changed, 33 insertions(+), 48 deletions(-) rename src/{engines/downloaders => api}/__init__.py (100%) rename src/{ => api}/api_server.py (99%) rename src/{ => api}/server_proxy.py (100%) rename src/engines/{scripts => aerender}/__init__.py (100%) rename src/engines/{ => aerender}/aerender_engine.py (87%) rename src/{workers => engines/aerender}/aerender_worker.py (97%) rename src/engines/{scripts => }/blender/__init__.py (100%) rename src/engines/{downloaders => blender}/blender_downloader.py (98%) rename src/engines/{ => blender}/blender_engine.py (96%) rename src/{workers => engines/blender}/blender_worker.py (98%) rename src/engines/{scripts/blender => blender/scripts}/get_file_info.py (100%) rename src/engines/{scripts/blender => blender/scripts}/pack_project.py (100%) rename src/{workers => engines/core}/__init__.py (100%) rename src/engines/{ => core}/base_engine.py (100%) rename src/{workers => engines/core}/base_worker.py (100%) rename src/engines/{downloaders => core}/downloader_core.py (100%) rename src/{workers => engines/core}/worker_factory.py (86%) create mode 100644 src/engines/ffmpeg/__init__.py rename src/engines/{downloaders => ffmpeg}/ffmpeg_downloader.py (98%) rename src/engines/{ => ffmpeg}/ffmpeg_engine.py (97%) rename src/{workers => engines/ffmpeg}/ffmpeg_worker.py (94%) diff --git a/src/engines/downloaders/__init__.py b/src/api/__init__.py similarity index 100% rename from src/engines/downloaders/__init__.py rename to src/api/__init__.py diff --git a/src/api_server.py b/src/api/api_server.py similarity index 99% rename from src/api_server.py rename to src/api/api_server.py index 209b8fd..388ca2a 100755 --- a/src/api_server.py +++ b/src/api/api_server.py @@ -24,12 +24,12 @@ from werkzeug.utils import secure_filename from src.distributed_job_manager import DistributedJobManager from src.engines.engine_manager import EngineManager from src.render_queue import RenderQueue, JobNotFoundError -from src.server_proxy import RenderServerProxy +from src.api.server_proxy import RenderServerProxy from src.utilities.server_helper import generate_thumbnail_for_job from src.utilities.zeroconf_server import ZeroconfServer from src.utilities.misc_helper import system_safe_path -from src.workers.worker_factory import RenderWorkerFactory -from src.workers.base_worker import string_to_status, RenderStatus +from src.engines.core.worker_factory import RenderWorkerFactory +from src.engines.core.base_worker import string_to_status, RenderStatus logger = logging.getLogger() server = Flask(__name__, template_folder='web/templates', static_folder='web/static') diff --git a/src/server_proxy.py b/src/api/server_proxy.py similarity index 100% rename from src/server_proxy.py rename to src/api/server_proxy.py diff --git a/src/distributed_job_manager.py b/src/distributed_job_manager.py index b5e9f3a..08068f5 100644 --- a/src/distributed_job_manager.py +++ b/src/distributed_job_manager.py @@ -7,7 +7,7 @@ import zipfile from pubsub import pub from src.render_queue import RenderQueue -from src.server_proxy import RenderServerProxy +from src.api.server_proxy import RenderServerProxy from src.utilities.misc_helper import get_file_size_human from src.utilities.status_utils import RenderStatus, string_to_status from src.utilities.zeroconf_server import ZeroconfServer diff --git a/src/engines/scripts/__init__.py b/src/engines/aerender/__init__.py similarity index 100% rename from src/engines/scripts/__init__.py rename to src/engines/aerender/__init__.py diff --git a/src/engines/aerender_engine.py b/src/engines/aerender/aerender_engine.py similarity index 87% rename from src/engines/aerender_engine.py rename to src/engines/aerender/aerender_engine.py index fe335c6..7e55664 100644 --- a/src/engines/aerender_engine.py +++ b/src/engines/aerender/aerender_engine.py @@ -1,7 +1,4 @@ -try: - from .base_engine import * -except ImportError: - from base_engine import * +from src.engines.core.base_engine import BaseRenderEngine class AERender(BaseRenderEngine): diff --git a/src/workers/aerender_worker.py b/src/engines/aerender/aerender_worker.py similarity index 97% rename from src/workers/aerender_worker.py rename to src/engines/aerender/aerender_worker.py index d9e491e..65d386c 100644 --- a/src/workers/aerender_worker.py +++ b/src/engines/aerender/aerender_worker.py @@ -6,8 +6,8 @@ import os import re import time -from src.workers.base_worker import BaseRenderWorker, timecode_to_frames -from src.engines.aerender_engine import AERender +from src.engines.core.base_worker import BaseRenderWorker, timecode_to_frames +from src.engines.aerender.aerender_engine import AERender def aerender_path(): diff --git a/src/engines/scripts/blender/__init__.py b/src/engines/blender/__init__.py similarity index 100% rename from src/engines/scripts/blender/__init__.py rename to src/engines/blender/__init__.py diff --git a/src/engines/downloaders/blender_downloader.py b/src/engines/blender/blender_downloader.py similarity index 98% rename from src/engines/downloaders/blender_downloader.py rename to src/engines/blender/blender_downloader.py index beda93a..3605ff5 100644 --- a/src/engines/downloaders/blender_downloader.py +++ b/src/engines/blender/blender_downloader.py @@ -1,11 +1,10 @@ import logging -import os import platform import re import requests -from .downloader_core import download_and_extract_app +from ..core.downloader_core import download_and_extract_app # url = "https://download.blender.org/release/" url = "https://ftp.nluug.nl/pub/graphics/blender/release/" # much faster mirror for testing diff --git a/src/engines/blender_engine.py b/src/engines/blender/blender_engine.py similarity index 96% rename from src/engines/blender_engine.py rename to src/engines/blender/blender_engine.py index 6d3ab39..7b90ec0 100644 --- a/src/engines/blender_engine.py +++ b/src/engines/blender/blender_engine.py @@ -1,10 +1,8 @@ -try: - from .base_engine import * -except ImportError: - from base_engine import * import json import re -import logging + +from src.engines.core.base_engine import * +from src.utilities.misc_helper import system_safe_path logger = logging.getLogger() @@ -58,8 +56,7 @@ class Blender(BaseRenderEngine): def get_scene_info(self, project_path, timeout=10): scene_info = {} try: - script_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), - 'scripts', 'blender', 'get_file_info.py') + script_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'scripts', 'get_file_info.py') results = self.run_python_script(project_path, system_safe_path(script_path), timeout=timeout) result_text = results.stdout.decode() for line in result_text.splitlines(): diff --git a/src/workers/blender_worker.py b/src/engines/blender/blender_worker.py similarity index 98% rename from src/workers/blender_worker.py rename to src/engines/blender/blender_worker.py index 970146d..7c10a88 100644 --- a/src/workers/blender_worker.py +++ b/src/engines/blender/blender_worker.py @@ -2,9 +2,9 @@ import re from collections import Counter -from src.engines.blender_engine import Blender +from src.engines.blender.blender_engine import Blender from src.utilities.ffmpeg_helper import image_sequence_to_video -from src.workers.base_worker import * +from src.engines.core.base_worker import * class BlenderRenderWorker(BaseRenderWorker): diff --git a/src/engines/scripts/blender/get_file_info.py b/src/engines/blender/scripts/get_file_info.py similarity index 100% rename from src/engines/scripts/blender/get_file_info.py rename to src/engines/blender/scripts/get_file_info.py diff --git a/src/engines/scripts/blender/pack_project.py b/src/engines/blender/scripts/pack_project.py similarity index 100% rename from src/engines/scripts/blender/pack_project.py rename to src/engines/blender/scripts/pack_project.py diff --git a/src/workers/__init__.py b/src/engines/core/__init__.py similarity index 100% rename from src/workers/__init__.py rename to src/engines/core/__init__.py diff --git a/src/engines/base_engine.py b/src/engines/core/base_engine.py similarity index 100% rename from src/engines/base_engine.py rename to src/engines/core/base_engine.py diff --git a/src/workers/base_worker.py b/src/engines/core/base_worker.py similarity index 100% rename from src/workers/base_worker.py rename to src/engines/core/base_worker.py diff --git a/src/engines/downloaders/downloader_core.py b/src/engines/core/downloader_core.py similarity index 100% rename from src/engines/downloaders/downloader_core.py rename to src/engines/core/downloader_core.py diff --git a/src/workers/worker_factory.py b/src/engines/core/worker_factory.py similarity index 86% rename from src/workers/worker_factory.py rename to src/engines/core/worker_factory.py index 5497629..fd549c5 100644 --- a/src/workers/worker_factory.py +++ b/src/engines/core/worker_factory.py @@ -1,5 +1,5 @@ import logging -from ..engines.engine_manager import EngineManager +from src.engines.engine_manager import EngineManager logger = logging.getLogger() @@ -9,9 +9,9 @@ class RenderWorkerFactory: @staticmethod def supported_classes(): # to add support for any additional RenderWorker classes, import their classes and add to list here - from src.workers.blender_worker import BlenderRenderWorker - from src.workers.aerender_worker import AERenderWorker - from src.workers.ffmpeg_worker import FFMPEGRenderWorker + from src.engines.blender.blender_worker import BlenderRenderWorker + from src.engines.aerender.aerender_worker import AERenderWorker + from src.engines.ffmpeg.ffmpeg_worker import FFMPEGRenderWorker classes = [BlenderRenderWorker, AERenderWorker, FFMPEGRenderWorker] return classes diff --git a/src/engines/engine_manager.py b/src/engines/engine_manager.py index 7c7106a..1be5cb1 100644 --- a/src/engines/engine_manager.py +++ b/src/engines/engine_manager.py @@ -1,19 +1,13 @@ -import os import logging +import os import platform import shutil -from .downloaders.blender_downloader import BlenderDownloader -from .downloaders.ffmpeg_downloader import FFMPEGDownloader -from ..utilities.misc_helper import system_safe_path -try: - from .blender_engine import Blender -except ImportError: - from blender_engine import Blender -try: - from .ffmpeg_engine import FFMPEG -except ImportError: - from ffmpeg_engine import FFMPEG +from src.engines.blender.blender_downloader import BlenderDownloader +from src.engines.blender.blender_engine import Blender +from src.engines.ffmpeg.ffmpeg_downloader import FFMPEGDownloader +from src.engines.ffmpeg.ffmpeg_engine import FFMPEG +from src.utilities.misc_helper import system_safe_path logger = logging.getLogger() diff --git a/src/engines/ffmpeg/__init__.py b/src/engines/ffmpeg/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/engines/downloaders/ffmpeg_downloader.py b/src/engines/ffmpeg/ffmpeg_downloader.py similarity index 98% rename from src/engines/downloaders/ffmpeg_downloader.py rename to src/engines/ffmpeg/ffmpeg_downloader.py index 32aa4d4..989576d 100644 --- a/src/engines/downloaders/ffmpeg_downloader.py +++ b/src/engines/ffmpeg/ffmpeg_downloader.py @@ -5,7 +5,7 @@ import re import requests -from .downloader_core import download_and_extract_app +from src.engines.core.downloader_core import download_and_extract_app logger = logging.getLogger() supported_formats = ['.zip', '.tar.xz', '.dmg'] diff --git a/src/engines/ffmpeg_engine.py b/src/engines/ffmpeg/ffmpeg_engine.py similarity index 97% rename from src/engines/ffmpeg_engine.py rename to src/engines/ffmpeg/ffmpeg_engine.py index 52e59b5..b6147a2 100644 --- a/src/engines/ffmpeg_engine.py +++ b/src/engines/ffmpeg/ffmpeg_engine.py @@ -1,9 +1,7 @@ -try: - from .base_engine import * -except ImportError: - from base_engine import * import re +from src.engines.core.base_engine import * + class FFMPEG(BaseRenderEngine): diff --git a/src/workers/ffmpeg_worker.py b/src/engines/ffmpeg/ffmpeg_worker.py similarity index 94% rename from src/workers/ffmpeg_worker.py rename to src/engines/ffmpeg/ffmpeg_worker.py index 81fe5e7..687d35b 100644 --- a/src/workers/ffmpeg_worker.py +++ b/src/engines/ffmpeg/ffmpeg_worker.py @@ -2,8 +2,8 @@ import re import subprocess -from src.workers.base_worker import BaseRenderWorker -from src.engines.ffmpeg_engine import FFMPEG +from src.engines.core.base_worker import BaseRenderWorker +from src.engines.ffmpeg.ffmpeg_engine import FFMPEG class FFMPEGRenderWorker(BaseRenderWorker): diff --git a/src/render_queue.py b/src/render_queue.py index d8f2bda..e1b3188 100755 --- a/src/render_queue.py +++ b/src/render_queue.py @@ -6,7 +6,7 @@ from sqlalchemy.orm import sessionmaker from src.utilities.status_utils import RenderStatus from src.engines.engine_manager import EngineManager -from src.workers.base_worker import Base +from src.engines.core.base_worker import Base logger = logging.getLogger() @@ -84,7 +84,7 @@ class RenderQueue: @classmethod def load_state(cls): - from src.workers.base_worker import BaseRenderWorker + from src.engines.core.base_worker import BaseRenderWorker cls.job_queue = cls.session.query(BaseRenderWorker).all() @classmethod diff --git a/src/utilities/ffmpeg_helper.py b/src/utilities/ffmpeg_helper.py index 941c383..992377a 100644 --- a/src/utilities/ffmpeg_helper.py +++ b/src/utilities/ffmpeg_helper.py @@ -1,5 +1,5 @@ import subprocess -from src.engines.ffmpeg_engine import FFMPEG +from src.engines.ffmpeg.ffmpeg_engine import FFMPEG def image_sequence_to_video(source_glob_pattern, output_path, framerate=24, encoder="prores_ks", profile=4, diff --git a/start_server.py b/start_server.py index 9935eb7..ea6cc2c 100755 --- a/start_server.py +++ b/start_server.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -from src.api_server import start_server +from src.api.api_server import start_server if __name__ == '__main__': start_server()