tonhowtf/omniget · error
Playlist download finished without any files
Error message
Playlist download finished without any files
What it means
download_playlist counts per-item successes; if success_count == 0 after all tasks finish and no per-item error was captured in last_err, this fallback error is returned. It means every entry in the playlist failed (or zero entries were attempted/succeeded) yet no specific error survived to be reported.
Solutions
- Check the playlist directory and logs for per-item failures — this generic message masks the real cause of each item's failure.
- Verify the playlist URL is public and contains downloadable (non-live, non-private) videos.
- Ensure the output/playlist directory is writable and has free disk space.
- Improve error capture: store the first (not just last) per-item error so users see the real failure instead of this fallback.
- Retry with fewer concurrent items to rule out rate-limiting killing all downloads.
Example fix
// before
// generic error makes diagnosis impossible
return Err(last_err.unwrap_or_else(|| anyhow!("Playlist download finished without any files")));
// after
return Err(last_err.unwrap_or_else(|| anyhow!(
"Playlist download finished without any files: 0/{} items succeeded",
total_items
))); Defensive patterns
Strategy: try-catch
Try / catch
if let Err(e) = platform.download(playlist_url, None, &out_dir).await {
eprintln!("playlist failed: {e}; check per-item logs and playlist contents");
} Prevention
- Ensure the playlist contains public, non-live, downloadable items
- Check output directory writability and disk space before batch runs
- Capture and surface per-item errors, not just the aggregate result
- Retry failed playlists with lower concurrency to rule out rate limiting
When it happens
Trigger: Calling download() on a playlist URL where every item download fails and last_err was never set (e.g. all tasks were skipped/filtered, the playlist yielded zero downloadable items, or errors were swallowed), so the unwrap_or_else default fires.
Common situations: Private/deleted videos in a playlist combined with a parser that yields no downloadable entries; network outage killing all concurrent downloads with the last error lost; playlist containing only livestreams (each rejected) with errors dropped; output directory permission problems affecting every item.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- Playlist download finished without any files
- Download cancelled
- Playlist empty or unavailable
- Playlist empty or unavailable
- All playlist item(s) failed to download. First error
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/10800c09a4a57d32.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/platforms/youtube.rs:434
.await
{
Ok(result) => {
success_count += 1;
total_bytes += result.file_size_bytes;
last_path = result.file_path;
}
Err(e) => {
tracing::warn!("Playlist video {} failed: {}", i + 1, e);
last_err = Some(e);
}
}
let _ = forwarder.await;
}
if success_count == 0 {
return Err(
last_err.unwrap_or_else(|| anyhow!("Playlist download finished without any files"))
);
}
if success_count > 1 {
last_path = playlist_dir.clone();
}
let _ = progress.send(ProgressUpdate::percent(100.0)).await;
Ok(DownloadResult {
file_path: last_path,
file_size_bytes: total_bytes,
duration_seconds: 0.0,
torrent_id: None,
})
}
}
View on GitHub (pinned to 8600b91f42)