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

  1. Check network connectivity and retry the playlist.
  2. Run the playlist URL through yt-dlp directly to see which items fail and why.
  3. Log/inspect per-item failures so last_err is populated and the real cause surfaces instead of this fallback.
  4. 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

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


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)