tonhowtf/omniget · error

nenhum post foi lido desse blog

Error message

nenhum post foi lido desse blog

What it means

The backup tool fetches the blog's post dump and parses it into posts. If parsing yields zero posts, the backup would be an empty mirror, so it aborts with this message rather than writing an empty backup.

Solutions

  1. Verify the blog exists and has posts by opening it in a browser
  2. Provide a valid session_netscape cookie file if the blog requires a session
  3. Re-export cookies if the session expired
  4. Update the parser if Tumblr changed its response format
  5. Double-check the blog name/URL for typos

Example fix

// before
let opts = Options { blog: "deleted-blog".into(), session_netscape: None, .. };
// after
let opts = Options { blog: "active-blog".into(), session_netscape: Some("cookies.txt".into()), .. };
Defensive patterns

Strategy: try-catch

Validate before calling

// confirm blog exists and has posts before backing up
if !blog_has_posts(&opts.blog, opts.session_netscape.as_deref()).await {
    return Err(anyhow!("blog vazio ou inacessível"));
}

Try / catch

match backup::run(&opts, progress).await {
    Err(e) if e.to_string().contains("nenhum post foi lido") => {
        eprintln!("verifique sessão/nome do blog ou formato do dump");
    }
    Err(e) => return Err(e),
    Ok(r) => use(r),
}

Prevention

When it happens

Trigger: Calling backup `run` against a blog whose fetched dump contained no parseable posts — empty/new blog, offscreen/private content without a valid session, or a dump format change breaking parse_posts.

Common situations: Backing up a deleted or brand-new blog with zero posts; missing or expired session cookies for blogs that require authentication; Tumblr API/HTML changes that the parser no longer understands; wrong blog name that resolves to an empty page.

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/252e0de6bb23b6f2. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/tumblr/backup.rs:545

        "-o".to_string(),
        "extractor.tumblr.reblogs=true".to_string(),
        "-o".to_string(),
        "extractor.tumblr.original=true".to_string(),
    ];

    super::super::report(progress, TOOL_ID, "started", 0, None, Some(url.clone()));
    let entries = gdl::dump(
        &url,
        cookie_path.as_deref(),
        opts.limit,
        &extra,
        progress,
        TOOL_ID,
    )
    .await?;
    let posts = parse_posts(&entries);
    if posts.is_empty() {
        anyhow::bail!("nenhum post foi lido desse blog");
    }

    let blog_name = posts
        .iter()
        .find(|p| !p.blog.is_empty())
        .map(|p| p.blog.clone())
        .unwrap_or_else(|| safe_slug(&opts.blog));
    let root = PathBuf::from(&opts.out_dir).join(safe_slug(&blog_name));
    let media_dir = root.join("media");
    std::fs::create_dir_all(root.join("posts"))?;
    std::fs::create_dir_all(root.join("tags"))?;

    let mut media_files = 0u64;
    if opts.download_media {
        let out = gdl::download(
            &url,
            &media_dir,
            cookie_path.as_deref(),

View on GitHub (pinned to 8600b91f42)