Advanced Configuration - darkwob/youtube-mp3-converter GitHub Wiki
Advanced Configuration
Audio Formats
Supported audio formats and their configurations:
use Darkwob\YoutubeMp3Converter\Converter\Options\ConverterOptions;
$options = new ConverterOptions();
// MP3 Format (Default)
$options->setAudioFormat('mp3')
->setAudioQuality(0); // 0-9 scale (0 = highest quality)
// AAC Format
$options->setAudioFormat('aac')
->setAudioQuality(2); // 0-9 scale
// WAV Format
$options->setAudioFormat('wav')
->setAudioQuality(0); // Always highest quality for WAV
// FLAC Format
$options->setAudioFormat('flac')
->setAudioQuality(0); // Lossless compression
// M4A Format
$options->setAudioFormat('m4a')
->setAudioQuality(1); // 0-9 scale
// Opus Format
$options->setAudioFormat('opus')
->setAudioQuality(3); // Good quality/size balance
// Vorbis Format
$options->setAudioFormat('vorbis')
->setAudioQuality(2); // OGG Vorbis
Metadata Options
Configure metadata and thumbnails:
$options = new ConverterOptions();
$options
->setMetadata([ // Set custom metadata
'artist' => 'Artist Name',
'album' => 'Album Name',
'genre' => 'Music',
'date' => '2024'
])
->enableThumbnail(true); // Embed thumbnail as album art
Output Templates
Customize output filenames:
$options = new ConverterOptions();
// Default template
$options->setOutputTemplate('%(title)s.%(ext)s');
// With video ID
$options->setOutputTemplate('%(title)s-%(id)s.%(ext)s');
// With date
$options->setOutputTemplate('%(upload_date)s-%(title)s.%(ext)s');
// Custom directory structure
$options->setOutputTemplate('%(uploader)s/%(title)s.%(ext)s');
Network Settings
Configure network-related options:
$options = new ConverterOptions();
$options
->setProxy('socks5://127.0.0.1:1080') // Use proxy
->setRateLimit(500); // Download speed limit (KB/s)
// Note: Other network options may depend on yt-dlp configuration
Redis Configuration
Configure Redis for progress tracking:
use Darkwob\YoutubeMp3Converter\Progress\RedisProgress;
// Using default Redis connection
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
$progress = new RedisProgress($redis);
// Using Predis client
$predis = new \Predis\Client([
'scheme' => 'tcp',
'host' => '127.0.0.1',
'port' => 6379,
'password' => 'your-password',
'database' => 0
]);
$progress = new RedisProgress($predis);
// Configure TTL (Time To Live)
$progress = new RedisProgress($redis, 7200); // 2 hours
Playlist Options
Configure playlist processing:
$options = new ConverterOptions();
$options->setPlaylistItems('1,3,5-7'); // Process specific items
// Note: Current version focuses on single video processing
// Playlist support may be added in future versions
Date Filtering
Filter videos by date range:
$options = new ConverterOptions();
$options
->setDateAfter('20240101') // Videos after this date (YYYYMMDD)
->setDateBefore('20241231'); // Videos before this date (YYYYMMDD)
File Size Limits
Set file size constraints:
$options = new ConverterOptions();
$options->setFileSizeLimit('100M'); // Maximum file size (50M, 100M, 1G, etc.)
Windows-Specific Configuration
Configure Windows-specific options:
use Darkwob\YoutubeMp3Converter\Converter\Util\DirectoryManager;
use Darkwob\YoutubeMp3Converter\Converter\Util\ProcessManager;
use Darkwob\YoutubeMp3Converter\Converter\Util\PlatformDetector;
// Create directory manager with Windows path handling
$dirManager = new DirectoryManager(
'C:\\Users\\Username\\Music\\Downloads', // Output directory
'C:\\Users\\Username\\AppData\\Local\\Temp' // Temp directory
);
// Ensure directories exist with proper permissions
try {
$dirManager->ensureDirectoriesExist();
echo "Directories created and validated\n";
} catch (DirectoryException $e) {
echo "Directory error: " . $e->getMessage() . "\n";
}
// Create process manager with Windows environment setup
$processManager = new ProcessManager('C:\\Path\\To\\Binaries');
// Check if running on Windows
if (PlatformDetector::isWindows()) {
// Windows-specific setup
echo "Running on Windows - using platform-specific paths\n";
// Create temporary directory with Windows compatibility
$tempDir = $dirManager->createTempDirectory('ytdl_win_');
echo "Created Windows-compatible temp directory: {$tempDir}\n";
// Clean up when done
$dirManager->cleanupTempFiles($tempDir);
}