From add932bf3810eb20f490be01454476817124cdb5 Mon Sep 17 00:00:00 2001 From: Stephen Zhou <38493346+hyoban@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:41:45 +0800 Subject: [PATCH] feat: more nsfw flag (#20184) * feat: add more nsfw flag * update --- eslint-plugins/nsfw-flag.js | 211 +++++++ eslint.config.mjs | 530 ++++++++++-------- lib/routes/18comic/album.ts | 1 + lib/routes/18comic/blogs.ts | 1 + lib/routes/18comic/search.ts | 1 + lib/routes/8kcos/cat.ts | 3 + lib/routes/8kcos/latest.ts | 1 + lib/routes/8kcos/tag.ts | 1 + lib/routes/91porn/author.ts | 1 + lib/routes/95mm/category.ts | 1 + lib/routes/95mm/tag.ts | 1 + lib/routes/abskoop/index.ts | 3 + lib/routes/abskoop/nsfw.ts | 3 + lib/routes/asiantolick/index.ts | 3 + lib/routes/asmr-200/index.ts | 1 + lib/routes/booru/mmda.ts | 1 + lib/routes/chikubi/category.ts | 1 + lib/routes/chikubi/navigation.ts | 1 + lib/routes/chikubi/nipple-video-category.ts | 1 + lib/routes/chikubi/nipple-video-maker.ts | 1 + lib/routes/chikubi/search.ts | 1 + lib/routes/chub/characters.ts | 3 + lib/routes/civitai/discussions.ts | 1 + lib/routes/civitai/models.ts | 1 + lib/routes/civitai/user.ts | 3 + lib/routes/copymanga/comic.ts | 1 + lib/routes/cosplaytele/category.ts | 1 + lib/routes/cosplaytele/latest.ts | 1 + lib/routes/cosplaytele/popular.ts | 1 + lib/routes/cosplaytele/tag.ts | 1 + lib/routes/dlsite/campaign.ts | 1 + lib/routes/dlsite/ci-en/article.ts | 1 + lib/routes/dlsite/new.ts | 1 + lib/routes/dlsite/z-index/index.ts | 3 + lib/routes/ehentai/favorites.ts | 1 + lib/routes/ehentai/search.ts | 1 + lib/routes/everia/category.ts | 1 + lib/routes/everia/latest.ts | 1 + lib/routes/everia/search.ts | 1 + lib/routes/everia/tag.ts | 1 + lib/routes/fansly/post.ts | 1 + lib/routes/fantia/search.ts | 1 + lib/routes/fantia/user.ts | 1 + lib/routes/furaffinity/art.ts | 1 + lib/routes/furaffinity/browse.ts | 1 + lib/routes/furaffinity/commissions.ts | 1 + lib/routes/furaffinity/home.ts | 1 + lib/routes/furaffinity/journal-comments.ts | 1 + lib/routes/furaffinity/journals.ts | 1 + lib/routes/furaffinity/search.ts | 1 + lib/routes/furaffinity/shouts.ts | 1 + lib/routes/furaffinity/status.ts | 1 + lib/routes/furaffinity/submission-comments.ts | 1 + lib/routes/furaffinity/user.ts | 1 + lib/routes/furaffinity/watchers.ts | 1 + lib/routes/furaffinity/watching.ts | 1 + lib/routes/gelbooru/post.ts | 1 + lib/routes/hanime1/previews.ts | 1 + lib/routes/hanime1/search.ts | 1 + lib/routes/iwara/index.ts | 3 + lib/routes/iwara/subscriptions.ts | 1 + lib/routes/javdb/actors.ts | 1 + lib/routes/javdb/index.ts | 3 + lib/routes/javdb/lists.ts | 3 + lib/routes/javdb/makers.ts | 1 + lib/routes/javdb/rankings.ts | 1 + lib/routes/javdb/search.ts | 1 + lib/routes/javdb/series.ts | 1 + lib/routes/javdb/videocodes.ts | 1 + lib/routes/javlibrary/bestrated.ts | 3 + lib/routes/javlibrary/bestreviews.ts | 1 + lib/routes/javlibrary/genre.ts | 3 + lib/routes/javlibrary/maker.ts | 1 + lib/routes/javlibrary/mostwanted.ts | 3 + lib/routes/javlibrary/newentries.ts | 3 + lib/routes/javlibrary/newrelease.ts | 3 + lib/routes/javlibrary/update.ts | 3 + lib/routes/javlibrary/user.ts | 3 + lib/routes/javtrailers/categories.ts | 3 + lib/routes/javtrailers/studios.ts | 3 + lib/routes/jpxgmn/search.ts | 3 + lib/routes/jpxgmn/weekly.ts | 3 + lib/routes/kisskiss/blog.ts | 1 + lib/routes/komiic/comic.ts | 1 + lib/routes/koyso/index.ts | 1 + lib/routes/laimanhua/index.ts | 1 + lib/routes/literotica/category.ts | 3 + lib/routes/mangadex/index.ts | 3 + lib/routes/mangadex/mdlist/feed.ts | 1 + lib/routes/mangadex/user/feed.ts | 1 + lib/routes/mangadex/user/follows.ts | 1 + lib/routes/manhuagui/comic.ts | 1 + lib/routes/manhuagui/subscribe.ts | 1 + lib/routes/manyvids/video.ts | 3 + lib/routes/netflav/index.ts | 3 + lib/routes/nhentai/search.ts | 1 + lib/routes/olevod/vod.ts | 3 + lib/routes/olevod/vodlist.ts | 3 + lib/routes/oreno3d/main.ts | 1 + lib/routes/patreon/feed.ts | 1 + lib/routes/pixiv/bookmarks.ts | 1 + lib/routes/pixiv/illustfollow.ts | 1 + lib/routes/pixiv/novel-series.ts | 1 + lib/routes/pixiv/novels.ts | 1 + lib/routes/pixiv/ranking.ts | 1 + lib/routes/pixiv/search.ts | 1 + lib/routes/pixiv/user.ts | 1 + lib/routes/pornhub/category-url.ts | 1 + lib/routes/pornhub/category.ts | 1 + lib/routes/pornhub/pornstar.ts | 1 + lib/routes/pornhub/search.ts | 1 + lib/routes/pornhub/users.ts | 1 + lib/routes/rawkuma/manga.ts | 1 + lib/routes/sehuatang/user.ts | 1 + lib/routes/shuiguopai/index.ts | 3 + lib/routes/sis001/author.ts | 1 + lib/routes/skeb/following-creators.ts | 1 + lib/routes/skeb/following-works.ts | 1 + lib/routes/skeb/friend-works.ts | 1 + lib/routes/skeb/index.ts | 1 + lib/routes/skeb/search.ts | 1 + lib/routes/skeb/works.ts | 1 + lib/routes/skebetter/illust.ts | 1 + lib/routes/skebetter/index.ts | 1 + lib/routes/skebetter/manga.ts | 1 + lib/routes/t66y/post.ts | 1 + lib/routes/uraaka-joshi/uraaka-joshi-user.ts | 1 + lib/routes/uraaka-joshi/uraaka-joshi.ts | 3 + lib/routes/wnacg/category.ts | 3 + lib/routes/wnacg/index.ts | 3 + lib/routes/wnacg/tag.ts | 3 + lib/routes/xsijishe/forum.ts | 1 + lib/routes/xsijishe/rank.ts | 1 + lib/routes/zaimanhua/comic.ts | 1 + lib/routes/zaimanhua/update.ts | 1 + lib/routes/zodgame/forum.ts | 1 + 136 files changed, 698 insertions(+), 241 deletions(-) create mode 100644 eslint-plugins/nsfw-flag.js diff --git a/eslint-plugins/nsfw-flag.js b/eslint-plugins/nsfw-flag.js new file mode 100644 index 000000000..1d0f4b24a --- /dev/null +++ b/eslint-plugins/nsfw-flag.js @@ -0,0 +1,211 @@ +/** + * ESLint 9 plugin to automatically mark NSFW routes with the nsfw flag + */ + +const nsfwRoutes = [ + '141jav', + '141ppv', + '18comic', + '2048', + '7mmtv', + '8kcos', + '91porn', + '95mm', + 'abskoop', + 'asiantolick', + 'asmr-200', + 'booru', + 'chikubi', + 'chub', + 'civitai', + 'cool18', + 'coomer', + 'copymanga', + 'cosplaytele', + 'dlsite', + 'e-hentai', + 'ehentai', + 'everia', + 'fanbox', + 'fansly', + 'fantia', + 'freexcomic', + 'furaffinity', + 'gelbooru', + 'hanime1', + 'iwara', + 'javbus', + 'javdb', + 'javlibrary', + 'javtiful', + 'javtrailers', + 'jpxgmn', + 'kemono', + 'kisskiss', + 'komiic', + 'konachan', + 'koyso', + 'laimanhua', + 'literotica', + 'mangadex', + 'manhuagui', + 'manyvids', + 'missav', + 'netflav', + 'nhentai', + 'olevod', + 'oreno3d', + 'patreon', + 'pixiv', + 'pornhub', + 'rawkuma', + 'sehuatang', + 'shuiguopai', + 'sis001', + 'skeb', + 'skebetter', + 'spankbang', + 't66y', + 'uraaka-joshi', + 'wnacg', + 'xbookcn', + 'xmanhua', + 'xsijishe', + 'yande', + 'zaimanhua', + 'zodgame', +]; + +// 检查是否是 NSFW 路由文件 +function isNsfwRoute(filePath) { + const normalizedPath = filePath.replaceAll('\\', '/'); + return nsfwRoutes.some((nsfwKey) => { + const routePattern = `/lib/routes/${nsfwKey}/`; + return normalizedPath.includes(routePattern); + }); +} + +export default { + meta: { + name: '@rsshub/nsfw-flag', + version: '1.0.0', + }, + configs: { + recommended: { + plugins: { + '@rsshub/nsfw-flag': 'self', + }, + rules: { + '@rsshub/nsfw-flag/add-nsfw-flag': 'error', + }, + }, + }, + rules: { + 'add-nsfw-flag': { + meta: { + type: 'problem', + docs: { + description: 'Automatically add nsfw flag to NSFW routes', + category: 'Best Practices', + recommended: true, + }, + fixable: 'code', + schema: [], + messages: { + missingNsfwFlag: 'NSFW route is missing the nsfw flag in features', + }, + }, + create(context) { + const filename = context.filename || context.getFilename(); + + // 如果不是 NSFW 路由,跳过检查 + if (!isNsfwRoute(filename)) { + return {}; + } + + return { + ExportNamedDeclaration(node) { + // 查找 export const route: Route = {...} + if ( + node.declaration && + node.declaration.type === 'VariableDeclaration' && + node.declaration.declarations && + node.declaration.declarations[0] && + node.declaration.declarations[0].id && + node.declaration.declarations[0].id.name === 'route' + ) { + const routeDeclaration = node.declaration.declarations[0]; + const routeObject = routeDeclaration.init; + + if (routeObject && routeObject.type === 'ObjectExpression') { + let featuresProperty = null; + let nsfwProperty = null; + + // 查找 features 属性 + for (const prop of routeObject.properties) { + if (prop.type === 'Property' && prop.key && prop.key.name === 'features') { + featuresProperty = prop; + + // 在 features 中查找 nsfw 属性 + if (prop.value && prop.value.type === 'ObjectExpression') { + for (const featureProp of prop.value.properties) { + if (featureProp.type === 'Property' && featureProp.key && featureProp.key.name === 'nsfw') { + nsfwProperty = featureProp; + break; + } + } + } + break; + } + } + + // 检查是否需要添加或修复 nsfw 标志 + if (!featuresProperty) { + // 没有 features 属性,需要添加整个 features 对象 + context.report({ + node: routeObject, + messageId: 'missingNsfwFlag', + fix(fixer) { + // 在对象的最后添加 features 属性 + const lastProperty = routeObject.properties.at(-1); + + return lastProperty + ? fixer.insertTextAfter(lastProperty, ',\n features: {\n nsfw: true,\n }') + : // 空对象的情况 + fixer.insertTextAfter(routeObject.properties.length > 0 ? routeObject.properties.at(-1) : routeObject, '\n features: {\n nsfw: true,\n }\n'); + }, + }); + } else if (!nsfwProperty) { + // 有 features 属性但没有 nsfw 属性 + context.report({ + node: featuresProperty.value, + messageId: 'missingNsfwFlag', + fix(fixer) { + const featuresObject = featuresProperty.value; + if (featuresObject.properties.length > 0) { + const lastFeatureProp = featuresObject.properties.at(-1); + return fixer.insertTextAfter(lastFeatureProp, ',\n nsfw: true'); + } else { + // features 是空对象 + return fixer.replaceTextRange([featuresObject.range[0] + 1, featuresObject.range[1] - 1], '\n nsfw: true,\n '); + } + }, + }); + } else if (nsfwProperty.value && (nsfwProperty.value.type !== 'Literal' || nsfwProperty.value.value !== true)) { + // nsfw 属性存在但不是 true + context.report({ + node: nsfwProperty.value, + messageId: 'missingNsfwFlag', + fix(fixer) { + return fixer.replaceText(nsfwProperty.value, 'true'); + }, + }); + } + } + } + }, + }; + }, + }, + }, +}; diff --git a/eslint.config.mjs b/eslint.config.mjs index c199f1858..78ae2d107 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -8,6 +8,7 @@ import tsParser from '@typescript-eslint/parser'; import yamlParser from 'yaml-eslint-parser'; import js from '@eslint/js'; import { FlatCompat } from '@eslint/eslintrc'; +// import nsfwFlagPlugin from './eslint-plugins/nsfw-flag.js'; const __dirname = import.meta.dirname; const compat = new FlatCompat({ @@ -15,251 +16,294 @@ const compat = new FlatCompat({ recommendedConfig: js.configs.recommended, }); -export default [{ - ignores: [ - '**/coverage', - '**/.vscode', - '**/docker-compose.yml', - '!.github', - 'assets/build', - 'lib/routes-deprecated', - 'lib/router.js', - '**/babel.config.js', - 'scripts/docker/minify-docker.js', - 'dist', - ], -}, ...compat.extends( - 'eslint:recommended', - 'plugin:prettier/recommended', - 'plugin:yml/recommended', - 'plugin:@typescript-eslint/recommended', -), -n.configs['flat/recommended-script'], -unicorn.configs.recommended, -{ - plugins: { - prettier, - '@stylistic': stylistic, - '@typescript-eslint': typescriptEslint, +export default [ + // { + // plugins: { + // '@rsshub/nsfw-flag': nsfwFlagPlugin, + // }, + // rules: { + // '@rsshub/nsfw-flag/add-nsfw-flag': 'error', + // }, + // }, + { + ignores: ['**/coverage', '**/.vscode', '**/docker-compose.yml', '!.github', 'assets/build', 'lib/routes-deprecated', 'lib/router.js', '**/babel.config.js', 'scripts/docker/minify-docker.js', 'dist'], }, - - languageOptions: { - globals: { - ...globals.node, - ...globals.browser, + ...compat.extends('eslint:recommended', 'plugin:prettier/recommended', 'plugin:yml/recommended', 'plugin:@typescript-eslint/recommended'), + n.configs['flat/recommended-script'], + unicorn.configs.recommended, + { + plugins: { + prettier, + '@stylistic': stylistic, + '@typescript-eslint': typescriptEslint, }, - parser: tsParser, - ecmaVersion: 'latest', - sourceType: 'module', + languageOptions: { + globals: { + ...globals.node, + ...globals.browser, + }, + + parser: tsParser, + ecmaVersion: 'latest', + sourceType: 'module', + }, + + rules: { + // possible problems + 'array-callback-return': [ + 'error', + { + allowImplicit: true, + }, + ], + + 'no-await-in-loop': 'error', + 'no-control-regex': 'off', + 'no-duplicate-imports': 'error', + 'no-prototype-builtins': 'off', + + // suggestions + 'arrow-body-style': 'error', + 'block-scoped-var': 'error', + curly: 'error', + 'dot-notation': 'error', + eqeqeq: 'error', + + 'default-case': [ + 'warn', + { + commentPattern: '^no default$', + }, + ], + + 'default-case-last': 'error', + 'no-console': 'error', + 'no-eval': 'error', + 'no-extend-native': 'error', + 'no-extra-label': 'error', + + 'no-implicit-coercion': [ + 'error', + { + boolean: false, + number: false, + string: false, + disallowTemplateShorthand: true, + }, + ], + + 'no-implicit-globals': 'error', + 'no-labels': 'error', + 'no-multi-str': 'error', + 'no-new-func': 'error', + 'no-restricted-imports': 'error', + + 'no-restricted-syntax': [ + 'error', + { + selector: "CallExpression[callee.property.name='get'][arguments.length=0]", + message: 'Please use .toArray() instead.', + }, + { + selector: "CallExpression[callee.property.name='toArray'] MemberExpression[object.callee.property.name='map']", + message: 'Please use .toArray() before .map().', + }, + { + selector: 'CallExpression[callee.property.name="catch"] > ArrowFunctionExpression[params.length<=1][body.value=null]', + message: 'Usage of .catch(() => null) is not allowed. Please handle the error appropriately.', + }, + ], + + 'no-unneeded-ternary': 'error', + 'no-useless-computed-key': 'error', + 'no-useless-concat': 'warn', + 'no-useless-rename': 'error', + 'no-var': 'error', + 'object-shorthand': 'error', + 'prefer-arrow-callback': 'error', + 'prefer-const': 'error', + 'prefer-object-has-own': 'error', + 'no-useless-escape': 'warn', + + 'prefer-regex-literals': [ + 'error', + { + disallowRedundantWrapping: true, + }, + ], + + 'require-await': 'error', + + // typescript + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-var-requires': 'off', + + '@typescript-eslint/no-unused-expressions': [ + 'error', + { + allowShortCircuit: true, + allowTernary: true, + }, + ], + + // unicorn + 'unicorn/consistent-function-scoping': 'warn', + 'unicorn/explicit-length-check': 'off', + + 'unicorn/filename-case': [ + 'error', + { + case: 'kebabCase', + ignore: [String.raw`.*\.(yaml|yml)$`, String.raw`RequestInProgress\.js$`], + }, + ], + + 'unicorn/no-array-callback-reference': 'warn', + 'unicorn/no-array-reduce': 'warn', + 'unicorn/no-array-sort': 'warn', + 'unicorn/no-await-expression-member': 'off', + 'unicorn/no-empty-file': 'warn', + 'unicorn/no-hex-escape': 'warn', + 'unicorn/no-null': 'off', + 'unicorn/no-object-as-default-parameter': 'warn', + 'unicorn/no-nested-ternary': 'off', + 'unicorn/no-process-exit': 'off', + 'unicorn/no-useless-switch-case': 'off', + + 'unicorn/no-useless-undefined': [ + 'error', + { + checkArguments: false, + }, + ], + + 'unicorn/numeric-separators-style': [ + 'warn', + { + onlyIfContainsSeparator: false, + + number: { + minimumDigits: 7, + groupLength: 3, + }, + + binary: { + minimumDigits: 9, + groupLength: 4, + }, + + octal: { + minimumDigits: 9, + groupLength: 4, + }, + + hexadecimal: { + minimumDigits: 5, + groupLength: 2, + }, + }, + ], + + 'unicorn/prefer-code-point': 'warn', + 'unicorn/prefer-global-this': 'off', + 'unicorn/prefer-import-meta-properties': 'warn', + 'unicorn/prefer-module': 'off', + + 'unicorn/prefer-number-properties': [ + 'error', + { + checkInfinity: false, + checkNaN: false, + }, + ], + + 'unicorn/prefer-spread': 'warn', + 'unicorn/prefer-string-slice': 'warn', + + 'unicorn/prefer-switch': [ + 'warn', + { + emptyDefaultCase: 'do-nothing-comment', + }, + ], + + 'unicorn/prefer-top-level-await': 'off', + 'unicorn/prevent-abbreviations': 'off', + 'unicorn/switch-case-braces': ['error', 'avoid'], + 'unicorn/text-encoding-identifier-case': 'off', + + // formatting rules + '@stylistic/arrow-parens': 'error', + '@stylistic/arrow-spacing': 'error', + '@stylistic/comma-spacing': 'error', + '@stylistic/comma-style': 'error', + '@stylistic/function-call-spacing': 'error', + '@stylistic/keyword-spacing': 'error', + '@stylistic/linebreak-style': 'error', + + '@stylistic/lines-around-comment': [ + 'error', + { + beforeBlockComment: false, + }, + ], + + '@stylistic/no-multiple-empty-lines': 'error', + '@stylistic/no-trailing-spaces': 'error', + '@stylistic/rest-spread-spacing': 'error', + '@stylistic/semi': 'error', + '@stylistic/space-before-blocks': 'error', + '@stylistic/space-in-parens': 'error', + '@stylistic/space-infix-ops': 'error', + '@stylistic/space-unary-ops': 'error', + '@stylistic/spaced-comment': 'error', + + // https://github.com/eslint-community/eslint-plugin-n + // node specific rules + 'n/no-extraneous-require': 'error', + + 'n/no-deprecated-api': 'warn', + 'n/no-missing-import': 'off', + 'n/no-missing-require': 'off', + 'n/no-process-exit': 'off', + 'n/no-unpublished-import': 'off', + + 'n/no-unpublished-require': [ + 'error', + { + allowModules: ['tosource'], + }, + ], + + 'n/no-unsupported-features/node-builtins': [ + 'error', + { + version: '>=22.16.0', + ignores: [], + }, + ], + + 'prettier/prettier': 'off', + + 'yml/quotes': [ + 'error', + { + prefer: 'single', + }, + ], + + 'yml/no-empty-mapping-value': 'off', + }, }, - - rules: { - // possible problems - 'array-callback-return': ['error', { - allowImplicit: true, - }], - - 'no-await-in-loop': 'error', - 'no-control-regex': 'off', - 'no-duplicate-imports': 'error', - 'no-prototype-builtins': 'off', - - // suggestions - 'arrow-body-style': 'error', - 'block-scoped-var': 'error', - 'curly': 'error', - 'dot-notation': 'error', - 'eqeqeq': 'error', - - 'default-case': ['warn', { - commentPattern: '^no default$', - }], - - 'default-case-last': 'error', - 'no-console': 'error', - 'no-eval': 'error', - 'no-extend-native': 'error', - 'no-extra-label': 'error', - - 'no-implicit-coercion': ['error', { - boolean: false, - number: false, - string: false, - disallowTemplateShorthand: true, - }], - - 'no-implicit-globals': 'error', - 'no-labels': 'error', - 'no-multi-str': 'error', - 'no-new-func': 'error', - 'no-restricted-imports': 'error', - - 'no-restricted-syntax': ['error', { - selector: "CallExpression[callee.property.name='get'][arguments.length=0]", - message: "Please use .toArray() instead.", - }, { - selector: "CallExpression[callee.property.name='toArray'] MemberExpression[object.callee.property.name='map']", - message: "Please use .toArray() before .map().", - }, { - selector: 'CallExpression[callee.property.name="catch"] > ArrowFunctionExpression[params.length<=1][body.value=null]', - message: "Usage of .catch(() => null) is not allowed. Please handle the error appropriately." - }], - - 'no-unneeded-ternary': 'error', - 'no-useless-computed-key': 'error', - 'no-useless-concat': 'warn', - 'no-useless-rename': 'error', - 'no-var': 'error', - 'object-shorthand': 'error', - 'prefer-arrow-callback': 'error', - 'prefer-const': 'error', - 'prefer-object-has-own': 'error', - 'no-useless-escape': 'warn', - - 'prefer-regex-literals': ['error', { - disallowRedundantWrapping: true, - }], - - 'require-await': 'error', - - // typescript - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-var-requires': 'off', - - '@typescript-eslint/no-unused-expressions': ['error', { - allowShortCircuit: true, - allowTernary: true, - }], - - // unicorn - 'unicorn/consistent-function-scoping': 'warn', - 'unicorn/explicit-length-check': 'off', - - 'unicorn/filename-case': ['error', { - case: 'kebabCase', - ignore: [String.raw`.*\.(yaml|yml)$`, String.raw`RequestInProgress\.js$`], - }], - - 'unicorn/no-array-callback-reference': 'warn', - 'unicorn/no-array-reduce': 'warn', - 'unicorn/no-array-sort': 'warn', - 'unicorn/no-await-expression-member': 'off', - 'unicorn/no-empty-file': 'warn', - 'unicorn/no-hex-escape': 'warn', - 'unicorn/no-null': 'off', - 'unicorn/no-object-as-default-parameter': 'warn', - 'unicorn/no-nested-ternary': 'off', - 'unicorn/no-process-exit': 'off', - 'unicorn/no-useless-switch-case': 'off', - - 'unicorn/no-useless-undefined': ['error', { - checkArguments: false, - }], - - 'unicorn/numeric-separators-style': ['warn', { - onlyIfContainsSeparator: false, - - number: { - minimumDigits: 7, - groupLength: 3, - }, - - binary: { - minimumDigits: 9, - groupLength: 4, - }, - - octal: { - minimumDigits: 9, - groupLength: 4, - }, - - hexadecimal: { - minimumDigits: 5, - groupLength: 2, - }, - }], - - 'unicorn/prefer-code-point': 'warn', - 'unicorn/prefer-global-this': 'off', - 'unicorn/prefer-import-meta-properties': 'warn', - 'unicorn/prefer-module': 'off', - - 'unicorn/prefer-number-properties': ['error', { - checkInfinity: false, - checkNaN: false, - }], - - 'unicorn/prefer-spread': 'warn', - 'unicorn/prefer-string-slice': 'warn', - - 'unicorn/prefer-switch': ['warn', { - emptyDefaultCase: 'do-nothing-comment', - }], - - 'unicorn/prefer-top-level-await': 'off', - 'unicorn/prevent-abbreviations': 'off', - 'unicorn/switch-case-braces': ['error', 'avoid'], - 'unicorn/text-encoding-identifier-case': 'off', - - // formatting rules - '@stylistic/arrow-parens': 'error', - '@stylistic/arrow-spacing': 'error', - '@stylistic/comma-spacing': 'error', - '@stylistic/comma-style': 'error', - '@stylistic/function-call-spacing': 'error', - '@stylistic/keyword-spacing': 'error', - '@stylistic/linebreak-style': 'error', - - '@stylistic/lines-around-comment': ['error', { - beforeBlockComment: false, - }], - - '@stylistic/no-multiple-empty-lines': 'error', - '@stylistic/no-trailing-spaces': 'error', - '@stylistic/rest-spread-spacing': 'error', - '@stylistic/semi': 'error', - '@stylistic/space-before-blocks': 'error', - '@stylistic/space-in-parens': 'error', - '@stylistic/space-infix-ops': 'error', - '@stylistic/space-unary-ops': 'error', - '@stylistic/spaced-comment': 'error', - - // https://github.com/eslint-community/eslint-plugin-n - // node specific rules - 'n/no-extraneous-require': 'error', - - 'n/no-deprecated-api': 'warn', - 'n/no-missing-import': 'off', - 'n/no-missing-require': 'off', - 'n/no-process-exit': 'off', - 'n/no-unpublished-import': 'off', - - 'n/no-unpublished-require': ['error', { - allowModules: ['tosource'], - }], - - "n/no-unsupported-features/node-builtins": ["error", { - "version": ">=22.16.0", - "ignores": [] - }], - - 'prettier/prettier': 'off', - - 'yml/quotes': ['error', { - prefer: 'single', - }], - - 'yml/no-empty-mapping-value': 'off', - }, -}, { + { files: ['.puppeteerrc.cjs'], rules: { '@typescript-eslint/no-require-imports': 'off', }, -}, { + }, + { files: ['**/*.yaml', '**/*.yml'], languageOptions: { @@ -267,8 +311,12 @@ unicorn.configs.recommended, }, rules: { - 'lines-around-comment': ['error', { - beforeBlockComment: false, - }], + 'lines-around-comment': [ + 'error', + { + beforeBlockComment: false, + }, + ], }, -}]; + }, +]; diff --git a/lib/routes/18comic/album.ts b/lib/routes/18comic/album.ts index 646c9f866..763efc643 100644 --- a/lib/routes/18comic/album.ts +++ b/lib/routes/18comic/album.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/18comic/blogs.ts b/lib/routes/18comic/blogs.ts index 1ccfe302c..0b1ded742 100644 --- a/lib/routes/18comic/blogs.ts +++ b/lib/routes/18comic/blogs.ts @@ -18,6 +18,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/18comic/search.ts b/lib/routes/18comic/search.ts index 930145ecf..e0388b31f 100644 --- a/lib/routes/18comic/search.ts +++ b/lib/routes/18comic/search.ts @@ -23,6 +23,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/8kcos/cat.ts b/lib/routes/8kcos/cat.ts index d28f1ef67..7790739f2 100644 --- a/lib/routes/8kcos/cat.ts +++ b/lib/routes/8kcos/cat.ts @@ -16,6 +16,9 @@ export const route: Route = { maintainers: [], handler, url: '8kcosplay.com/', + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/8kcos/latest.ts b/lib/routes/8kcos/latest.ts index 9c1c90891..8a4326e3c 100644 --- a/lib/routes/8kcos/latest.ts +++ b/lib/routes/8kcos/latest.ts @@ -18,6 +18,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/8kcos/tag.ts b/lib/routes/8kcos/tag.ts index 56f356a0b..569aad0f4 100644 --- a/lib/routes/8kcos/tag.ts +++ b/lib/routes/8kcos/tag.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/91porn/author.ts b/lib/routes/91porn/author.ts index 4d9d27e9b..019a4e863 100644 --- a/lib/routes/91porn/author.ts +++ b/lib/routes/91porn/author.ts @@ -20,6 +20,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/95mm/category.ts b/lib/routes/95mm/category.ts index 877995e83..b0338b01a 100644 --- a/lib/routes/95mm/category.ts +++ b/lib/routes/95mm/category.ts @@ -13,6 +13,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/95mm/tag.ts b/lib/routes/95mm/tag.ts index c519bbd62..a3971b92c 100644 --- a/lib/routes/95mm/tag.ts +++ b/lib/routes/95mm/tag.ts @@ -13,6 +13,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/abskoop/index.ts b/lib/routes/abskoop/index.ts index 9bc07597f..0d5268a48 100644 --- a/lib/routes/abskoop/index.ts +++ b/lib/routes/abskoop/index.ts @@ -16,6 +16,9 @@ export const route: Route = { maintainers: ['zhenhappy'], handler, url: 'ahhhhfs.com/', + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/abskoop/nsfw.ts b/lib/routes/abskoop/nsfw.ts index 662aa00c4..602c604b2 100644 --- a/lib/routes/abskoop/nsfw.ts +++ b/lib/routes/abskoop/nsfw.ts @@ -14,6 +14,9 @@ export const route: Route = { maintainers: ['zhenhappy'], handler, url: 'ahhhhfs.com/', + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/asiantolick/index.ts b/lib/routes/asiantolick/index.ts index 27f968b13..55ff5782e 100644 --- a/lib/routes/asiantolick/index.ts +++ b/lib/routes/asiantolick/index.ts @@ -19,6 +19,9 @@ export const route: Route = { maintainers: [], handler, url: 'asiantolick.com/', + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/asmr-200/index.ts b/lib/routes/asmr-200/index.ts index e0ffa88fa..aae88f9e2 100644 --- a/lib/routes/asmr-200/index.ts +++ b/lib/routes/asmr-200/index.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, parameters: { order: '排序字段,默认按照资源的收录日期来排序,详见下表', diff --git a/lib/routes/booru/mmda.ts b/lib/routes/booru/mmda.ts index 02664b7c5..677ac99bb 100644 --- a/lib/routes/booru/mmda.ts +++ b/lib/routes/booru/mmda.ts @@ -21,6 +21,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/chikubi/category.ts b/lib/routes/chikubi/category.ts index b640b94f1..0b29eb176 100644 --- a/lib/routes/chikubi/category.ts +++ b/lib/routes/chikubi/category.ts @@ -13,6 +13,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Category', maintainers: ['SnowAgar25'], diff --git a/lib/routes/chikubi/navigation.ts b/lib/routes/chikubi/navigation.ts index b512b7c8a..7598d3ffe 100644 --- a/lib/routes/chikubi/navigation.ts +++ b/lib/routes/chikubi/navigation.ts @@ -14,6 +14,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Navigation', maintainers: ['SnowAgar25'], diff --git a/lib/routes/chikubi/nipple-video-category.ts b/lib/routes/chikubi/nipple-video-category.ts index 02042a34a..6be5f39c6 100644 --- a/lib/routes/chikubi/nipple-video-category.ts +++ b/lib/routes/chikubi/nipple-video-category.ts @@ -14,6 +14,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: '動画カテゴリー', maintainers: ['SnowAgar25'], diff --git a/lib/routes/chikubi/nipple-video-maker.ts b/lib/routes/chikubi/nipple-video-maker.ts index d563c8cad..1dc2d3130 100644 --- a/lib/routes/chikubi/nipple-video-maker.ts +++ b/lib/routes/chikubi/nipple-video-maker.ts @@ -14,6 +14,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'AVメーカー', maintainers: ['SnowAgar25'], diff --git a/lib/routes/chikubi/search.ts b/lib/routes/chikubi/search.ts index 57519077b..e92b55604 100644 --- a/lib/routes/chikubi/search.ts +++ b/lib/routes/chikubi/search.ts @@ -14,6 +14,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Search', maintainers: ['SnowAgar25'], diff --git a/lib/routes/chub/characters.ts b/lib/routes/chub/characters.ts index 93990fccf..f2d1b3b10 100644 --- a/lib/routes/chub/characters.ts +++ b/lib/routes/chub/characters.ts @@ -9,6 +9,9 @@ export const route: Route = { name: 'Characters', maintainers: ['flameleaf'], handler, + features: { + nsfw: true, + }, }; async function handler() { diff --git a/lib/routes/civitai/discussions.ts b/lib/routes/civitai/discussions.ts index 9801bab58..6a54687df 100644 --- a/lib/routes/civitai/discussions.ts +++ b/lib/routes/civitai/discussions.ts @@ -21,6 +21,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/civitai/models.ts b/lib/routes/civitai/models.ts index 86325ac77..1a16ae584 100644 --- a/lib/routes/civitai/models.ts +++ b/lib/routes/civitai/models.ts @@ -14,6 +14,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/civitai/user.ts b/lib/routes/civitai/user.ts index 682228878..08018c164 100644 --- a/lib/routes/civitai/user.ts +++ b/lib/routes/civitai/user.ts @@ -16,6 +16,9 @@ export const route: Route = { name: 'User Article', maintainers: ['TonyRL'], handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/copymanga/comic.ts b/lib/routes/copymanga/comic.ts index 9c5092fd4..3807794e8 100644 --- a/lib/routes/copymanga/comic.ts +++ b/lib/routes/copymanga/comic.ts @@ -21,6 +21,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: '漫画更新', maintainers: ['btdwv', 'marvolo666'], diff --git a/lib/routes/cosplaytele/category.ts b/lib/routes/cosplaytele/category.ts index 6062ef26a..e29adff15 100644 --- a/lib/routes/cosplaytele/category.ts +++ b/lib/routes/cosplaytele/category.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/cosplaytele/latest.ts b/lib/routes/cosplaytele/latest.ts index fe5d0b000..d50a194d4 100644 --- a/lib/routes/cosplaytele/latest.ts +++ b/lib/routes/cosplaytele/latest.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/cosplaytele/popular.ts b/lib/routes/cosplaytele/popular.ts index fc590cc17..16e6296dd 100644 --- a/lib/routes/cosplaytele/popular.ts +++ b/lib/routes/cosplaytele/popular.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/cosplaytele/tag.ts b/lib/routes/cosplaytele/tag.ts index a1e11d467..9a9a799c9 100644 --- a/lib/routes/cosplaytele/tag.ts +++ b/lib/routes/cosplaytele/tag.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/dlsite/campaign.ts b/lib/routes/dlsite/campaign.ts index ca3d0c3f5..ff06faa5c 100644 --- a/lib/routes/dlsite/campaign.ts +++ b/lib/routes/dlsite/campaign.ts @@ -141,6 +141,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Discounted Works', maintainers: ['cssxsh'], diff --git a/lib/routes/dlsite/ci-en/article.ts b/lib/routes/dlsite/ci-en/article.ts index 4c9462b8b..a5a513f06 100644 --- a/lib/routes/dlsite/ci-en/article.ts +++ b/lib/routes/dlsite/ci-en/article.ts @@ -18,6 +18,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/dlsite/new.ts b/lib/routes/dlsite/new.ts index 90038bb5b..1a426ce1d 100644 --- a/lib/routes/dlsite/new.ts +++ b/lib/routes/dlsite/new.ts @@ -69,6 +69,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Current Release', maintainers: ['cssxsh'], diff --git a/lib/routes/dlsite/z-index/index.ts b/lib/routes/dlsite/z-index/index.ts index 74349ce21..dc17b3e0c 100644 --- a/lib/routes/dlsite/z-index/index.ts +++ b/lib/routes/dlsite/z-index/index.ts @@ -6,6 +6,9 @@ export const route: Route = { name: 'Unknown', maintainers: [], handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/ehentai/favorites.ts b/lib/routes/ehentai/favorites.ts index d5956fe2c..14abc9d46 100644 --- a/lib/routes/ehentai/favorites.ts +++ b/lib/routes/ehentai/favorites.ts @@ -20,6 +20,7 @@ export const route: Route = { supportBT: true, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Favorites', maintainers: ['yindaheng98', 'syrinka'], diff --git a/lib/routes/ehentai/search.ts b/lib/routes/ehentai/search.ts index 58bd95667..f52936925 100644 --- a/lib/routes/ehentai/search.ts +++ b/lib/routes/ehentai/search.ts @@ -14,6 +14,7 @@ export const route: Route = { supportBT: true, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Search', maintainers: ['yindaheng98', 'syrinka'], diff --git a/lib/routes/everia/category.ts b/lib/routes/everia/category.ts index 9af3d08a6..d3e2e7f3f 100644 --- a/lib/routes/everia/category.ts +++ b/lib/routes/everia/category.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/everia/latest.ts b/lib/routes/everia/latest.ts index 8f53ef4ff..9cb958335 100644 --- a/lib/routes/everia/latest.ts +++ b/lib/routes/everia/latest.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/everia/search.ts b/lib/routes/everia/search.ts index 97e8de326..95655a4ce 100644 --- a/lib/routes/everia/search.ts +++ b/lib/routes/everia/search.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Search', maintainers: ['KTachibanaM', 'AiraNadih'], diff --git a/lib/routes/everia/tag.ts b/lib/routes/everia/tag.ts index ea691b759..e14585ecf 100644 --- a/lib/routes/everia/tag.ts +++ b/lib/routes/everia/tag.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/fansly/post.ts b/lib/routes/fansly/post.ts index c4a8f726b..a62fb53b6 100644 --- a/lib/routes/fansly/post.ts +++ b/lib/routes/fansly/post.ts @@ -14,6 +14,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/fantia/search.ts b/lib/routes/fantia/search.ts index 88b3847b0..432cca1f4 100644 --- a/lib/routes/fantia/search.ts +++ b/lib/routes/fantia/search.ts @@ -86,6 +86,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Search', maintainers: ['nczitzk'], diff --git a/lib/routes/fantia/user.ts b/lib/routes/fantia/user.ts index 75ddbba6c..4f720a943 100644 --- a/lib/routes/fantia/user.ts +++ b/lib/routes/fantia/user.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/art.ts b/lib/routes/furaffinity/art.ts index c160bdee7..fe4260454 100644 --- a/lib/routes/furaffinity/art.ts +++ b/lib/routes/furaffinity/art.ts @@ -20,6 +20,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/browse.ts b/lib/routes/furaffinity/browse.ts index eb423cbf4..81c9009bf 100644 --- a/lib/routes/furaffinity/browse.ts +++ b/lib/routes/furaffinity/browse.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/commissions.ts b/lib/routes/furaffinity/commissions.ts index 740265da7..6a8067c67 100644 --- a/lib/routes/furaffinity/commissions.ts +++ b/lib/routes/furaffinity/commissions.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/home.ts b/lib/routes/furaffinity/home.ts index 383b79e92..a8aaf9e67 100644 --- a/lib/routes/furaffinity/home.ts +++ b/lib/routes/furaffinity/home.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/journal-comments.ts b/lib/routes/furaffinity/journal-comments.ts index 19935b967..70495dea6 100644 --- a/lib/routes/furaffinity/journal-comments.ts +++ b/lib/routes/furaffinity/journal-comments.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/journals.ts b/lib/routes/furaffinity/journals.ts index df13b8262..98d59234a 100644 --- a/lib/routes/furaffinity/journals.ts +++ b/lib/routes/furaffinity/journals.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/search.ts b/lib/routes/furaffinity/search.ts index 1f9d9eda2..21c722b11 100644 --- a/lib/routes/furaffinity/search.ts +++ b/lib/routes/furaffinity/search.ts @@ -20,6 +20,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/shouts.ts b/lib/routes/furaffinity/shouts.ts index 94e5c071a..6fd539ca6 100644 --- a/lib/routes/furaffinity/shouts.ts +++ b/lib/routes/furaffinity/shouts.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/status.ts b/lib/routes/furaffinity/status.ts index 5c4201558..b4554fb91 100644 --- a/lib/routes/furaffinity/status.ts +++ b/lib/routes/furaffinity/status.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/submission-comments.ts b/lib/routes/furaffinity/submission-comments.ts index 7bb1009b0..c3f8edf44 100644 --- a/lib/routes/furaffinity/submission-comments.ts +++ b/lib/routes/furaffinity/submission-comments.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/user.ts b/lib/routes/furaffinity/user.ts index a2b47e116..a152e3317 100644 --- a/lib/routes/furaffinity/user.ts +++ b/lib/routes/furaffinity/user.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/watchers.ts b/lib/routes/furaffinity/watchers.ts index b278ed608..3b28aa5d5 100644 --- a/lib/routes/furaffinity/watchers.ts +++ b/lib/routes/furaffinity/watchers.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/furaffinity/watching.ts b/lib/routes/furaffinity/watching.ts index 394f62021..917e12933 100644 --- a/lib/routes/furaffinity/watching.ts +++ b/lib/routes/furaffinity/watching.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/gelbooru/post.ts b/lib/routes/gelbooru/post.ts index 83ddce77a..b546d35b8 100644 --- a/lib/routes/gelbooru/post.ts +++ b/lib/routes/gelbooru/post.ts @@ -37,6 +37,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/hanime1/previews.ts b/lib/routes/hanime1/previews.ts index 00feafe20..2696695dd 100644 --- a/lib/routes/hanime1/previews.ts +++ b/lib/routes/hanime1/previews.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/hanime1/search.ts b/lib/routes/hanime1/search.ts index ecfec5de7..0652101b5 100644 --- a/lib/routes/hanime1/search.ts +++ b/lib/routes/hanime1/search.ts @@ -92,6 +92,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, handler, }; diff --git a/lib/routes/iwara/index.ts b/lib/routes/iwara/index.ts index 22a0a3531..0ab0a44b7 100644 --- a/lib/routes/iwara/index.ts +++ b/lib/routes/iwara/index.ts @@ -41,6 +41,9 @@ export const route: Route = { name: 'Unknown', maintainers: ['Fatpandac'], handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/iwara/subscriptions.ts b/lib/routes/iwara/subscriptions.ts index 83f5cf1cd..0ef7ba3a3 100644 --- a/lib/routes/iwara/subscriptions.ts +++ b/lib/routes/iwara/subscriptions.ts @@ -33,6 +33,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/javdb/actors.ts b/lib/routes/javdb/actors.ts index 782506a47..0bee34cde 100644 --- a/lib/routes/javdb/actors.ts +++ b/lib/routes/javdb/actors.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/javdb/index.ts b/lib/routes/javdb/index.ts index 0c24e38f0..c8629a50a 100644 --- a/lib/routes/javdb/index.ts +++ b/lib/routes/javdb/index.ts @@ -31,6 +31,9 @@ export const route: Route = { | 全部 | 可下载 | 含字幕 | 含短評 | | ---- | ------ | ------ | ------ | | 0 | 1 | 2 | 3 |`, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/javdb/lists.ts b/lib/routes/javdb/lists.ts index e5504d815..dd065b421 100644 --- a/lib/routes/javdb/lists.ts +++ b/lib/routes/javdb/lists.ts @@ -13,6 +13,9 @@ export const route: Route = { maintainers: ['dddepg'], handler, url: 'javdb.com/', + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/javdb/makers.ts b/lib/routes/javdb/makers.ts index 5d4dd2860..eb2e20781 100644 --- a/lib/routes/javdb/makers.ts +++ b/lib/routes/javdb/makers.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/javdb/rankings.ts b/lib/routes/javdb/rankings.ts index 304c87423..1eb21db21 100644 --- a/lib/routes/javdb/rankings.ts +++ b/lib/routes/javdb/rankings.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/javdb/search.ts b/lib/routes/javdb/search.ts index f4c67cbd1..910f71fbb 100644 --- a/lib/routes/javdb/search.ts +++ b/lib/routes/javdb/search.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/javdb/series.ts b/lib/routes/javdb/series.ts index ffcb0f4dd..de8bb45b6 100644 --- a/lib/routes/javdb/series.ts +++ b/lib/routes/javdb/series.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/javdb/videocodes.ts b/lib/routes/javdb/videocodes.ts index 3dc9a1984..bd8acccec 100644 --- a/lib/routes/javdb/videocodes.ts +++ b/lib/routes/javdb/videocodes.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/javlibrary/bestrated.ts b/lib/routes/javlibrary/bestrated.ts index 9964bea6e..1d26c643b 100644 --- a/lib/routes/javlibrary/bestrated.ts +++ b/lib/routes/javlibrary/bestrated.ts @@ -10,6 +10,9 @@ export const route: Route = { description: `| Last Month | All Time | | ---------- | -------- | | 1 | 2 |`, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/javlibrary/bestreviews.ts b/lib/routes/javlibrary/bestreviews.ts index 65cb7894f..2982af67f 100644 --- a/lib/routes/javlibrary/bestreviews.ts +++ b/lib/routes/javlibrary/bestreviews.ts @@ -14,6 +14,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Best Reviews', maintainers: ['nczitzk'], diff --git a/lib/routes/javlibrary/genre.ts b/lib/routes/javlibrary/genre.ts index f289d82aa..2919c51d2 100644 --- a/lib/routes/javlibrary/genre.ts +++ b/lib/routes/javlibrary/genre.ts @@ -14,6 +14,9 @@ export const route: Route = { ::: tip See [Categories](https://www.javlibrary.com/en/genres.php) to view all categories. :::`, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/javlibrary/maker.ts b/lib/routes/javlibrary/maker.ts index f62d80a79..f1f081eba 100644 --- a/lib/routes/javlibrary/maker.ts +++ b/lib/routes/javlibrary/maker.ts @@ -14,6 +14,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Videos by makers', maintainers: [], diff --git a/lib/routes/javlibrary/mostwanted.ts b/lib/routes/javlibrary/mostwanted.ts index f20cfbeb0..974a2e3e6 100644 --- a/lib/routes/javlibrary/mostwanted.ts +++ b/lib/routes/javlibrary/mostwanted.ts @@ -10,6 +10,9 @@ export const route: Route = { description: `| Last Month | All Time | | ---------- | -------- | | 1 | 2 |`, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/javlibrary/newentries.ts b/lib/routes/javlibrary/newentries.ts index 52aba8952..e7ce07d02 100644 --- a/lib/routes/javlibrary/newentries.ts +++ b/lib/routes/javlibrary/newentries.ts @@ -7,6 +7,9 @@ export const route: Route = { name: 'Unknown', maintainers: [], handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/javlibrary/newrelease.ts b/lib/routes/javlibrary/newrelease.ts index c7f99d722..b3a0f9d98 100644 --- a/lib/routes/javlibrary/newrelease.ts +++ b/lib/routes/javlibrary/newrelease.ts @@ -10,6 +10,9 @@ export const route: Route = { description: `| videos with comments (by date) | everything (by date) | | ------------------------------ | -------------------- | | 1 | 2 |`, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/javlibrary/update.ts b/lib/routes/javlibrary/update.ts index 8327bddda..f545d0735 100644 --- a/lib/routes/javlibrary/update.ts +++ b/lib/routes/javlibrary/update.ts @@ -7,6 +7,9 @@ export const route: Route = { name: 'Unknown', maintainers: [], handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/javlibrary/user.ts b/lib/routes/javlibrary/user.ts index e85759c2a..4fa6105a0 100644 --- a/lib/routes/javlibrary/user.ts +++ b/lib/routes/javlibrary/user.ts @@ -10,6 +10,9 @@ export const route: Route = { description: `| Wanted | Watched | Owned | | ---------- | ----------- | --------- | | userwanted | userwatched | userowned |`, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/javtrailers/categories.ts b/lib/routes/javtrailers/categories.ts index 402e366b3..bf1dd2f5b 100644 --- a/lib/routes/javtrailers/categories.ts +++ b/lib/routes/javtrailers/categories.ts @@ -18,6 +18,9 @@ export const route: Route = { maintainers: ['TonyRL'], url: 'javtrailers.com/categories', handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/javtrailers/studios.ts b/lib/routes/javtrailers/studios.ts index 72ebfca6c..b92cb2fb2 100644 --- a/lib/routes/javtrailers/studios.ts +++ b/lib/routes/javtrailers/studios.ts @@ -17,6 +17,9 @@ export const route: Route = { name: 'Studios', maintainers: ['TonyRL'], handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/jpxgmn/search.ts b/lib/routes/jpxgmn/search.ts index 605f8d9f8..14367c85a 100644 --- a/lib/routes/jpxgmn/search.ts +++ b/lib/routes/jpxgmn/search.ts @@ -13,6 +13,9 @@ export const route: Route = { name: '搜索', maintainers: ['Urabartin'], handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/jpxgmn/weekly.ts b/lib/routes/jpxgmn/weekly.ts index fcffc9b8c..e8f76ea39 100644 --- a/lib/routes/jpxgmn/weekly.ts +++ b/lib/routes/jpxgmn/weekly.ts @@ -18,6 +18,9 @@ export const route: Route = { name: '本周热门', maintainers: ['Urabartin'], handler, + features: { + nsfw: true, + }, }; async function handler() { diff --git a/lib/routes/kisskiss/blog.ts b/lib/routes/kisskiss/blog.ts index e2444dba3..15e0888a1 100644 --- a/lib/routes/kisskiss/blog.ts +++ b/lib/routes/kisskiss/blog.ts @@ -18,6 +18,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/komiic/comic.ts b/lib/routes/komiic/comic.ts index 90e743da9..6f08fffda 100644 --- a/lib/routes/komiic/comic.ts +++ b/lib/routes/komiic/comic.ts @@ -14,6 +14,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/koyso/index.ts b/lib/routes/koyso/index.ts index a15674d7c..1bb18b0aa 100644 --- a/lib/routes/koyso/index.ts +++ b/lib/routes/koyso/index.ts @@ -241,6 +241,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/laimanhua/index.ts b/lib/routes/laimanhua/index.ts index f9f184c39..c680c145e 100644 --- a/lib/routes/laimanhua/index.ts +++ b/lib/routes/laimanhua/index.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/literotica/category.ts b/lib/routes/literotica/category.ts index 0dbdb4570..7831b4a75 100644 --- a/lib/routes/literotica/category.ts +++ b/lib/routes/literotica/category.ts @@ -14,6 +14,9 @@ export const route: Route = { name: 'Unknown', maintainers: ['nczitzk'], handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/mangadex/index.ts b/lib/routes/mangadex/index.ts index 6c1871973..5f880b761 100644 --- a/lib/routes/mangadex/index.ts +++ b/lib/routes/mangadex/index.ts @@ -13,6 +13,9 @@ export const route: Route = { maintainers: ['vzz64', 'chrisis58'], example: '/mangadex/manga/f98660a1-d2e2-461c-960d-7bd13df8b76d/en', handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/mangadex/mdlist/feed.ts b/lib/routes/mangadex/mdlist/feed.ts index a6aa7e877..69e1ac96a 100644 --- a/lib/routes/mangadex/mdlist/feed.ts +++ b/lib/routes/mangadex/mdlist/feed.ts @@ -59,6 +59,7 @@ export const route: Route = { optional: true, }, ], + nsfw: true, }, handler, }; diff --git a/lib/routes/mangadex/user/feed.ts b/lib/routes/mangadex/user/feed.ts index c1bd3ed07..0e88607af 100644 --- a/lib/routes/mangadex/user/feed.ts +++ b/lib/routes/mangadex/user/feed.ts @@ -56,6 +56,7 @@ export const route: Route = { optional: true, }, ], + nsfw: true, }, handler, }; diff --git a/lib/routes/mangadex/user/follows.ts b/lib/routes/mangadex/user/follows.ts index d877fbe40..6f2723149 100644 --- a/lib/routes/mangadex/user/follows.ts +++ b/lib/routes/mangadex/user/follows.ts @@ -84,6 +84,7 @@ It's recommended to use the \`/mangadex/mdlist/:listId?\` route instead for bett optional: true, }, ], + nsfw: true, }, handler, }; diff --git a/lib/routes/manhuagui/comic.ts b/lib/routes/manhuagui/comic.ts index 02cfa3617..ee4241169 100644 --- a/lib/routes/manhuagui/comic.ts +++ b/lib/routes/manhuagui/comic.ts @@ -55,6 +55,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/manhuagui/subscribe.ts b/lib/routes/manhuagui/subscribe.ts index 41208914c..79399b7d1 100644 --- a/lib/routes/manhuagui/subscribe.ts +++ b/lib/routes/manhuagui/subscribe.ts @@ -26,6 +26,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/manyvids/video.ts b/lib/routes/manyvids/video.ts index cc6d701e3..d442e4216 100644 --- a/lib/routes/manyvids/video.ts +++ b/lib/routes/manyvids/video.ts @@ -17,6 +17,9 @@ export const route: Route = { example: '/manyvids/profile/vids/1001213004', maintainers: ['TonyRL'], handler, + features: { + nsfw: true, + }, }; const getProfileById = (uid: string) => cache.tryGet(`manyvids:profile:${uid}`, () => ofetch(`https://www.manyvids.com/bff/profile/profiles/${uid}`)) as Promise; diff --git a/lib/routes/netflav/index.ts b/lib/routes/netflav/index.ts index 4de6e89ea..9951994fd 100644 --- a/lib/routes/netflav/index.ts +++ b/lib/routes/netflav/index.ts @@ -18,6 +18,9 @@ export const route: Route = { maintainers: ['TonyRL'], handler, url: 'netflav.com/', + features: { + nsfw: true, + }, }; async function handler() { diff --git a/lib/routes/nhentai/search.ts b/lib/routes/nhentai/search.ts index d719758bc..7e17a50fa 100644 --- a/lib/routes/nhentai/search.ts +++ b/lib/routes/nhentai/search.ts @@ -12,6 +12,7 @@ export const route: Route = { features: { antiCrawler: true, supportBT: true, + nsfw: true, }, radar: [ { diff --git a/lib/routes/olevod/vod.ts b/lib/routes/olevod/vod.ts index 7f945ad78..89b5ba825 100644 --- a/lib/routes/olevod/vod.ts +++ b/lib/routes/olevod/vod.ts @@ -16,6 +16,9 @@ export const route: Route = { name: '视频', maintainers: ['fang63625'], handler, + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/olevod/vodlist.ts b/lib/routes/olevod/vodlist.ts index 39ac6f693..e911be1a8 100644 --- a/lib/routes/olevod/vodlist.ts +++ b/lib/routes/olevod/vodlist.ts @@ -15,6 +15,9 @@ export const route: Route = { name: '最新视频', maintainers: ['fang63625'], handler, + features: { + nsfw: true, + }, }; async function handler() { diff --git a/lib/routes/oreno3d/main.ts b/lib/routes/oreno3d/main.ts index 9555aa5e2..f23f5ad64 100644 --- a/lib/routes/oreno3d/main.ts +++ b/lib/routes/oreno3d/main.ts @@ -49,6 +49,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Author Search', maintainers: ['xueli_sherryli'], diff --git a/lib/routes/patreon/feed.ts b/lib/routes/patreon/feed.ts index 286859add..98b0caafe 100644 --- a/lib/routes/patreon/feed.ts +++ b/lib/routes/patreon/feed.ts @@ -22,6 +22,7 @@ export const route: Route = { description: 'The value of the session_id cookie after logging in to Patreon, required to access paid posts', }, ], + nsfw: true, }, radar: [ { diff --git a/lib/routes/pixiv/bookmarks.ts b/lib/routes/pixiv/bookmarks.ts index 085d9b268..0220b0981 100644 --- a/lib/routes/pixiv/bookmarks.ts +++ b/lib/routes/pixiv/bookmarks.ts @@ -20,6 +20,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/pixiv/illustfollow.ts b/lib/routes/pixiv/illustfollow.ts index 92c8d875d..d4e3f7dcf 100644 --- a/lib/routes/pixiv/illustfollow.ts +++ b/lib/routes/pixiv/illustfollow.ts @@ -24,6 +24,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/pixiv/novel-series.ts b/lib/routes/pixiv/novel-series.ts index 9662250d1..6343be281 100644 --- a/lib/routes/pixiv/novel-series.ts +++ b/lib/routes/pixiv/novel-series.ts @@ -30,6 +30,7 @@ Pixiv 登錄後的 refresh_token,用於獲取 R18 小說 supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Novel Series', maintainers: ['SnowAgar25', 'keocheung'], diff --git a/lib/routes/pixiv/novels.ts b/lib/routes/pixiv/novels.ts index 4f2571e14..1ea94c242 100644 --- a/lib/routes/pixiv/novels.ts +++ b/lib/routes/pixiv/novels.ts @@ -37,6 +37,7 @@ refresh_token after Pixiv login, required for accessing R18 novels supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/pixiv/ranking.ts b/lib/routes/pixiv/ranking.ts index 6ea3503fd..7422ba25f 100644 --- a/lib/routes/pixiv/ranking.ts +++ b/lib/routes/pixiv/ranking.ts @@ -135,6 +135,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Rankings', maintainers: ['EYHN'], diff --git a/lib/routes/pixiv/search.ts b/lib/routes/pixiv/search.ts index 1fcf7344a..080040d31 100644 --- a/lib/routes/pixiv/search.ts +++ b/lib/routes/pixiv/search.ts @@ -69,6 +69,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Keyword', maintainers: ['DIYgod'], diff --git a/lib/routes/pixiv/user.ts b/lib/routes/pixiv/user.ts index 968fa5b68..ca074aabe 100644 --- a/lib/routes/pixiv/user.ts +++ b/lib/routes/pixiv/user.ts @@ -20,6 +20,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/pornhub/category-url.ts b/lib/routes/pornhub/category-url.ts index 0e50634b2..7f190f6f0 100644 --- a/lib/routes/pornhub/category-url.ts +++ b/lib/routes/pornhub/category-url.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Video List', maintainers: ['I2IMk', 'queensferryme'], diff --git a/lib/routes/pornhub/category.ts b/lib/routes/pornhub/category.ts index 3896fe7eb..a5d271608 100644 --- a/lib/routes/pornhub/category.ts +++ b/lib/routes/pornhub/category.ts @@ -18,6 +18,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Category', maintainers: ['nczitzk'], diff --git a/lib/routes/pornhub/pornstar.ts b/lib/routes/pornhub/pornstar.ts index 4f8b5a5e8..092619b5b 100644 --- a/lib/routes/pornhub/pornstar.ts +++ b/lib/routes/pornhub/pornstar.ts @@ -61,6 +61,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: getRadarDomin('/pornstar/:username'), name: 'Pornstar', diff --git a/lib/routes/pornhub/search.ts b/lib/routes/pornhub/search.ts index dc938ef0e..56dd63fde 100644 --- a/lib/routes/pornhub/search.ts +++ b/lib/routes/pornhub/search.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Keyword Search', maintainers: ['nczitzk'], diff --git a/lib/routes/pornhub/users.ts b/lib/routes/pornhub/users.ts index 5f22da411..7dbfb4a4f 100644 --- a/lib/routes/pornhub/users.ts +++ b/lib/routes/pornhub/users.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: getRadarDomin('/users/:username'), name: 'Users', diff --git a/lib/routes/rawkuma/manga.ts b/lib/routes/rawkuma/manga.ts index 91e7df397..a403591c5 100644 --- a/lib/routes/rawkuma/manga.ts +++ b/lib/routes/rawkuma/manga.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/sehuatang/user.ts b/lib/routes/sehuatang/user.ts index 7046f2f93..96114e039 100644 --- a/lib/routes/sehuatang/user.ts +++ b/lib/routes/sehuatang/user.ts @@ -26,6 +26,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: '作者文章', maintainers: ['JamYiz'], diff --git a/lib/routes/shuiguopai/index.ts b/lib/routes/shuiguopai/index.ts index e59185fa8..73949f23d 100644 --- a/lib/routes/shuiguopai/index.ts +++ b/lib/routes/shuiguopai/index.ts @@ -20,6 +20,9 @@ export const route: Route = { maintainers: ['nczitzk'], handler, url: 'shuiguopai.com/', + features: { + nsfw: true, + }, }; async function handler(ctx) { diff --git a/lib/routes/sis001/author.ts b/lib/routes/sis001/author.ts index eca6cf227..5f3e629ba 100644 --- a/lib/routes/sis001/author.ts +++ b/lib/routes/sis001/author.ts @@ -18,6 +18,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: '作者', maintainers: ['keocheung'], diff --git a/lib/routes/skeb/following-creators.ts b/lib/routes/skeb/following-creators.ts index 3c149f286..5ad246c15 100644 --- a/lib/routes/skeb/following-creators.ts +++ b/lib/routes/skeb/following-creators.ts @@ -21,6 +21,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Following Creators', maintainers: ['SnowAgar25'], diff --git a/lib/routes/skeb/following-works.ts b/lib/routes/skeb/following-works.ts index 0b3bf0cd1..dcc8c3216 100644 --- a/lib/routes/skeb/following-works.ts +++ b/lib/routes/skeb/following-works.ts @@ -21,6 +21,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Following Works', maintainers: ['SnowAgar25'], diff --git a/lib/routes/skeb/friend-works.ts b/lib/routes/skeb/friend-works.ts index ed01a49f5..cb6c0124b 100644 --- a/lib/routes/skeb/friend-works.ts +++ b/lib/routes/skeb/friend-works.ts @@ -21,6 +21,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Friend Works', maintainers: ['SnowAgar25'], diff --git a/lib/routes/skeb/index.ts b/lib/routes/skeb/index.ts index 7d3503f09..ee9614741 100644 --- a/lib/routes/skeb/index.ts +++ b/lib/routes/skeb/index.ts @@ -33,6 +33,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Skeb', maintainers: ['SnowAgar25'], diff --git a/lib/routes/skeb/search.ts b/lib/routes/skeb/search.ts index 682a23eb8..3a4978a01 100644 --- a/lib/routes/skeb/search.ts +++ b/lib/routes/skeb/search.ts @@ -16,6 +16,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Search Results', maintainers: ['SnowAgar25'], diff --git a/lib/routes/skeb/works.ts b/lib/routes/skeb/works.ts index bb45b8d13..d92e714ac 100644 --- a/lib/routes/skeb/works.ts +++ b/lib/routes/skeb/works.ts @@ -24,6 +24,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Creator Works', maintainers: ['SnowAgar25'], diff --git a/lib/routes/skebetter/illust.ts b/lib/routes/skebetter/illust.ts index c5d0fa943..9abcb4689 100644 --- a/lib/routes/skebetter/illust.ts +++ b/lib/routes/skebetter/illust.ts @@ -15,6 +15,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Illust', maintainers: ['SnowAgar25'], diff --git a/lib/routes/skebetter/index.ts b/lib/routes/skebetter/index.ts index 3ccd93e0b..2740ded52 100644 --- a/lib/routes/skebetter/index.ts +++ b/lib/routes/skebetter/index.ts @@ -15,6 +15,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Hot', maintainers: ['SnowAgar25'], diff --git a/lib/routes/skebetter/manga.ts b/lib/routes/skebetter/manga.ts index 4b63cf301..a728a3597 100644 --- a/lib/routes/skebetter/manga.ts +++ b/lib/routes/skebetter/manga.ts @@ -15,6 +15,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'Manga', maintainers: ['SnowAgar25'], diff --git a/lib/routes/t66y/post.ts b/lib/routes/t66y/post.ts index 06cdd332e..a4ace5a57 100644 --- a/lib/routes/t66y/post.ts +++ b/lib/routes/t66y/post.ts @@ -42,6 +42,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: '帖子跟踪', maintainers: ['cnzgray'], diff --git a/lib/routes/uraaka-joshi/uraaka-joshi-user.ts b/lib/routes/uraaka-joshi/uraaka-joshi-user.ts index b675dd0b8..78d34cc77 100644 --- a/lib/routes/uraaka-joshi/uraaka-joshi-user.ts +++ b/lib/routes/uraaka-joshi/uraaka-joshi-user.ts @@ -17,6 +17,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/uraaka-joshi/uraaka-joshi.ts b/lib/routes/uraaka-joshi/uraaka-joshi.ts index 008c17828..0fa0e1016 100644 --- a/lib/routes/uraaka-joshi/uraaka-joshi.ts +++ b/lib/routes/uraaka-joshi/uraaka-joshi.ts @@ -15,6 +15,9 @@ export const route: Route = { maintainers: ['SettingDust', 'Halcao'], handler, url: 'uraaka-joshi.com/', + features: { + nsfw: true, + }, }; async function handler() { diff --git a/lib/routes/wnacg/category.ts b/lib/routes/wnacg/category.ts index 8408e247a..c1bc7c386 100644 --- a/lib/routes/wnacg/category.ts +++ b/lib/routes/wnacg/category.ts @@ -14,4 +14,7 @@ export const route: Route = { ], handler, url: 'wnacg.com/albums.html', + features: { + nsfw: true, + }, }; diff --git a/lib/routes/wnacg/index.ts b/lib/routes/wnacg/index.ts index ec09c602f..215cfd1fc 100644 --- a/lib/routes/wnacg/index.ts +++ b/lib/routes/wnacg/index.ts @@ -13,4 +13,7 @@ export const route: Route = { ], handler, url: 'wnacg.com/albums.html', + features: { + nsfw: true, + }, }; diff --git a/lib/routes/wnacg/tag.ts b/lib/routes/wnacg/tag.ts index c43e5dc1f..27f3e0b62 100644 --- a/lib/routes/wnacg/tag.ts +++ b/lib/routes/wnacg/tag.ts @@ -14,4 +14,7 @@ export const route: Route = { ], handler, url: 'wnacg.com/albums.html', + features: { + nsfw: true, + }, }; diff --git a/lib/routes/xsijishe/forum.ts b/lib/routes/xsijishe/forum.ts index 9cfd086ec..7e328c3c0 100644 --- a/lib/routes/xsijishe/forum.ts +++ b/lib/routes/xsijishe/forum.ts @@ -27,6 +27,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: '论坛', maintainers: ['akynazh'], diff --git a/lib/routes/xsijishe/rank.ts b/lib/routes/xsijishe/rank.ts index 0560634d9..b744df934 100644 --- a/lib/routes/xsijishe/rank.ts +++ b/lib/routes/xsijishe/rank.ts @@ -38,6 +38,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: '排行榜', maintainers: ['akynazh', 'AiraNadih'], diff --git a/lib/routes/zaimanhua/comic.ts b/lib/routes/zaimanhua/comic.ts index 25ea13c6f..3a737cee3 100644 --- a/lib/routes/zaimanhua/comic.ts +++ b/lib/routes/zaimanhua/comic.ts @@ -19,6 +19,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/zaimanhua/update.ts b/lib/routes/zaimanhua/update.ts index 28d15f9f0..4afb98e82 100644 --- a/lib/routes/zaimanhua/update.ts +++ b/lib/routes/zaimanhua/update.ts @@ -18,6 +18,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, radar: [ { diff --git a/lib/routes/zodgame/forum.ts b/lib/routes/zodgame/forum.ts index eceec172a..79a1118cc 100644 --- a/lib/routes/zodgame/forum.ts +++ b/lib/routes/zodgame/forum.ts @@ -27,6 +27,7 @@ export const route: Route = { supportBT: false, supportPodcast: false, supportScihub: false, + nsfw: true, }, name: 'forum', maintainers: ['FeCCC'],