Commit Graph

50 Commits

Author SHA1 Message Date
pixeebot[bot]
9deaa857bd Replace dataclass Mutable Default Values with Call to field 2025-02-05 03:06:36 +00:00
pacnpal
df9099f2c8 diabolical 2024-11-18 05:17:37 +00:00
pacnpal
fc06e54d8a fixed imports again 2024-11-18 01:21:40 +00:00
pacnpal
d03e8dc8e8 ch ch ch changes 2024-11-18 01:01:12 +00:00
pacnpal
e296f2440c ok 2024-11-18 00:57:19 +00:00
pacnpal
e2d9dfad8c k 2024-11-18 00:55:15 +00:00
pacnpal
7276e37cab y 2024-11-18 00:51:55 +00:00
pacnpal
afe0e96b14 Adding queue.types to the module reload list in the main init.py
Properly exposing QueueProcessor in processor/init.py
Updating queue/init.py to import and expose all necessary types (QueuePriority, ProcessingMetrics)
Ensuring consistent import patterns across the codebase
The changes maintain the cog's architecture while fixing the import issues:

Module reloading system now includes all dependencies
Package hierarchy properly exposes all needed types
Import structure is consistent across components
All necessary types and models are accessible
2024-11-17 23:51:11 +00:00
pacnpal
6647c93a44 fix(processor): add fallback to absolute imports in reactions.py 2024-11-17 23:06:22 +00:00
pacnpal
c944d4d2e1 fix(processor): add fallback to absolute imports in status_display.py 2024-11-17 22:59:02 +00:00
pacnpal
d6f6800399 fix(processor): add fallback to absolute imports in reactions.py 2024-11-17 22:57:04 +00:00
pacnpal
d1cc32a1da fix(processor): add fallback to absolute imports in message_validator.py 2024-11-17 22:55:57 +00:00
pacnpal
d9ce39e38b fix(processor): add fallback to absolute imports in core.py 2024-11-17 22:53:40 +00:00
pacnpal
643763db0a fix(processor): add fallback to absolute imports in __init__.py 2024-11-17 22:52:16 +00:00
pacnpal
1c1efff0cf fix(processor): add fallback to absolute imports in cleanup_manager 2024-11-17 22:06:16 +00:00
pacnpal
13c0cbd9d8 fix(processor): add fallback to absolute imports in queue_handler 2024-11-17 22:03:55 +00:00
pacnpal
1ddc4002fa fix(processor): add fallback to absolute imports in message_handler 2024-11-17 21:58:25 +00:00
pacnpal
ca5571750f fix(processor): add fallback to absolute imports in queue_processor 2024-11-17 21:56:25 +00:00
pacnpal
91e34a6639 fix(processor): correct relative import path for progress_tracker 2024-11-17 21:47:26 +00:00
pacnpal
b8f29341ce fixes 2024-11-17 21:33:12 +00:00
pacnpal
439cf5ff07 Using TYPE_CHECKING for type hints
Moving runtime imports to appropriate locations
Using string literal type annotations
Importing shared utilities through the utils package
2024-11-17 21:24:49 +00:00
pacnpal
e997c6f6b9 Created a proper dependency hierarchy:
core/types.py - Contains shared interfaces and types
queue/types.py - Contains queue-specific types
Components now depend on interfaces rather than concrete implementations
Broke cyclic dependencies:

Removed direct imports between queue_processor.py and manager.py
Removed circular dependencies between core and processor modules
Components now communicate through well-defined interfaces
Improved architecture:

Clear separation of concerns
Better dependency management
More maintainable and testable code
Proper use of dependency injection
2024-11-17 21:11:00 +00:00
pacnpal
063258513e Creating a shared types module (types.py) for common types and interfaces
Updating queue_processor.py to use the shared types
Updating manager.py to use the correct imports and shared types
The cyclic dependency has been resolved by:

