DIYgod/RSSHub · warning · NotFoundError

Series ${id} not found on Omega Scans

Error message

Series ${id} not found on Omega Scans

What it means

Thrown as a `NotFoundError` (HTTP 404) when the Omega Scans chapter query API returns an empty `data` array for the given `series_id`. The handler POSTs to `https://api.omegascans.org/chapter/query` with `series_id`, `page: 1`, `perPage: 30`. An empty response means either the series does not exist or has no published chapters.

Source

Thrown at lib/routes/omegascans/series.ts:56

        supportRadar: false,
        supportBT: false,
        supportPodcast: false,
        supportScihub: false,
    },
    handler: async (ctx) => {
        const { id } = ctx.req.param();

        const response = await ofetch<ChapterQueryResponse>('https://api.omegascans.org/chapter/query', {
            query: {
                page: 1,
                perPage: 30,
                series_id: id,
            },
        });

        const chapters = response.data;
        if (chapters.length === 0) {
            throw new NotFoundError(`Series ${id} not found on Omega Scans`);
        }

        const seriesSlug = chapters[0].series.series_slug;
        const seriesTitle = seriesSlug.replaceAll('-', ' ').replaceAll(/\b\w/g, (c) => c.toUpperCase());
        const seriesLink = `https://omegascans.org/series/${seriesSlug}`;

        return {
            title: `Omega Scans - ${seriesTitle}`,
            link: seriesLink,
            image: 'https://omegascans.org/wetried_only.png',
            item: chapters.map((chapter) => ({
                title: chapter.chapter_title ?? chapter.chapter_name,
                link: `https://omegascans.org/series/${chapter.series.series_slug}/${chapter.chapter_slug}`,
                pubDate: parseDate(chapter.created_at),
                image: chapter.chapter_thumbnail ?? undefined,
                guid: `omegascans-chapter-${chapter.id}`,
                category: [chapter.price === 0 ? 'Free' : 'Paid'],
            })),

View on GitHub (pinned to bed535e087)

Solutions

  1. Verify the series ID by opening the series page on omegascans.org and checking network requests for the `series_id` parameter.
  2. Ensure the ID is numeric and from the API, not the URL slug.
  3. If the series was removed, there is no fix — use a different series ID.
Defensive patterns

Strategy: validation

Validate before calling

// Validate series ID is numeric before calling the API
if (!/^\d+$/.test(id)) {
    throw new InvalidParameterError(`Series ID must be numeric, got: '${id}'`);
}

Type guard

function isValidSeriesId(id: string): boolean {
    return /^\d+$/.test(id);
}

Try / catch

try {
    const response = await ofetch<ChapterQueryResponse>(apiUrl, { query: { series_id: id } });
    if (response.data.length === 0) {
        throw new NotFoundError(`Series ${id} not found on Omega Scans`);
    }
} catch (e) {
    if (e instanceof NotFoundError) {
        logger.warn(`Omega Scans series ${id} returned no chapters`);
    }
    throw e;
}

Prevention

When it happens

Trigger: Requesting `/omegascans/series/<id>` with an ID that doesn't correspond to any series, or a series that has been removed. The API returns `{ data: [] }` for non-existent series IDs rather than an HTTP error.

Common situations: User enters a wrong series ID (the ID must be found via the API get request on the series page, not from the URL slug). The series was deleted or made private by the publisher. The site migrated series IDs.

Related errors


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