-
Notifications
You must be signed in to change notification settings - Fork 0
Features
Comprehensive guide to MeedyaDL's features. For troubleshooting, see Troubleshooting.
MeedyaDL can automatically download additional format versions alongside your primary audio download. This is configured in Settings > Quality > Companion Downloads.
Six companion modes are available:
| Mode | Behaviour |
|---|---|
| Disabled | No companions. Only the primary format is downloaded. |
| Atmos → Lossless (default) | When downloading Dolby Atmos, also downloads ALAC (lossless). |
| Atmos → Lossless + Lossy | Atmos → ALAC + AAC; ALAC → AAC. Maximum compatibility. |
| Specialist → Lossy | Atmos or ALAC → AAC companion for universal playback. |
| Atmos → All Formats | Atmos → AC3 (Dolby Digital) + ALAC + AAC. 4 files per track. |
| Custom | Pick exactly which codecs to download via multi-select checkboxes. |
File naming: Specialist formats get a suffix (e.g., [Dolby Atmos], [Lossless], [Dolby Digital]). The most universally compatible companion uses a clean filename.
Progress tracking: Companion downloads stream their output in real time to the Activity Log and progress bar. The queue-level bar advances after the primary download completes (partial credit), while the per-item bar shows companion speed/ETA. Processing labels show the current activity (e.g., "Companion: ALAC 14/28").
When enabled, MeedyaDL automatically downloads the music video for each track (if one exists on Apple Music) alongside the audio files.
Requirements:
- MusicKit credentials must be configured in Settings > Cover Art > Animated Artwork (Team ID, Key ID, private key)
- Enable the toggle in Settings > Quality > Video Quality > Music Video Companions
How it works:
- After audio download completes, the app queries the Apple Music API for each track's music video relationship
- Tracks with music videos get a companion GAMDL download using your video quality settings
- Duplicate music videos (same video linked from multiple tracks) are automatically deduplicated
- Results are logged in the Activity Log
Progress visibility: Companion downloads stream their progress in real time — the global progress bar shows speed, ETA, and percentage during companion downloads. The queue item stays in "Processing" state until all companions and enrichment finish. Desktop notifications are deferred until all background work is complete.
When the preferred audio codec is unavailable, MeedyaDL automatically tries the next codec in the fallback chain:
ALAC → Atmos → AC3 → AAC Binaural → AAC → AAC Legacy
For GAMDL >= 2.9.1, the native --song-codec-priority flag passes the entire chain in one process. If that fails, MeedyaDL retries each codec individually as a safety net.
Configure in Settings > Quality > Video Quality:
- Resolution: 2160p (4K) → 240p, with automatic fallback to the next lower resolution
- Codec Priority: H.265 (HEVC) and H.264 (AVC), reorderable
- Remux Format: M4V, MP4, or MKV container
When downloading from an artist URL, select which content types to include via multi-select checkboxes in Settings > Quality:
- Main Albums, Compilation Albums, Live Albums, Singles & EPs, All Albums, Top Songs, Music Videos
MeedyaDL creates a separate queue item for each selected content type.
The Settings > Templates tab uses a visual chip/pill builder for creating file and folder naming templates. Instead of typing GAMDL format strings manually, you can:
-
Click
+to add variables (Artist, Album, Track #, etc.) or separators (/, -, space) -
Click
×on any chip to remove it - Toggle "Edit Raw" for direct text editing (power users)
- See a live preview with sample metadata below the template
Available template variables: {artist}, {album_artist}, {album}, {title}, {track:02d}, {disc}, {year}, {genre}, {playlist_artist}, {playlist_title}.
When Enhanced LRC is enabled (default: on), MeedyaDL converts Apple Music's TTML lyrics to Enhanced LRC format with word-level synchronized timestamps.
How it works:
- GAMDL downloads TTML lyrics (forced as primary format when enhanced LRC is enabled)
- MeedyaDL parses the TTML XML, extracting
<span>word timestamps - Generates Enhanced LRC with inline
<mm:ss.xx>word timing - Saves as
.lrcsidecar file AND embeds in the M4A/M4V metadata
Songs without word-level timing gracefully fall back to standard line-level LRC.
Companion formats: When Enhanced LRC is enabled, you can still select LRC and SRT as companion formats. TTML is locked as primary, but companions download alongside for maximum compatibility.
When the Lyrics Format Fallback toggle is enabled (default: on), MeedyaDL automatically retries with alternative formats if the primary lyrics format doesn't produce sidecar files for all tracks:
- Audio (.m4a): TTML → LRC → SRT
- Video (.m4v/.mp4): TTML → SRT → LRC
Each fallback uses --synced-lyrics-only to avoid re-downloading media.
MeedyaDL can generate multiple subtitle/caption formats from the TTML source downloaded from Apple Music. Configure in Settings > Lyrics.
| Format | Source | Styling | Setting | Default |
|---|---|---|---|---|
| Enhanced LRC | TTML | Word-by-word sync timestamps | enhanced_lrc |
On |
| WebVTT (.vtt) | TTML/SRT/LRC | Plain text | generate_webvtt |
Off |
| Rich SRT (.srt) | TTML/WebVTT | Bold, italic, underline, colours | generate_rich_srt |
On |
| ASS (.ass) | TTML/WebVTT | Full styling + positioning + colours (BGR) | generate_ass |
Off |
| Subtitle embedding | SRT/WebVTT | Freeform atoms in MP4 container | embed_subtitles |
Off |
Rich SRT and ASS both support dual-source priority: TTML first (richest), then WebVTT. This enables future services (YouTube, BBC iPlayer) that provide WebVTT to produce styled output.
When enabled (Settings > Quality), MeedyaDL uses the MusicBrainz database to discover music videos as a fallback when the Apple Music API returns no results. No credentials required.
3-tier priority chain:
- Apple Music URL search in MusicBrainz external links (highest fidelity)
- ISRC code search (standard recording identifier)
- AcoustID recording ID direct lookup (from fingerprinting)
Also discovers cross-platform URLs (YouTube, Spotify, Deezer, Tidal, SoundCloud, Bandcamp) for future multi-service support.
After each download, a 12-stage enrichment pipeline runs automatically:
-
Codec & source tags + Apple Music API metadata (always-on) — 30+ freeform atoms per file including ISRC, UPC, genre, advisory, artist IDs, record label, copyright, release dates, Apple Digital Master, composer, editorial notes, duration, and more. Written in dual namespaces (
com.apple.iTunes+MeedyaMeta) with industry-standard names (LABEL,COPYRIGHT,COMPILATION,TOTALTRACKS). Tag definitions driven bytags.toml— adding new tags requires only editing the TOML file. - Enhanced LRC — TTML to word-by-word LRC conversion (opt-in, default on) 2b. Lyrics format fallback — retries with LRC/SRT if TTML didn't cover all tracks (opt-in, default on) 2c. WebVTT generation — converts TTML/SRT/LRC to .vtt (opt-in) 2d. Rich SRT generation — TTML/WebVTT to styled SRT (opt-in, default on) 2e. Subtitle embedding — embeds SRT/WebVTT in MP4 containers (opt-in) 2f. ASS generation — TTML/WebVTT to styled ASS with colours and positioning (opt-in)
- Animated artwork — Motion cover art download via MusicKit API (opt-in)
- AcoustID fingerprinting — Audio fingerprint + MusicBrainz recording ID extraction (opt-in)
- ReplayGain analysis — EBU R128 loudness analysis via FFmpeg (opt-in)
- Music video companions — Apple Music API music video lookup and download (opt-in, requires MusicKit) 6b. MusicBrainz video discovery — 3-tier fallback when Apple Music API has no results (opt-in)
All enrichment steps use spawn_blocking for file I/O and yield_now between steps to prevent UI freezes on slow filesystems (FUSE mounts, cloud storage).
The download queue is saved to queue.json after every change. On restart:
- Active/queued items are restored and resumed
- Failed items are restored in Error state (not auto-retried) for manual review
- Completed/cancelled items are cleared
-
Export: File > Export Queue saves to a
.meedyadlfile via native save dialog -
Import: File > Import Queue loads from a
.meedyadlfile, re-enqueues with local settings
Before each download, two checks run:
- Internet connectivity — HTTP GET to apple.com. If offline, item is queued but auto-start is skipped
- Cookie validation — Checks if cookies are valid/present. Blocks download if expired (skipped for wrapper users)
-
Rust panics → JSON crash reports in
{app_data_dir}/crashes/ -
Frontend errors → Persisted via
log_frontend_errorIPC command - Download errors → Terminal failures saved as error reports (network errors excluded)
- Reports older than 30 days auto-cleaned on startup
- Dual output: stderr + daily-rotating log file in
{app_data_dir}/logs/ - Uses
tracingecosystem withlogcompatibility
Settings > Advanced > Error Reporting lets you submit error reports to GitHub Issues with a pre-filled issue form (privacy preview before submission).
Opt-in telemetry via Settings > Advanced > Sentry toggle (default: off).