Accessing Preferences
The Preferences panel is typically accessed through the application menu (Edit > Preferences) or from the main interface. The panel implements auto-loading of existing configuration on startup (PreferencesPanel.java:43-48):
Configuration File
All preferences are stored in a localconfig.txt file in the application directory.
Config File Format
The configuration file uses a simple key-value format (PreferencesPanel.java:127-150):
key:"value"
The configuration file is automatically loaded when the Preferences panel initializes.
yt-dlp Location
The yt-dlp location setting specifies the path to the yt-dlp executable.Setting yt-dlp Path
Click 'Change location'
Click the “Change location” button under the “yt-dlp location:” label (
PreferencesPanel.java:196-201).Select executable
A file chooser dialog opens filtered for executable files (
PreferencesPanel.java:328-342):Path displayed
The selected path is displayed in the label (
lblYtdlpCurrentPath).Example: C:\\Tools\\yt-dlp.exeCurrent Path Display
The current yt-dlp path is displayed next to “yt-dlp location:” (PreferencesPanel.java:217):
- Default: “Not configured”
- After configuration: Full path to the executable
Download Directory
The download directory setting determines where media files are saved.Configuring Download Directory
Click 'Change Download directory'
Click the “Change Download directory” button (
PreferencesPanel.java:224-228).Path displayed
The selected path is displayed in
lblDownloadDirectoryPath.Example: C:\\Users\\YourName\\DownloadsDefault Download Directory
If no download directory is configured (PreferencesPanel.java:222):
- Label displays: “Default (where project is stored)”
- Files download to the application’s working directory (
user.dir)
Download Directory in config.txt
When saved, the download directory is written toconfig.txt (PreferencesPanel.java:360-362):
Speed Limiter Controls
The speed limiter allows you to cap download speeds to avoid saturating your network connection.Speed Limiter Components
The speed limiter UI consists of three synchronized controls (PreferencesPanel.java:66-123):
- Text field (
txtLimiter) - Displays current speed limit in “KB/s” - Slider (
sliderLimiter) - Visual control from 1 to 100,000 KB/s - Toggle button (
toggleLimiter) - Enables/disables the limiter
Enabling Speed Limiting
Click 'Limiter' toggle
Click the “Limiter” toggle button to enable speed limiting (
PreferencesPanel.java:391-396).When enabled:- The slider becomes active
- The text field becomes editable
limiterEnabledis set totrue
Adjust speed limit
Set your desired speed limit using either:Slider: Drag the slider to set the limit visuallyText field: Type a number (e.g., “1000”) and it will automatically format to “1000 KB/s”
Speed Limit Range
The speed limiter supports values from 1 KB/s to 100,000 KB/s (PreferencesPanel.java:71-73):
Slider and Text Field Synchronization
The slider and text field are kept in sync using listeners: Slider updates text (PreferencesPanel.java:79-87):
PreferencesPanel.java:89-122):
The text field automatically strips non-numeric characters, so you can type “1000 KB/s” or just “1000” and both will work.
Speed Limit Implementation
When enabled, the speed limit is passed to yt-dlp using the--limit-rate flag:
MainPanel.java:504-512):
M3U Playlist Settings
The M3U playlist option automatically creates.m3u playlist files for your downloads.
Enabling M3U Creation
Check 'Create m3u for playlists'
Check the “Create m3u for playlists” radio button (
PreferencesPanel.java:235-240).M3U File Format
The generated M3U file follows the Extended M3U format (MainPanel.java:301-314):
Audio vs Video Filtering
M3U playlists are intelligently filtered based on download mode:- Audio-only downloads: Only includes
.mp3,.m4a,.opus,.wav,.flac,.aac - Video downloads: Only includes
.mp4,.webm,.mkv,.avi,.flv,.mov
Saving Configuration
The “Save” button persists your yt-dlp path and download directory toconfig.txt (PreferencesPanel.java:345-369).
Save Process
Validation
The application validates that yt-dlp path is configured (
PreferencesPanel.java:350-353):Settings That Don’t Require Saving
These settings are stored in memory and don’t need to be saved:- Speed limiter enabled/disabled
- Speed limit value
- M3U playlist creation
- FFmpeg path (if manually configured in config.txt)
FFmpeg Path (Manual)
While not exposed in the UI, you can manually configure the FFmpeg path inconfig.txt (PreferencesPanel.java:141-145):
FFmpeg auto-detection is attempted first. The manual
ffmpegPath setting is only used as a fallback.Back Button
The “Back” button returns to the previous panel without saving changes (PreferencesPanel.java:319-324).
Keyboard Shortcuts
- ESC - Go back to previous panel (
PreferencesPanel.java:51-64)
Preferences API
Other panels can access preference values through public getter methods (PreferencesPanel.java:153-167):
Configuration Loading
Configuration is automatically loaded when the Preferences panel is created (PreferencesPanel.java:127-151):
Troubleshooting Configuration
Configuration not persisting
Configuration not persisting
Cause: Changes not saved before closing PreferencesSolution: Always click the Save button before leaving Preferences
Downloads fail with 'yt-dlp not configured'
Downloads fail with 'yt-dlp not configured'
Cause: yt-dlp path not set or config.txt not savedSolution:
- Open Preferences
- Click “Change location” and select yt-dlp.exe
- Click Save
- Verify config.txt exists in application directory
Speed limiter not working
Speed limiter not working
Cause: Limiter toggle is offSolution: Click the Limiter toggle button to enable it (it should appear pressed/selected)
FFmpeg not detected
FFmpeg not detected
Cause: FFmpeg not in yt-dlp directory and not manually configuredSolution:
- Place
ffmpeg.exeandffprobe.exein the same folder as yt-dlp - OR manually add
ffmpegPath:"C:\\path\\to\\ffmpeg"to config.txt
Example Configuration
Here’s a complete exampleconfig.txt file:
- Uses yt-dlp from
C:\Tools\yt-dlp.exe - Downloads to
D:\Media\Downloads - Uses FFmpeg from
C:\Tools\ffmpeg\bin
Next Steps
Start Downloading
Configure your preferences and start downloading media
Audio Extraction
Learn about FFmpeg integration for audio extraction

