tonhowtf/omniget · error
não achei nenhum vídeo nessa URL (Watch Later precisa da…
Error message
não achei nenhum vídeo nessa URL (Watch Later precisa da sessão do YouTube)
What it means
enumerate runs yt-dlp to fetch a flat playlist and parses the resulting JSON; if parsing succeeds but yields zero video items, it throws "não achei nenhum vídeo nessa URL (Watch Later precisa da sessão do YouTube)". The hint exists because Watch Later (WL) playlists are private and only enumerate when authenticated with the user's YouTube session cookies.
Solutions
- Provide opts.session_netscape pointing to a fresh YouTube cookies file (export in Netscape format from a logged-in browser).
- Re-export cookies if they are old — YouTube session cookies expire frequently.
- Confirm the cookies file belongs to the account that owns the Watch Later playlist.
- Open the playlist URL in a browser to verify it actually contains videos; try a different URL if it's empty or wrong.
- Update yt-dlp if it fails to parse YouTube's current playlist page.
Example fix
// before
let opts = Options { url: "https://youtube.com/playlist?list=WL".into(), dest: dest.clone(), session_netscape: None, retry_failed: false };
// after
let opts = Options {
url: "https://youtube.com/playlist?list=WL".into(),
dest: dest.clone(),
session_netscape: Some("/home/user/youtube-cookies.txt".into()),
retry_failed: false,
}; Defensive patterns
Strategy: validation
Validate before calling
// Rust
let is_watch_later = opts.url.contains("list=WL");
if is_watch_later && opts.session_netscape.is_none() {
return Err(anyhow!("Watch Later exige cookies de sessão (session_netscape)"));
} Try / catch
match yt_archive::scan(&opts, &progress).await {
Ok(r) => r,
Err(e) if e.to_string().contains("nenhum vídeo") => {
eprintln!("playlist vazia ou sem sessão; forneça cookies do YouTube e tente de novo");
prompt_for_cookies()
}
Err(e) => return Err(e),
} Prevention
- Always supply a fresh Netscape-format YouTube cookies file for Watch Later playlists
- Re-export cookies when enumeration suddenly returns empty
- Confirm the playlist has videos by opening it in a logged-in browser
- Verify cookies belong to the account owning the playlist
When it happens
Trigger: Calling scan or run with opts.url pointing to a playlist yt-dlp can see but that contains no items — notably a Watch Later URL without session_netscape cookies, or an empty/deleted playlist.
Common situations: Using the WL playlist URL without exporting YouTube cookies in Netscape format; cookies expired or from a different account; playlist URL typed wrong or now empty; region/account restrictions hiding items.
Related errors
- yt-dlp falhou
- Playlist empty or unavailable
- Livestreams not supported
- YouTube requires yt-dlp. Failed to get yt-dlp
- No quality available
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/c64c98ee1a086135.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/core/tools/yt_archive.rs:516
ID,
"progress",
0,
None,
Some("lendo a coleção".into()),
);
let mut args = vec![
"-J".to_string(),
"--flat-playlist".to_string(),
"--no-warnings".to_string(),
"--ignore-errors".to_string(),
];
let cookie = CookieFile::new(opts.session_netscape.as_deref())?;
cookie.push_args(&mut args);
args.push(opts.url.trim().to_string());
let json = run_ytdlp(&args).await?;
let (title, items) = parse_flat_playlist(&json)?;
if items.is_empty() {
return Err(anyhow!(
"não achei nenhum vídeo nessa URL (Watch Later precisa da sessão do YouTube)"
));
}
let mut st = load_state(dest).unwrap_or_else(|| ArchiveState::new(opts.url.trim(), &title));
st.source_url = opts.url.trim().to_string();
st.merge(&title, items, opts.retry_failed);
Ok(st)
}
pub async fn run(opts: Options, progress: super::ProgressFn) -> anyhow::Result<ArchiveResult> {
if opts.dest.trim().is_empty() {
return Err(anyhow!("escolha a pasta do arquivo"));
}
let dest = PathBuf::from(opts.dest.trim());
std::fs::create_dir_all(&dest)?;
CANCEL.store(false, Ordering::SeqCst);
let mut st = match load_state(&dest) {View on GitHub (pinned to 8600b91f42)