jackwener/OpenCLI · warning · EmptyResultError

This series has no koubei rating yet.

Error message

This series has no koubei rating yet.

What it means

EmptyResultError thrown by the autohome score command when the koubei page props parse fine but contain no brand name and no overall rating — i.e. the series legitimately has no koubei (owner-review) scores yet. This is a 'no data' condition, not a malfunction.

Source

Thrown at clis/autohome/score.js:96

    browser: false,
    args: [
        { name: 'series_id', required: true, positional: true, help: '车系 ID(来自 brand 的 series_id,或 k.autohome.com.cn/<id> URL)' },
    ],
    columns: SCORE_COLUMNS,
    func: async (args) => {
        const seriesId = normalizeSeriesId(args.series_id);
        const html = await ahFetch(`${AH_KOUBEI_BASE}/${seriesId}`, `score ${seriesId}`);
        const pp = extractPageProps(html);
        if (!pp) {
            throw new CommandExecutionError(
                `autohome score ${seriesId}`,
                'No koubei data found — the series id may be wrong, or Autohome changed its page.',
            );
        }
        const rows = parseScore(pp, seriesId);
        const map = Object.fromEntries(rows.map((r) => [r.field, r.value]));
        if (!map.name && map.overall == null) {
            throw new EmptyResultError(
                `autohome score ${seriesId}`,
                'This series has no koubei rating yet.',
            );
        }
        return rows;
    },
});

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Confirm the series id is the one you intended; a valid series with reviews will return data.
  2. Check the series page in a browser — if no koubei ratings exist there either, wait until owners post reviews.
  3. If you need some rating now, query a related/older series in the same family.

Example fix

// before
opencli autohome score <brandNewSeriesId>   // no reviews yet
// after
opencli autohome score <establishedSeriesId> // has koubei ratings
Defensive patterns

Strategy: try-catch

Validate before calling

// pre-check via the command's own error semantics: treat EmptyResultError as 'no data yet'
// no pre-call validation possible; data availability only known after fetch

Try / catch

try {
  const rows = await score(seriesId);
} catch (e) {
  if (/no koubei rating yet/.test(e.message)) {
    return null; // expected empty state, not a failure
  }
  throw e;
}

Prevention

When it happens

Trigger: Requesting scores for a brand-new or very low-volume series where map.name is empty and map.overall is null after parseScore runs.

Common situations: Recently launched models with too few owner reviews; series pages where the koubei section is empty; ids pointing at discontinued series with wiped review data.

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