tonhowtf/omniget · error

secao ' ' nao encontrada no board

Error message

secao '{}' nao encontrada no board {}

What it means

When resolving a board-section target, the library lists the board's sections (via board_sections) and searches for one matching the requested section by slug or case-insensitive title. If none matches, it raises this error naming the section and the board. It is a lookup failure over an enumerated list, thrown after a successful board fetch.

Solutions

  1. Run user_boards()/board_sections first and pick the exact slug from the returned list.
  2. Match the section slug exactly as Pinterest generated it (lowercased, hyphenated, accents stripped).
  3. Verify the section still exists on the board in the Pinterest UI.
  4. Catch the error and fall back to the board's main feed if section targeting is optional.

Example fix

// before
api.section_feed(user, slug, "Receitas").await?;
// after
let board = api.board(user, slug).await?;
let secs = api.board_sections(&board.id).await?;
let wanted = secs.iter().find(|s| s.slug == "receitas")
    .ok_or_else(|| anyhow!("available: {:?}", secs.iter().map(|s| &s.slug).collect::<Vec<_>>()))?;
Defensive patterns

Strategy: validation

Validate before calling

let secs = api.board_sections(&board.id).await?;
let slugs: Vec<_> = secs.iter().map(|s| s.slug.clone()).collect();
anyhow::ensure!(slugs.iter().any(|s| s == &section), "section '{section}' not in {slugs:?}");

Type guard

fn find_section<'a>(secs: &'a [Section], name: &str) -> Option<&'a Section> {
    secs.iter().find(|s| s.slug == name || s.title.eq_ignore_ascii_case(name))
}

Try / catch

match api.section_feed(user, slug, section).await {
    Ok(f) => use_feed(f),
    Err(e) if e.to_string().contains("nao encontrada no board") => fallback_to_board_feed(user, slug).await?,
    Err(e) => return Err(e),
}

Prevention

When it happens

Trigger: Calling the section target resolution (e.g. feed_for(Target::Section{user, slug, section})) with a section name/slug that does not exist on that board, is misspelled, or differs in punctuation/accents from the board's actual section titles.

Common situations: Hardcoded section names in configs after the board owner renamed or deleted a section; accent/case differences (Portuguese titles); boards whose pins live in the main feed, not in any section.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/f56f77795486e34e. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/pinterest/api.rs:1293

                    Feed::Board {
                        board_id: b.id.clone(),
                        include_sections: true,
                    },
                    b.name,
                ))
            }
            Target::Section {
                user,
                slug,
                section,
            } => {
                let b = self.board(user, slug).await?;
                let secs = self.board_sections(&b.id).await?;
                let sec = secs
                    .into_iter()
                    .find(|x| &x.slug == section || x.title.eq_ignore_ascii_case(section))
                    .ok_or_else(|| {
                        anyhow!("secao '{}' nao encontrada no board {}", section, b.name)
                    })?;
                Ok((
                    Feed::Section { section_id: sec.id },
                    format!("{} · {}", b.name, sec.title),
                ))
            }
            Target::User { username } => Ok((
                Feed::UserPins {
                    username: username.clone(),
                },
                username.clone(),
            )),
            Target::UserCreated { username } => Ok((
                Feed::UserCreated {
                    username: username.clone(),
                },
                format!("{} (criados)", username),
            )),

View on GitHub (pinned to 8600b91f42)