mirror of
https://github.com/pacnpal/Pac-cogs.git
synced 2025-12-20 10:51:05 -05:00
Architecture Changes:
Moved FFmpeg manager to cog level instead of per-guild Created single shared FFmpeg manager instance in VideoArchiver class Passed shared FFmpeg manager to VideoProcessor and VideoDownloader Removed redundant FFmpeg downloads for each guild Component Management: Updated VideoArchiver to initialize one FFmpeg manager Modified guild components to remove FFmpeg manager Updated component cleanup to handle shared resources Improved resource initialization order Resource Efficiency: Eliminated duplicate FFmpeg binary downloads Reduced disk space usage Improved initialization time Better resource sharing across guilds Error Handling: Added proper cleanup for shared resources Improved error propagation Enhanced initialization error handling Better component lifecycle management
This commit is contained in:
@@ -60,6 +60,10 @@ class VideoArchiver(commands.Cog):
|
||||
# Clean existing downloads
|
||||
cleanup_downloads(str(self.download_path))
|
||||
|
||||
# Initialize shared FFmpeg manager
|
||||
self.ffmpeg_mgr = FFmpegManager()
|
||||
logger.info("Initialized shared FFmpeg manager")
|
||||
|
||||
# Initialize components dict first
|
||||
self.components: Dict[int, Dict[str, Any]] = {}
|
||||
|
||||
@@ -87,12 +91,13 @@ class VideoArchiver(commands.Cog):
|
||||
# Initialize update checker
|
||||
self.update_checker = UpdateChecker(self.bot, self.config_manager)
|
||||
|
||||
# Initialize processor with queue manager
|
||||
# Initialize processor with queue manager and shared FFmpeg manager
|
||||
self.processor = VideoProcessor(
|
||||
self.bot,
|
||||
self.config_manager,
|
||||
self.components,
|
||||
queue_manager=self.queue_manager,
|
||||
ffmpeg_mgr=self.ffmpeg_mgr, # Pass shared FFmpeg manager
|
||||
)
|
||||
|
||||
# Start update checker
|
||||
@@ -206,15 +211,9 @@ class VideoArchiver(commands.Cog):
|
||||
await old_components["message_manager"].cancel_all_deletions()
|
||||
if "downloader" in old_components:
|
||||
old_components["downloader"] = None
|
||||
if "ffmpeg_mgr" in old_components:
|
||||
old_components["ffmpeg_mgr"] = None
|
||||
|
||||
# Initialize FFmpeg manager first
|
||||
ffmpeg_mgr = FFmpegManager()
|
||||
|
||||
# Initialize new components with validated settings
|
||||
self.components[guild_id] = {
|
||||
"ffmpeg_mgr": ffmpeg_mgr, # Add FFmpeg manager to components
|
||||
"downloader": VideoDownloader(
|
||||
str(self.download_path),
|
||||
settings["video_format"],
|
||||
@@ -222,7 +221,7 @@ class VideoArchiver(commands.Cog):
|
||||
settings["max_file_size"],
|
||||
settings["enabled_sites"] if settings["enabled_sites"] else None,
|
||||
settings["concurrent_downloads"],
|
||||
ffmpeg_mgr=ffmpeg_mgr, # Pass FFmpeg manager to VideoDownloader
|
||||
ffmpeg_mgr=self.ffmpeg_mgr, # Use shared FFmpeg manager
|
||||
),
|
||||
"message_manager": MessageManager(
|
||||
settings["message_duration"], settings["message_template"]
|
||||
|
||||
Reference in New Issue
Block a user