Moving shared types to a separate module
Having queue_processor.py only import from shared modules
Having manager.py use the QueueProcessor from queue/processor.py
2024-11-17 20:58:14 +00:00
pacnpal
1fdabee127 Fix: Update processor/__init__.py to use relative imports to resolve ModuleNotFoundError 2024-11-17 20:20:39 +00:00
pacnpal
97dd6d72f2 loads of import fixes 2024-11-17 19:47:18 +00:00
pacnpal
62c97f0b01 Converted all 'from videoarchiver.' imports to relative imports 2024-11-17 16:05:12 +00:00
pacnpal
c830be2841 videoarchiver/config/validation_manager.py
videoarchiver/config/role_manager.py
videoarchiver/database/connection_manager.py
videoarchiver/database/schema_manager.py
videoarchiver/queue/cleaners/tracking_cleaner.py
videoarchiver/exceptions.py
videoarchiver/processor.py
videoarchiver/commands.py
videoarchiver/update_checker.py
videoarchiver/utils/path_manager.py
videoarchiver/utils/file_ops.py
videoarchiver/processor/message_validator.py
videoarchiver/utils/download_manager.py
2024-11-17 06:12:41 +00:00
pacnpal
973714e281 fix 2024-11-17 03:15:35 +00:00
pacnpal
a5c3101d78 1 2024-11-17 03:12:47 +00:00
pacnpal
4fe45458bf In the core module:
Updated base.py to use absolute imports
Updated cleanup.py to use absolute imports
Updated events.py to use absolute imports
Updated error_handler.py to use absolute imports
Updated guild.py to use absolute imports
Updated initialization.py to use absolute imports
Updated lifecycle.py to use absolute imports
Updated response_handler.py to use absolute imports
Updated settings.py to use absolute imports
In the core/commands module:
Updated archiver_commands.py to use absolute imports
Updated database_commands.py to use absolute imports
Updated settings_commands.py to use absolute imports
Left init.py unchanged as its relative imports are appropriate
In the processor module:
Updated core.py to use absolute imports
Updated processor/init.py to use absolute imports
Updated queue_handler.py to use absolute imports
Updated queue_processor.py to use absolute imports
Updated status_display.py to use absolute imports
Updated cleanup_manager.py to use absolute imports
2024-11-17 02:58:53 +00:00
pacnpal
0d67bcc4a7 lol 2024-11-17 02:10:22 +00:00
pacnpal
247381fc8a Changing the relative import in core.py to use an absolute import path:
from videoarchiver.utils import progress_tracker
Updated the main init.py to properly handle module reloading:
Added 'videoarchiver.processor' and 'videoarchiver.processor.core' to modules_to_reload
Added explicit import and reload of the processor module
These changes ensure that:

The progress_tracker is properly imported from the utils package
All necessary modules are reloaded during initialization
Circular imports are avoided
The package structure maintains proper dependency flow
2024-11-17 01:29:00 +00:00
pacnpal
b10722f05b Moved progress_tracker.py to utils/ as the single source of truth
Implemented proper singleton pattern in ProgressTracker class
Created shared instance in utils/init.py
Updated all files to use relative imports correctly
Removed duplicate progress_tracker.py from processor/
Fixed circular imports by removing ProgressTracker from processor.py re-exports
2024-11-17 01:24:03 +00:00
pacnpal
98ed3dfc6a lol 2024-11-17 01:17:44 +00:00
pacnpal
2557978cf3 lol 2024-11-17 01:03:45 +00:00
pacnpal
d2576df988 ok 2024-11-17 00:25:34 +00:00
pacnpal
c9e24436bb ok 2024-11-17 00:23:15 +00:00
pacnpal
dac21f2fcd fixed 2024-11-16 22:32:08 +00:00
pacnpal
dd467df5fc Created a new constants.py file to store the REACTIONS dictionary
Updated all files to import REACTIONS from constants.py instead of reactions.py:
queue_processor.py
message_handler.py
reactions.py (now only contains reaction handling functions)
events.py (now imports REACTIONS from constants.py and handle_archived_reaction from reactions.py)
core.py
queue_handler.py
processor/init.py
2024-11-16 18:12:35 +00:00
pacnpal
08d5dc56cf Fixed role_manager.py typing issues by adding missing imports (Optional, Any)
Added process_queue method to EnhancedVideoQueueManager and updated its initialization
Updated component_manager.py to use EnhancedVideoQueueManager correctly
Fixed circular imports in the core module by:
Moving initialization logic to lifecycle.py
Making initialization.py provide thin wrappers that delegate to lifecycle.py
Ensuring proper import order in base.py
Verified all module init.py files are properly exposing their components:
core/init.py exposes VideoArchiver
queue/init.py exposes EnhancedVideoQueueManager and dependencies
processor/init.py exposes VideoProcessor and related components
commands/init.py exposes command setup functions
The import chain is now clean:

