tonhowtf/omniget · error
Playlist download finished without any files
Error message
Playlist download finished without any files
What it means
download_playlist spawns per-item downloads and counts successes; when success_count == 0 it returns the last captured per-item error, or this fallback error if none was recorded. It means the whole playlist download completed but produced zero files, and no underlying failure message was preserved to surface.
Solutions
- Check network connectivity and retry the playlist.
- Run the playlist URL through yt-dlp directly to see which items fail and why.
- Log/inspect per-item failures so last_err is populated and the real cause surfaces instead of this fallback.
- Verify the playlist is non-empty and its videos are still public.
Example fix
// ensure per-item errors are captured so the real cause is returned
if let Err(e) = item.download().await {
last_err = Some(anyhow!("item {}: {e}", item.url));
continue;
} Defensive patterns
Strategy: try-catch
Validate before calling
let info = get_media_info(playlist_url).await?;
// ensure playlist resolves to entries before downloading
if info.entries.as_ref().map_or(true, |e| e.is_empty()) {
return Err(anyhow!("playlist is empty or unavailable"));
} Try / catch
match download_playlist(url).await {
Err(e) if e.to_string().contains("finished without any files") => {
eprintln!("All playlist items failed; check network and item availability");
}
r => r?,
} Prevention
- Capture each per-item error so the real root cause is reported instead of the fallback
- Pre-validate the playlist has accessible entries
- Retry failed items once with backoff before declaring the batch failed
- Surface per-item failure lists to the user
When it happens
Trigger: Every item in the playlist failed (network errors, removed/private videos, per-video quality errors) AND each failure was recorded without storing an anyhow error (e.g. items were skipped/ignored), leaving last_err None.
Common situations: Playlist where all videos are private or region-blocked; total network outage during the run; a filter (height cap) that rejects every entry in every video so every item fails uniformly with no recorded error.
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/606962e00ff5a5d5.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/src/platforms/youtube/mod.rs:460
.await
{
Ok(result) => {
success_count += 1;
total_bytes += result.file_size_bytes;
last_path = result.file_path;
}
Err(e) => {
tracing::warn!("Playlist video {} falhou: {}", 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)