DIYgod/RSSHub · error · Error

${detail.message}

Error message

${detail.message}

What it means

Thrown by the DXY special topic route when the special detail API (`/newh5/bbs/special/detail`) returns a non-success `code`. The route fetches metadata for a 'special' (curated topic) board using signed parameters with `requestType: 'h5'`. If the specialId is invalid, the signature is rejected, or the API is unavailable, the API's own `message` is re-thrown.

Source

Thrown at lib/routes/dxy/special.ts:47

    const specialId = ctx.req.param('specialId');
    const { limit = '10' } = ctx.req.query();

    const specialDetail = (await cache.tryGet(`dxy:special:detail:${specialId}`, async () => {
        const detailParams = {
            specialId,
            requestType: 'h5',
            timestamp: Date.now(),
            noncestr: generateNonce(8, 'number'),
        };

        const detail = await ofetch(`${phoneBaseUrl}/newh5/bbs/special/detail`, {
            query: {
                ...detailParams,
                sign: sign(detailParams),
            },
        });
        if (detail.code !== 'success') {
            throw new Error(detail.message);
        }
        return detail.data;
    })) as SpecialBoardDetail;

    const recommendList = (await cache.tryGet(
        `dxy:special:recommend-list-v3:${specialId}`,
        async () => {
            const listParams = {
                specialId,
                requestType: 'h5',
                pageNum: '1',
                pageSize: limit,
                timestamp: Date.now(),
                noncestr: generateNonce(8, 'number'),
            };

            const recommendList = await ofetch(`${phoneBaseUrl}/newh5/bbs/special/post/recommend-list-v3`, {
                query: {

View on GitHub (pinned to bed535e087)

Solutions

  1. Verify the specialId by visiting the DXY special topic page in a browser.
  2. Retry — may be transient.
  3. Inspect the upstream message for specific error details.
  4. If persistent, check for RSSHub updates to the API parameter format.

Example fix

// before
if (detail.code !== 'success') {
    throw new Error(detail.message);
}

// after
if (detail.code !== 'success') {
    throw new Error(`DXY special detail API error (specialId=${specialId}, code=${detail.code}): ${detail.message}`);
}
Defensive patterns

Strategy: try-catch

Type guard

function isDxySpecialDetailSuccess(resp: unknown): boolean {
    return typeof resp === 'object' && resp !== null && (resp as any).code === 'success';
}

Try / catch

try {
    const feed = await fetch(`${rsshubUrl}/dxy/bbs/special/${specialId}`);
} catch (e) {
    console.error(`DXY special detail API error for specialId ${specialId}: ${e.message}`);
    throw e;
}

Prevention

When it happens

Trigger: The specialId doesn't exist or has been removed; the request signature is invalid; the h5 request type is no longer supported; rate limiting or maintenance.

Common situations: Incorrect specialId from an outdated URL; DXY changed the special detail API endpoint or signing requirements; transient server error.

Related errors


AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12). Data as JSON: /api/errors/c1e11051ee734208. Report an issue: GitHub.