base.py imports from lifecycle.py
lifecycle.py contains all initialization logic
initialization.py delegates to lifecycle.py
No circular dependencies
All components are properly exposed through their respective init.py files
2024-11-16 17:13:11 +00:00
pacnpal
a4ca6e8ea6 Core Systems:
Component-based architecture with lifecycle management
Enhanced error handling and recovery mechanisms
Comprehensive state management and tracking
Event-driven architecture with monitoring
Queue Management:

Multiple processing strategies for different scenarios
Advanced state management with recovery
Comprehensive metrics and health monitoring
Sophisticated cleanup system with multiple strategies
Processing Pipeline:

Enhanced message handling with validation
Improved URL extraction and processing
Better queue management and monitoring
Advanced cleanup mechanisms
Overall Benefits:

Better code organization and maintainability
Improved error handling and recovery
Enhanced monitoring and reporting
More robust and reliable system
2024-11-16 05:01:29 +00:00
pacnpal
609aecdc4e Updated default settings (video archiving enabled by default)
New database functionality and commands
Additional video format support (MKV)
Message duration now in hours (0-168)
Enhanced error handling and logging
Queue persistence and management improvements
Hardware acceleration updates
More detailed command descriptions
Improved performance & limitations documentation
2024-11-16 01:22:37 +00:00
pacnpal
8204df3599 Added process_video method to VideoProcessor class
Method delegates to queue_handler.process_video
Maintains proper separation of concerns between components
Preserves the existing video processing logic
2024-11-15 22:42:36 +00:00
pacnpal
512dd1ff88 Eliminating duplicate queue processing that was causing race conditions
Adding proper processing state tracking and timing
Implementing more aggressive monitoring (1-minute intervals)
Adding activity tracking to detect and recover from hung states
Improving error handling and logging throughout the system
Reducing timeouts and deadlock thresholds for faster recovery
2024-11-15 22:38:36 +00:00
pacnpal
73364e7438 ok 2024-11-15 22:27:29 +00:00
pacnpal
5fedd97b61 yeah 2024-11-15 22:02:19 +00:00
pacnpal
42b3ceb314 Created /core module with specialized files:
base.py: Main cog class and initialization logic
cleanup.py: Resource cleanup functionality
commands.py: Command handlers
events.py: Event listeners
guild.py: Guild component management
init.py: Module exports
Improved code organization by:

Separating concerns into focused modules
Maintaining clear dependencies between modules
Keeping related functionality together
Making the codebase more maintainable
Preserved all existing functionality while making the code more modular and easier to maintain.
2024-11-15 20:01:45 +00:00
pacnpal
dae8bbb6b4 Adding the 'db' parameter to the VideoProcessor class initialization
Properly storing and handling the db instance
Ensuring the db is passed to the queue_handler when available
The QueueHandler class was already properly set up to handle the db parameter, so no changes were needed there. The database integration should now work correctly for:

Checking if videos are already archived
Adding newly archived videos to the database
Providing archived video information to users
2024-11-15 19:22:52 +00:00
pacnpal
2e2951e714 Fixed the "cannot import name '_download_progress'" error by:
Adding a shared progress_tracker instance in processor/init.py
Exposing public functions that wrap the ProgressTracker methods
Removing direct access to private _download_progress variable
Fixed the "'QueueItem' object has no attribute 'retry_count'" error by:

Updating the QueueItem class in queue/models.py to use retry_count instead of retries
This matches the field name used in the queue manager's implementation
2024-11-15 19:19:46 +00:00
pacnpal
971d52bd00 Separation of Concerns:
Core processing logic in VideoProcessor class
Dedicated message handling in MessageHandler
Queue operations in QueueHandler
Progress tracking in ProgressTracker
Reaction management in reactions.py
Improved Maintainability:
Each component has a single responsibility
Easier to test individual components
Better code organization and readability
Reduced file sizes for better version control
Better Resource Management:
Centralized progress tracking
Isolated queue operations
Cleaner cleanup processes
Optimized Imports:
Components can be imported individually as needed
Main processor.py provides backward compatibility
Clear module interface through init.py
2024-11-15 18:58:05 +00:00