jackwener/OpenCLI · warning · EmptyResultError

No series found for '${brand}'. Check the brand name spellin

Error message

No series found for '${brand}'. Check the brand name spelling (simplified Chinese), or try a single A-Z catalog letter.

What it means

EmptyResultError raised by the autohome brand command when the catalog page for the resolved initial letter parses successfully but yields zero series rows matching the brand. Usually means the brand name didn't match anything on that letter's page.

Source

Thrown at clis/autohome/brand.js:101

    strategy: Strategy.PUBLIC,
    browser: false,
    args: [
        { name: 'brand', required: true, positional: true, help: '品牌名(宝马 / 比亚迪 / 理想 / 丰田 …)或车系目录首字母 A-Z' },
        { name: 'limit', type: 'int', default: 60, help: '返回的车系数量(最多 120)' },
    ],
    columns: BRAND_COLUMNS,
    func: async (args) => {
        const brand = String(args.brand || '').trim();
        const initial = resolveBrandInitial(brand);
        const limit = requireLimit(args.limit, 60, 120);

        const html = await ahFetch(
            `${AH_BASE}/grade/carhtml/${initial}.html`,
            `brand ${brand}`,
        );
        const rows = parseBrandSeries(html, /^[A-Za-z]$/.test(brand) ? '' : brand, limit);
        if (rows.length === 0) {
            throw new EmptyResultError(
                `autohome brand ${brand}`,
                `No series found for '${brand}'. Check the brand name spelling (simplified Chinese), or try a single A-Z catalog letter.`,
            );
        }
        return rows;
    },
});

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Spell the brand in simplified Chinese exactly as Autohome writes it (e.g. 宝马, 比亚迪, 理想).
  2. Try a single A-Z catalog letter (e.g. 'B') to list all series under that letter and find the right name.
  3. Double-check characters (traditional vs simplified) and remove punctuation/spaces.

Example fix

// before
opencli autohome brand 'BMW'
// after
opencli autohome brand '宝马'
Defensive patterns

Strategy: fallback

Validate before calling

if (!/^[\u4e00-\u9fa5]+$/.test(brand) && !/^[A-Za-z]$/.test(brand)) {
  console.warn("use simplified Chinese brand name (e.g. 宝马) or a single A-Z letter");
}

Try / catch

try {
  rows = await brand(brandName, limit);
} catch (e) {
  if (/No series found/.test(e.message)) {
    // fall back to browsing the letter catalog
    rows = await brand(brandInitial(brandName) || 'B', limit);
  } else throw e;
}

Prevention

When it happens

Trigger: Calling the brand command with a misspelled or non-Chinese brand name (e.g. 'BMW' or '宝马x'), or a brand whose initial was mapped to the wrong A-Z catalog letter so the filtered block has no series.

Common situations: Entering brand names in pinyin or English instead of simplified Chinese; typos in Chinese characters; niche brands absent from the catalog page for that letter.

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 jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/70bbd40a8b4c8c7a. Report an issue: GitHub.