tonhowtf/omniget · error
informe o blog
Error message
informe o blog
What it means
The Tumblr backup tool derives the blog URL from the options before starting. If the blog field is empty the URL is empty and there is nothing to back up, so it bails with this short validation message.
Solutions
- Set the `blog` field in Options to the target Tumblr blog name or URL
- Validate the blog value before calling run (trim and check non-empty)
- Check the CLI/config binding so the blog name actually reaches Options
Example fix
// before
let opts = Options { blog: String::new(), .. }; // empty
// after
let opts = Options { blog: "myblog".into(), .. }; Defensive patterns
Strategy: validation
Validate before calling
if opts.blog.trim().is_empty() {
return Err(anyhow!("blog é obrigatório"));
} Type guard
fn blog_is_set(opts: &backup::Options) -> bool {
!opts.blog.trim().is_empty()
} Try / catch
match backup::run(&opts, progress).await {
Err(e) if e.to_string() == "informe o blog" => eprintln!("configure o campo blog"),
Err(e) => return Err(e),
Ok(r) => use(r),
} Prevention
- Treat blog as a required field in config and CLI validation
- Fail fast in your own code before calling run
- Wire the blog flag through to Options explicitly
When it happens
Trigger: Calling backup `run` with Options whose `blog` field is empty or whitespace, causing blog_url() to return an empty string.
Common situations: Forgot to set the blog name in config or CLI; env var/flag not wired into Options; default-constructed Options passed directly to run.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- informe pelo menos um perfil de favoritos
- informe o blog dos likes
- escolha a pasta de destino para organizar
- nenhum post foi lido desse blog
- Target domain is required for Cookie header import.
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/c088e112c9306f34.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/core/tools/tumblr/backup.rs:515
fn media_map(posts: &[Post], index: &LocalIndex, root: &Path) -> HashMap<String, String> {
let mut map = HashMap::new();
if index.is_empty() {
return map;
}
for post in posts {
for url in &post.media {
if let Some(local) = index.file_for_url(url) {
map.insert(url.clone(), rel_to_root(root, &local));
}
}
}
map
}
pub async fn run(opts: &Options, progress: &super::super::ProgressFn) -> Result<BackupResult> {
let url = blog_url(&opts.blog);
if url.is_empty() {
anyhow::bail!("informe o blog");
}
let cookies = match opts.session_netscape.as_deref() {
Some(s) => gdl::write_cookies(s, &["tumblr.com"])?,
None => None,
};
let used_session = cookies.is_some();
let cookie_path = cookies.as_ref().map(|c| c.path.clone());
let extra = vec![
"-o".to_string(),
"extractor.tumblr.posts=all".to_string(),
"-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()));View on GitHub (pinned to 8600b91f42)