{"record":{"id":"d966c5705f39ab58","repo":"tonhowtf/omniget","slug":"nenhum-like-foi-lido-os-likes-s-aparecem-com-a-sess-o-do","errorCode":null,"errorMessage":"nenhum like foi lido: os likes só aparecem com a sessão do Tumblr e com a lista pública ligada","messagePattern":"nenhum like foi lido: os likes só aparecem com a sessão do Tumblr e com a lista pública ligada","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/tools/tumblr/likes.rs","lineNumber":343,"sourceCode":"    let extra = vec![\n        \"-o\".to_string(),\n        \"extractor.tumblr.posts=all\".to_string(),\n        \"-o\".to_string(),\n        \"extractor.tumblr.original=true\".to_string(),\n    ];\n    let entries = gdl::dump(\n        &url,\n        cookies.as_ref().map(|c| c.path.as_path()),\n        opts.limit,\n        &extra,\n        progress,\n        TOOL_ID,\n    )\n    .await?;\n\n    let mut rows = rows_from_dump(&entries);\n    if rows.is_empty() {\n        anyhow::bail!(\n            \"nenhum like foi lido: os likes só aparecem com a sessão do Tumblr e com a lista pública ligada\"\n        );\n    }\n    let media: u64 = rows.iter().map(|r| r.media_urls.len() as u64).sum();\n\n    let index = match opts.media_dir.as_deref().filter(|d| !d.trim().is_empty()) {\n        Some(dir) => index_dir(Path::new(dir)),\n        None => LocalIndex::new(),\n    };\n    let matched_local = if index.is_empty() {\n        0\n    } else {\n        match_local(&mut rows, &index)\n    };\n\n    let out_dir = PathBuf::from(&opts.out_dir);\n    std::fs::create_dir_all(&out_dir)?;\n    let stem = format!(\"tumblr-likes-{}\", safe_slug(&opts.blog));","sourceCodeStart":325,"sourceCodeEnd":361,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/tools/tumblr/likes.rs#L325-L361","documentation":"After fetching the likes dump, the tool converts it to rows. Tumblr only exposes a blog's likes when the viewer is authenticated AND the blog owner enabled the public likes list. If zero likes rows were read, the tool aborts with this diagnostic message explaining both requirements.","triggerScenarios":"Calling likes `run` without session_netscape cookies, with expired/invalid cookies, or against a blog whose likes are set to private — the dump parses but contains no liked posts.","commonSituations":"Anonymous run against a private-likes blog; cookies exported days ago now expired; wrong account's cookies; blog owner turned off the public likes setting between runs.","solutions":["Provide a fresh session_netscape cookie file from a logged-in Tumblr session","Ask the blog owner (or check settings) to enable the public likes list","Re-export cookies if the session expired; confirm the right account","Inspect the raw dump to confirm fetch succeeded but returned no like entries"],"exampleFix":"// before\nlet opts = Options { blog: \"b\".into(), session_netscape: None, .. }; // no session\n// after\nlet opts = Options { blog: \"b\".into(), session_netscape: Some(\"fresh-cookies.txt\".into()), .. };","handlingStrategy":"try-catch","validationCode":"// likes need a session and a public likes list\nif opts.session_netscape.is_none() {\n    return Err(anyhow!(\"likes exigem sessão do Tumblr\"));\n}","typeGuard":null,"tryCatchPattern":"match likes::run(&opts, progress).await {\n    Err(e) if e.to_string().contains(\"nenhum like foi lido\") => {\n        eprintln!(\"exporte cookies frescos e confirme que a lista pública de likes está ligada\");\n    }\n    Err(e) => return Err(e),\n    Ok(r) => use(r),\n}","preventionTips":["Always supply a current logged-in session cookie file","Confirm the blog's likes list is publicly visible","Re-export cookies before long-running jobs"],"tags":["tumblr","likes","authentication","scraping"],"backgroundTag":"authentication-required","analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}