mirror of
https://github.com/pacnpal/Pac-cogs.git
synced 2025-12-20 02:41:06 -05:00
Modified the initialization process to start queue processing as a non-blocking background task Added proper cleanup of the queue task during cog unload Optimized the queue manager's process_queue method to: Use shorter sleep times (0.1s) when queue is empty Persist state less frequently (every 60s) Better handle task switching with asyncio.sleep(0) Improve error recovery with brief pauses These changes resolve both the initial "process_video missing" error and the subsequent "initialization timeout" error by: Properly implementing the missing method Making queue processing non-blocking during initialization Ensuring proper cleanup of all tasks Optimizing the queue processing loop for better performance
VideoArchiver Cog for Red-DiscordBot
A powerful video archiving cog that automatically downloads and reposts videos from monitored channels. Features hardware-accelerated compression, multi-video processing, and support for multiple video platforms.
Features
-
Automatic Video Processing
- Monitors specified channels for videos
- Supports multiple video platforms through yt-dlp
- Hardware-accelerated compression (NVIDIA, AMD, Intel, ARM)
- Configurable video quality and format
- Automatic file size optimization for Discord limits
- Default maximum file size: 8MB
- Default video format: MP4
- Default video quality: High
-
Video Archive Database
- Track and store archived video information
- Query archived videos by original URL
- Get Discord links for previously archived videos
- Optional database functionality (disabled by default)
- Automatic database management and cleanup
- Persistent video history tracking
-
Modular Queue System
- Priority-based processing with state persistence
- Efficient resource management and monitoring
- Real-time performance metrics and health checks
- Automatic cleanup and memory optimization
- Default concurrent downloads: 2 (configurable 1-5)
- Maximum queue size: 1000 items
- Automatic retry on failures (3 attempts)
- Queue state persistence across bot restarts
-
Progress Tracking
- Real-time download progress monitoring
- Compression progress tracking
- Hardware acceleration statistics
- Detailed error tracking and analysis
- Memory usage monitoring
- Success rate calculations
- Automatic cleanup of temporary files
-
Channel Management
- Flexible channel monitoring (specific channels or all)
- Separate archive, notification, and log channels
- Customizable message templates
- Configurable message duration (default: 30 seconds)
-
Access Control
- Role-based permissions
- Site-specific enabling/disabling
- Admin-only configuration commands
- Per-guild settings
Installation
- Install the cog:
[p]repo add Pac-cogs https://github.com/pacnpal/Pac-cogs
[p]cog install Pac-cogs videoarchiver
- Load the cog:
[p]load videoarchiver
Commands
All commands support both prefix and slash command syntax:
Core Video Archiver Commands (va_)
va_settings: Show current video archiver settingsva_format <mp4|webm>: Set video formatva_quality <144-4320>: Set maximum video quality (in pixels)va_maxsize <1-100>: Set maximum file size (in MB)va_concurrent <1-5>: Set number of concurrent downloadsva_toggledelete: Toggle deletion of local files after repostingva_duration <0-720>: Set message duration in hours (0 for permanent)va_template <template>: Set message template using {author}, {url}, {original_message}va_update: Update yt-dlp to latest versionva_toggleupdates: Toggle update notifications
Archiver Management Commands (archiver_)
archiver enable: Enable video archiving in the serverarchiver disable: Disable video archiving in the serverarchiver setchannel <channel>: Set the archive channelarchiver setlog <channel>: Set the log channelarchiver addchannel <channel>: Add a channel to monitorarchiver removechannel <channel>: Remove a channel from monitoring
Database Management Commands (archivedb_)
archivedb enable: Enable the video archive databasearchivedb disable: Disable the video archive databasecheckarchived <url>: Check if a video URL has been archived
Queue Management Commands (vaq_)
vaq_status: Show current queue status with basic metricsvaq_metrics: Show detailed queue performance metricsvaq_clear: Clear the video processing queue
Channel Configuration Commands (vac_)
vac_archive <channel>: Set the archive channelvac_notify <channel>: Set the notification channelvac_log <channel>: Set the log channel for errorsvac_monitor [channel]: Add channel to monitor (empty for all channels)vac_unmonitor <channel>: Remove channel from monitoring
Role Management Commands (var_)
var_add [role]: Add allowed role (empty for @everyone)var_remove <role>: Remove allowed rolevar_list: List allowed roles
Site Management Commands (vas_)
vas_enable [sites...]: Enable specific sites (empty for all)vas_list: List available and enabled sites
Default Settings
{
"enabled": False, # Video archiving disabled by default
"archive_channel": None, # Must be set before use
"log_channel": None, # Optional error logging channel
"enabled_channels": [], # Channels to monitor
"video_format": "mp4", # Default video format
"video_quality": "high", # Default video quality
"max_file_size": 8, # Maximum file size in MB
"message_duration": 30, # Message duration in seconds
"message_template": "{author} archived a video from {channel}",
"concurrent_downloads": 2, # Number of concurrent downloads
"enabled_sites": None, # None means all sites enabled
"use_database": False # Database tracking disabled by default
}
Message Templates
You can customize archive messages using these variables:
{author}: Original message author{url}: Original video URL{original_message}: Link to original message{channel}: Original channel name
Example template:
📥 Video archived from {author}
Original: {url}
Source: {original_message}
Channel: {channel}
Site Support
The cog supports all sites compatible with yt-dlp. Use vas_list to see available sites and currently enabled ones.
Performance & Limitations
- Hardware acceleration automatically detected and utilized
- Configurable concurrent downloads (1-5)
- Maximum queue size: 1000 items
- Maximum file size: 8MB by default (configurable up to Discord's limit)
- Maximum video quality: 4320p (8K)
- Automatic retry on failures (3 attempts with 5-second delay)
- Queue cleanup interval: 30 minutes
- Maximum history age: 24 hours
- Unload timeout: 30 seconds
- Cleanup timeout: 15 seconds
Error Handling
- Comprehensive error logging
- Dedicated log channel for issues
- Automatic retry mechanism
- Queue persistence across restarts
- Detailed error messages
- Error type tracking and analysis
- Automatic recovery procedures
- Force cleanup on timeout
Support
If you encounter any issues or have questions, please open an issue on the GitHub repository.