{"record":{"id":"8eada3d2f1e361e9","repo":"DIYgod/RSSHub","slug":"ehentai-favorites-rss-is-disabled-due-to-the-lack","errorCode":null,"errorMessage":"Ehentai favorites RSS is disabled due to the lack of <a href=\"https://docs.rsshub.app/deploy/config#route-specific-configurations\">relevant config</a>","messagePattern":"Ehentai favorites RSS is disabled due to the lack of <a href=\"https://docs\\.rsshub\\.app/deploy/config#route-specific-configurations\">relevant config</a>","errorType":"exception","errorClass":"ConfigNotFoundError","httpStatus":503,"severity":"error","filePath":"lib/routes/ehentai/favorites.ts","lineNumber":33,"sourceCode":"        routeParams: 'Additional parameters, see the table above',\n    },\n    features: {\n        requireConfig: false,\n        requirePuppeteer: false,\n        antiCrawler: true,\n        supportBT: true,\n        supportPodcast: false,\n        supportScihub: false,\n        nsfw: true,\n    },\n    name: 'Favorites',\n    maintainers: ['yindaheng98', 'syrinka'],\n    handler,\n};\n\nasync function handler(ctx) {\n    if (!EhAPI.has_cookie) {\n        throw new ConfigNotFoundError('Ehentai favorites RSS is disabled due to the lack of <a href=\"https://docs.rsshub.app/deploy/config#route-specific-configurations\">relevant config</a>');\n    }\n    const favcat = ctx.req.param('favcat') ? Number.parseInt(ctx.req.param('favcat')) : 0;\n    const page = ctx.req.param('page');\n    const routeParams = new URLSearchParams(ctx.req.param('routeParams'));\n    const bittorrent = routeParams.get('bittorrent') || false;\n    const embed_thumb = routeParams.get('embed_thumb') || false;\n    const inline_set = ctx.req.param('order') === 'posted' ? 'fs_p' : 'fs_f';\n    const items = await EhAPI.getFavoritesItems(cache, favcat, inline_set, page, bittorrent as unknown as boolean, embed_thumb as unknown as boolean);\n\n    return EhAPI.from_ex\n        ? {\n              title: 'ExHentai Favorites',\n              link: `https://exhentai.org/favorites.php?favcat=${favcat}&inline_set=${inline_set}`,\n              item: items,\n          }\n        : {\n              title: 'E-Hentai Favorites',\n              link: `https://e-hentai.org/favorites.php?favcat=${favcat}&inline_set=${inline_set}`,","sourceCodeStart":15,"sourceCodeEnd":51,"githubUrl":"https://github.com/DIYgod/RSSHub/blob/bed535e0879dc71c5aff6f1e7bd1ac21ede40115/lib/routes/ehentai/favorites.ts#L15-L51","documentation":"Thrown as a `ConfigNotFoundError` when the Ehentai/E-Hentai API module (`EhAPI`) does not have a session cookie configured. The favorites route requires authentication to access a user's private favorites list, which is impossible without the `ipb_member_id` and `ipb_pass_hash` cookies. RSSHub maps ConfigNotFoundError to an HTTP 501-style response indicating a server-side configuration gap, not a user input error.","triggerScenarios":"The RSSHub deployment was started without setting the `EHENTAI_COOKIE` (or equivalent) environment variable. The `EhAPI.has_cookie` flag is false at startup because no cookie string was provided in the config. Every request to `/ehentai/favorites/...` triggers this error.","commonSituations":"Self-hosted RSSHub instance where the operator forgot to configure the Ehentai cookie env vars. The cookie expired and the config still has the old value (though in that case has_cookie would be true but requests would fail differently). The deployment uses a Docker image where the env var was not passed through.","solutions":["Set the `EHENTAI_COOKIE` environment variable with the `ipb_member_id` and `ipb_pass_hash` cookie values from your logged-in E-Hentai or ExHentai session.","For ExHentai access, also ensure the `ipb_member_id` and `ipb_pass_hash` are valid — ExHentai rejects sessions without them with a blank page (sad panda).","Restart RSSHub after setting the environment variable so the config is reloaded.","If you are the end user (not the hoster), contact the instance operator to configure the cookie, or self-host."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Check if the cookie is configured before invoking the route\nimport EhAPI from './ehapi';\n\nfunction ensureEhentaiConfigured(): void {\n    if (!EhAPI.has_cookie) {\n        throw new ConfigNotFoundError('Set EHENTAI_COOKIE env var with ipb_member_id and ipb_pass_hash');\n    }\n}","typeGuard":"// Verify the cookie flag at startup or before use\nfunction isEhentaiConfigured(): boolean {\n    return EhAPI.has_cookie === true;\n}","tryCatchPattern":null,"preventionTips":["Set the EHENTAI_COOKIE environment variable during deployment configuration.","For ExHentai, ensure both ipb_member_id and ipb_pass_hash are present (ExHentai shows 'sad panda' without them).","Restart RSSHub after setting environment variables.","If self-hosting, document the required env vars in the deployment README."],"tags":["config-missing","authentication","cookie-required","config-not-found-error","ehentai"],"backgroundTag":null,"analyzedSha":"bed535e0879dc71c5aff6f1e7bd1ac21ede40115","analyzedAt":"2026-08-12T19:29:35.364Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}