mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
FFMPEG downloader (#36)
* Add ffmpeg_downloader.py * Move shared download logic to downloader_core.py * Added Windows support and some misc cleanup * Fix issue with copying contents of .dmg files * Add FFMPEGDownloader to engine_manager.py
This commit is contained in:
@@ -2,6 +2,8 @@ import os
|
||||
import logging
|
||||
import platform
|
||||
import shutil
|
||||
from .downloaders.blender_downloader import BlenderDownloader
|
||||
from .downloaders.ffmpeg_downloader import FFMPEGDownloader
|
||||
|
||||
try:
|
||||
from .blender_engine import Blender
|
||||
@@ -41,7 +43,7 @@ class EngineManager:
|
||||
# Create a dictionary with named keys
|
||||
executable_names = {'linux': 'blender', 'windows': 'blender.exe', 'macos': 'Blender.app'}
|
||||
result_dict = {keys[i]: segments[i] for i in range(min(len(keys), len(segments)))}
|
||||
result_dict['path'] = os.path.join(cls.engines_path, directory, executable_names[result_dict['system_os']])
|
||||
result_dict['path'] = os.path.join(cls.engines_path, directory, executable_names.get(result_dict['system_os'], 'unknown'))
|
||||
result_dict['type'] = 'managed'
|
||||
results.append(result_dict)
|
||||
except FileNotFoundError:
|
||||
@@ -98,15 +100,24 @@ class EngineManager:
|
||||
logger.info(f"Requested download of {engine} {version}, but local copy already exists")
|
||||
return existing_download
|
||||
|
||||
if engine == "blender":
|
||||
from .scripts.blender.blender_downloader import BlenderDownloader
|
||||
logger.info(f"Requesting download of {engine} {version}")
|
||||
if BlenderDownloader.download_engine(version, download_location=cls.engines_path, system_os=system_os, cpu=cpu):
|
||||
return cls.has_engine_version(engine, version, system_os, cpu)
|
||||
else:
|
||||
logger.error("Error downloading Engine")
|
||||
logger.info(f"Requesting download of {engine} {version}")
|
||||
downloader_classes = {
|
||||
"blender": BlenderDownloader,
|
||||
"ffmpeg": FFMPEGDownloader,
|
||||
# Add more engine types and corresponding downloader classes as needed
|
||||
}
|
||||
|
||||
return None # Return None to indicate an error
|
||||
# Check if the provided engine type is valid
|
||||
if engine not in downloader_classes:
|
||||
logger.error("No valid engine found")
|
||||
return
|
||||
|
||||
# Get the appropriate downloader class based on the engine type
|
||||
downloader = downloader_classes[engine]
|
||||
if downloader.download_engine(version, download_location=cls.engines_path, system_os=system_os, cpu=cpu):
|
||||
return cls.has_engine_version(engine, version, system_os, cpu)
|
||||
else:
|
||||
logger.error(f"Error downloading {engine}")
|
||||
|
||||
@classmethod
|
||||
def delete_engine_download(cls, engine, version, system_os=None, cpu=None):
|
||||
@@ -125,4 +136,4 @@ if __name__ == '__main__':
|
||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||
|
||||
# print(EngineManager.newest_engine_version('blender', 'macos', 'arm64'))
|
||||
EngineManager.delete_engine_download('blender', '3.2.1', 'windows', 'x64')
|
||||
EngineManager.delete_engine_download('blender', '3.2.1', 'macos', 'a')
|
||||
|
||||
Reference in New Issue
Block a user