jackwener/OpenCLI · warning · EmptyResultError

No dblp author matched

Error message

No dblp author matched "${name}". Try a different spelling, or pass --pid to bypass author search.

What it means

EmptyResultError thrown when the dblp author-search API (q=<name>) returns zero hits. It indicates the search succeeded but dblp has no author matching the given name string.

Solutions

  1. Try alternate spellings, initials, or the name as it appears on a known paper
  2. Look the author up on dblp.org directly to find the exact indexed spelling
  3. Copy the PID from the dblp author page and pass --pid to bypass search entirely
  4. Check for extra whitespace or punctuation in the name argument

Example fix

// before
opencli dblp author --name 'Jhone Smith'
// Error: No dblp author matched "Jhone Smith".
// after
opencli dblp author --pid 56/953   # or correct spelling: --name 'John Smith'
Defensive patterns

Strategy: fallback

Validate before calling

// Can't pre-validate against dblp's index; guard the input shape at least.
const name = String(args.name ?? '').trim();
if (!name) throw new Error('--name is required');

Try / catch

try {
  rows = await dblpAuthor({ name });
} catch (err) {
  if (/No dblp author matched/.test(err.message)) {
    rows = []; // or fall back to a manual PID
  } else throw err;
}

Prevention

When it happens

Trigger: Calling `dblp author --name <name>` where dblp's /search/author/api returns an empty hit list — misspelled name, disambiguation variants, or the author is not indexed in dblp.

Common situations: Misspelled author name; searching a full name that dblp indexes differently (initials vs full first name); querying an industry author with no dblp-indexed publications; non-Latin script names dblp stores transliterated.

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

Appendix: source

Thrown at clis/dblp/author.js:94

        if (pidArg) {
            if (!PID_PATTERN.test(pidArg)) {
                throw new ArgumentError(
                    `dblp pid "${pidArg}" is not a valid PID`,
                    'Expected something like "56/953" — visit the author page on dblp.org to find it.',
                );
            }
            pid = pidArg;
        }
        else {
            const name = requireQuery(args.author, 'author');
            const json = await dblpFetchJson(
                `/search/author/api?q=${encodeURIComponent(name)}&format=json&h=20`,
                'dblp author search',
            );
            const raw = json?.result?.hits?.hit;
            const hits = Array.isArray(raw) ? raw : (raw ? [raw] : []);
            if (!hits.length) {
                throw new EmptyResultError(
                    'dblp author',
                    `No dblp author matched "${name}". Try a different spelling, or pass --pid to bypass author search.`,
                );
            }
            const top = pickTopAuthor(hits);
            pid = extractPidFromAuthorHit(top);
            if (!pid) {
                throw new CommandExecutionError(
                    `dblp author search for "${name}" returned a hit without a PID URL`,
                    'dblp may have changed its author-search response shape; retry or pass --pid manually.',
                );
            }
            resolvedName = decodeXmlEntities(String(top?.info?.author ?? '')).trim();
        }
        const xml = await dblpFetchXml(`/pid/${pid}.xml`, `dblp pid ${pid}`);
        const records = splitRecords(xml);
        if (!records.length) {
            throw new EmptyResultError(

View on GitHub (pinned to 49907e53dc)