[ { "articleStyle": 0, "customOrder": 0, "enableJs": true, "enabled": true, "enabledCookieJar": true, "header": "{\n \"User-Agent\": \"Mozilla/5.0 (Linux; Android 8.0.0; MI 5s Plus Build/OPR1.170623.032; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36\",\n \"upgrade-insecure-requests\": \"1\",\n \"accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\",\n \"accept-language\": \"zh-CN,en-US;q=0.9\",\n \"cookie\": \"down_ip=1\",\n \"x-requested-with\": \"cn.nr19.mbrowser\"\n}", "lastUpdateTime": 1739808000251, "loginUrl": "a = String(source.sourceComment);\nreg1 = /\\s*『.*?』\\s*/g\nreg2 = /.+《(.*?)》.*/\nsortName = []\n\nb = a.match(reg1);\nb = a.split(reg1).map((list, i) => {\n if (!/^\\s*$/.test(list)) {\n try {\n sort = b[i - 1].match(/『(.*?)』/)[1] + \"::\";\n }\n catch (err) {\n sort = \"🌟 精选推荐::\"\n }\n\n url = [];\n Sort = [\"\"];\n list.split(/\\s*\\n\\s*/).map(text => {\n text = String(text);\n if (text.split('::').length == 2 && /^(?!.*(&&|•)).*::/.test(text)) {\n Sort.push(text);\n } else {\n text.split(/\\s*(&&|•)\\s*/).map(text => {\n if (text.split('::').length == 2) Sort.push(text);\n else if (!/^\\s*::/.test(sort) && reg2.test(text)) url.push(text);\n });\n }\n });\n return sort += url.join('•') + Sort.join('\\n');\n }\n return list\n}).map(text => {\n text = String(text).replace(/^\\s*::\\s*|\\s*::\\s*$/g, '');\n\n text = text.split('\\n').map(text=>{\n if (/《/.test(text)) text = text.replace(/^(.+?::)(https?\\:\\/\\/(www.)?baidu.com\\/?\\?wd=\\s*)*/, '$1https://www.baidu.com/?wd=');\n\n\n// 更改连接符\n return text.replace(/\\s*(♞♞|★)\\s*/g, '•');\n }).join('\\n');\n if (/::/.test(text)) {\n sortName.push(text.replace(/::.*/g, ''))\n return text\n }\n return \"\";\n}).join('\\n');\n\n\n\n\n\n\n\n\n\n\nfunction set(json) {\n json = JSON.stringify(json).replace(/(\".+?)(\\d[,}])/g,'\\n\\t\\t$1 $2').replace(/}$/,'\\n}');\n return source.setVariable(json);\n}\n\nfunction get() {\n try {\n v = JSON.parse(source.getVariable());\n } catch (e) {\n v = null\n }\n if (v == null || Array.isArray(v)) v = {};\n}\nget()\n\nsortName = sortName.join(',').replace(/\\s*\\n\\s*/g, ',').split(',').map($ => {\n $ = $.trim()\n if (v[$] == undefined) v[$] = 1;\n return $;\n}).join(',');\nb = b.split('\\n').map(text => {\n t = text.trim()\n return v[t.split(/\\s*::/)[0]] ? t : \"\"\n}).join('\\n');\nset(v);\n\n\n//log字符串\nfunction login(t) {\n if (t == undefined) return true;\n java.log(t);\n java.toast(t);\n}\n\n\n//log当前分类状态\nfunction look(type) {\n get();\n if (JSON.stringify(v) == \"{}\") $('全部分类');\n if(type){\n t = [{name:\"     ༺ˇ»`ʚ 分类选择 ɞ´«ˇ༻     \",type:\"button\",action:\"$('全部分类')\"}\n ,{name:\"  查看分类设置  \",type:\"button\",action:\"look(0)\"}\n ,{name:\"  格式分组名称  \",type:\"button\",action:\"look(1)\"}];\n for (key in v) t.push({\n name:key,\n type:\"button\",\n action:\"$('\"+key+\"')\"\n });\n t.push({name: \"       反馈Q群:365976134       \",type:\"button\",action:\"http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=x8r6m0bYYon_pCgT0BRc1ohwZmkkY61Q&authKey=DpmUioCvx45WjRRBnbRT2DsJ7LL6DNY3uau%2BFKPgR%2FSKz4EgYqUjEU5tJNi%2BkNPl&noverify=0&group_code=365976134\"});\n set(t)\n t = \"【格式发现】\\n\\t❗数组是复制到登录ui的❗\\nemmm,登录日志好像没办法长按复制。\\n已保存到源变量,去源变量那里复制吧。\";\n }\n else{\n t = \"【分类状态】\";\n for (key in v) t += '\\n\\t' + key + '=>' + (v[key] ? '启用' : '禁用');\n }\n return login(t);\n}\n\n\n//启用/禁用\nfunction $(sort, name) {\n get();\n if (name == undefined) name = sort.split(',')[0];\n name = name.trim()\n if (name == '全部分类') {\n sort = sortName;\n } else { //屏蔽错误分类\n sort1 = []\n sort2 = sortName.split(',')\n sort.split(',').map(key1 => {\n key1 = key1.trim();\n for (i in sort2) {\n key2 = sort2[i].trim();\n if (key1 == key2) {\n sort1.push(key1);\n break;\n }\n }\n })\n sort = sort1.join(',')\n }\n if (!/^\\s*$/.test(sort)) {\n sort = String(sort).split(',');\n f = sort.length > 1 ? '分组' : '分类';\n V = v[sort[0]];\n if (name == '全部分类') v = {};\n login('【更改成功】\\n『' + f + '』 ' + name + ': 已' + (V ? '禁用' : '启用'));\n sort.map(key => v[key] = V ? 0 : 1);\n return set(v);\n }\n return login('【无法更改】\\n原因:没有有效分类(分类名称不正确)')\n}", "ruleArticles": "\n try {\n $ = JSON.parse(src).text;\n if ($ == \"no file\") $ = [];\n} catch (err) {\n reg = /^(https?\\:\\/\\/((www|m)\\.)?baidu\\.com\\/?\\?wd=\\s*)+/i;\n\n if (baseUrl == source.sourceUrl) {\n $ = [{\n name_all: \"无法获取分类?可能没有启用\",\n time: \"右上角 - 【登录】启用,再【刷新分类】\"\n}]\n}\n\n\n\n //网站整合\n else if (baseUrl.match(reg)) {\n $ = [];\n baseUrl.replace(reg, '').\n split(/\\s*•\\s*/).map($$ => $.push({\n name_all: $$.match(/.*?《(.*?)》/)[1],\n time: $$.match(/◎.*?◎/) ? $$.match(/.*?◎(.*?)◎/)[1] : \"\",\n uri: $$.match(/【.*?】/) ? $$.match(/.*?【(.*?)】/)[1] : \"\",\n url: $$.match(/^([^【《◎]*),?/)[1]\n}));\n}\n\n\n\n //蓝奏云\n else {\n\n //蓝奏云非分组链接\n if (String(java.getString('text.举报文件@href')).length) {\n $ = [{\n name_all: String(java.getString('class.md@textNodes')),\n icon: String(java.getString('class.md@textNodes')).replace(/.*\\./, ''),\n size: String(java.getString('class.mtt@text')).replace(/\\( /, '').replace(/ \\)/, ''),\n time: String(java.getString('class.mf@textNodes')).replace(/.*\\n/, ''),\n uri: baseUrl.replace(/^(.+com).*\\/(.+)$/, '$2'),\n url: baseUrl.replace(/^(.+com).*\\/(.+)$/, '$1/tp/$2')\n}]\n}\n\n\n //取消分享\n else if (String(java.getString('.off@text')).match(/取消分享/)) {\n $ = [{\n name_all: java.getString('.off@text'),\n time: baseUrl.replace(/[#\\?].*/g, ''),\n url: baseUrl.replace(/[#\\?].*/g, '')\n}]\n}\n\n\n //蓝奏云分组链接\n else {\n json = [];\n name = java.getString('.user-radio@text||title@text')\n java.getElements('#folder .mlink').forEach(a => {\n java.setContent(a);\n json.push({\n name_all: java.getString('.filename@textNodes'),\n url: java.getString('a@href'),\n time: '🗂️ folder 📑 ' + (String(java.getString('.filesize@text')) || name)\n})\n})\n java.setContent(src);\n\n\n mat = baseUrl.match(/^(.*?\\.com)[^##]*\\/(.+)$/)\n url = mat[1]\n uri = mat[2]\n\n function $(reg) {\n return uri.match(reg) ? true : false\n}\n\n\n //get【pwd】(链接提取码)\n pwd =\n $(/##[^【]/) ? uri.match(/##(.*?)(【|$)/)[1] :\n \"\";\n\n\n\n head = {\n method: \"POST\",\n params: {\n uri: uri,\n img: $(/【[^】]/) ? uri.match(/【([^】]+)/)[1] : \"\"\n}\n}\n\n\n\n\n //get 【body】\n eval(src.match(/var pgs;([\\s\\S]*?pgs.+;)/)[1]);\n eval('$=' + src.match(/data :([\\s\\S]*?\\})/)[1]);\n head.body = Object.keys($).map(key => key + \"=\" + $[key]).join('&');\n\n\n //补全【url】\n url += \"/filemoreajax.php,\" + JSON.stringify(head);\n\n\n\n //ajax\n $ = JSON.parse(java.ajax(url));\n $ = json.concat($.text != 0 ? $.text :\n\n //密码错误提示\n [{\n name_all: $.info,\n time: uri.replace(/[#\\?].*/, '') + $.info,\n url: baseUrl.replace(/[#\\?].*/, '')\n}])\n baseUrl = url\n}\n}\n}\n java.put('url', baseUrl);\n JSON.stringify($);\n$.[*]", "ruleDescription": "❗️0、0、开始❗️\n❗️0、0、结束❗️\n\n\n\n\n{{}}@js:\nurl=String(java.getString('$.url')).trim();\n\n\n\n//【..导入】\nif(url.match(/^..导入/)){\n uri=url.replace(/导入.*/,'');\n url=url.replace(/.*导入/,'');\n path =\n (uri==\"一键\"||uri==\"自动\")?\"auto\":\n uri==\"书源\"?\"bookSource\":\n uri==\"订阅\"?\"rssSource\":\n uri==\"净化\"?\"replaceRule\":\n url==\"目录\"?\"textTocRule\":\n url==\"TTS\"?\"httpTTS\":\n url==\"主题\"?\"theme\":\n url==\"排版\"?\"readConfig\":\n \"\";\n url=url.match(/^legado\\:\\/\\//)?url:`legado://import/${path}?src=`+url;\n url = String(url).replace(/^(.*?src=)(.*)/,(mat, $1, $2)=>{\n return $1+encodeURIComponent($2);\n });\n\n\n result=`{{$.name_all}}\n\n

{{$.name_all}}

\n
导入失败?多试试几次
\n\n
\n↓资源链接,点击复制\n一键导入\n\n{{$.time}}\n
\n\n`}\n\n\n\n//【自定义html】\nelse if(url.match(/\\d+、\\d+、/)){\n reg=new RegExp('❗️'+url+'开始❗️\\\\s*([\\\\s\\\\S]+?)\\\\s*❗️'+url+'结束❗️');\n//默认禁止放大缩小\n result=result.match(reg)?\n ''+result.match(reg)[1]:'
未找到对应html'\n}\n\nelse{result=''}", "ruleImage": "$.uri@js:\nu0 = String(java.get('url'));\nu1 = u0.match(/uri\":\"([^\"]+)/);\nu2 = u0.match(/img\":\"([^\"]+)/);\nuri=String(result)||(u2?u2[1]:u1?u1[1]:\"\");\nfunction $(reg){\n return uri.match(reg)?true:false\n}\n\n\nsrc =\n $(/https?:\\/\\/|^\\d{3}(\\/\\d\\d){3}$/)? uri:\n $(/【[^】]/)? baseUrl.match(/【(.*?)(】|$)/)[1]:\n\n // 默认封面\n \"\"||source.sourceIcon;\n\n// 补全链接\nsrc.match(/^\\d{3}(\\/\\d\\d){3}$/)?`http://avatar.coolapk.com/data/${src}_avatar_middle.jpg`:src", "ruleLink": "$.id@js:\nurl=`{{$.url}}`;\nif(result)url+=`/tp/{{$.id}}`;\nString(url).trim().replace(/^..导入/,'');", "ruleNextPage": "@js:\ntry {\n url = String(java.get('url'));\n url = url.replace(/(pg=)(\\d+)/, (mat, $1, $2) => {\n return $1 + (~~$2 + 1)\n }).replace(url, '');\n} catch (err) {\n url = \"\"\n}\nurl", "rulePubDate": "💾 {{$.icon}} 📥 {{$.size}} ⏱️ {{$.time}}\n##💾  📥  ⏱️\\s*", "ruleTitle": "$.name_all", "sortUrl": "@js:eval(String(source.loginUrl));b", "sourceComment": "Pixiv 书源订阅(更新📆:2025-02-18)\n\n更新后/设置源变量后,要【刷新分类】\n刷新分类,刷新分类,刷新分类\n\n\n『🅿️丨Pixiv 书源』\nhttps://github.com/DowneyRem/PixivSource《⬇️ 导入 Pixiv 等书源 ⬇️》【https://github.githubassets.com/assets/GitHub-Mark-ea2971cee799.png】◎✍️ windyhusky & DowneyRem   🔗 长期更新◎\n\n一键导入https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/pixiv.json《Pixiv 书源》【https://asset.brandfetch.io/idIlKj_n7C/idSsbP7h1m.png】◎🏷️ Pixiv   ✅ 单篇   ✅ 系列   🔗 长期更新◎\n\n一键导入https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/linpx.json《Linpx & 兽人小说 书源》【https://furrynovel.ink/apple-touch-icon.png】◎🏷️ Linpx   🏷️ 兽人小说   ✅ 单篇   ✅ 系列   🔗 长期更新◎\n\n一键导入https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/btsrk.json《Pixiv & Linpx & 兽人小说 订阅源》【https://www.furrynovel.com/static/icon.png】◎🏷️Pixiv   🏷️ Linpx   🏷️ 兽人小说   🔗 长期更新◎\n\n一键导入https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/books.json《书源分享/ books 订阅源》◎🏷️ 订阅源   🔗 长期更新◎\n\n一键导入https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/import.json《检查更新 import 订阅源》◎📌 全选-确认-覆盖导入-退出-刷新分类   🔗 长期更新◎\n\n\n『🅿️丨Pixiv 其他』\nhttps://github.com/Luoyacheng/yuedu《⬇️ 导入 Pixiv 书源 (APP API) ⬇️》【https://github.githubassets.com/assets/GitHub-Mark-ea2971cee799.png】◎✍️ 洛娅橙   🏷️ Pixiv 书源  ◎\n\n一键导入https://cdn.jsdelivr.net/gh/Luoyacheng/yuedu@main/%E4%B9%A6%E6%BA%90/pixiv%E5%B0%8F%E8%AF%B4/pixiv.json《Pixiv 书源(APP API)》【https://asset.brandfetch.io/idIlKj_n7C/idSsbP7h1m.png】◎✍️ 洛娅橙   ✅ 单篇   ✅ 系列  ◎\n\n\nhttps://akaito.xyz/post/Legado《⬇️ 导入 Pixiv 小说目录规则 ⬇️》【https://akaito.xyz/favicon.ico】◎✍️ 一片痴心俱成灰   🏷️ Pixiv 本地小说目录规则  ◎\n\n一键导入https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/pixivToc.json《Pixiv 目录规则》【https://asset.brandfetch.io/idIlKj_n7C/idSsbP7h1m.png】◎✍️ 一片痴心俱成灰   🏷️ 本地小说   🏷️ 目录规则  ◎\n\n\nhttps://books.fishhawk.top/forum/66a8e77866bff10c16e51d6a《⬇️ 导入 轻小说机翻机器人 书源 ⬇️》【https://books.fishhawk.top/icon.svg】◎✍️ holzora   🏷️ 轻小说机翻机器人   ◎\n\n一键导入https://static.kksk.io/uuyr/68d13b5fa22c19c5ad2a5d08c0017f90.json《轻小说机翻机器人 书源》【https://books.fishhawk.top/icon.svg】◎✍️ holzora   🏷️ Pixiv 外文小说  ◎\n\n\n『🔎丨不世玄奇』\nhttps://github.com/bushixuanqi/book-source《⬇️ 一键导入 不世玄奇 的书源 ⬇️》【https://github.githubassets.com/assets/GitHub-Mark-ea2971cee799.png】◎✍️ 不世玄奇   🏷️ 通用书源 & 通用订阅   📆 2023-05   🔗 停更◎\n\n一键导入https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/normal.json《通用书源 & 搜索引擎书源》【002/93/87/83】◎ 🏷️ 通用书源   📆 2023-05   🔗 停更◎\n\n一键导入https://bushixuanqi.oss-cn-chengdu.aliyuncs.com/通用发现v5.json【002/93/87/83】《聚合搜索 / 通用订阅》◎🏷️ 通用订阅   📆 2023-04   🔗 停更◎\n\n\n『📚丨书源整理』\nhttps://shuyuan.yiove.com《📖丨三千书源》◎✍️ Yiove 书源仓库◎【https://shuyuan.yiove.com/logo.jpeg】\n\nhttps://yuedu.miaogongzi.net/gx.html《🏣丨喵公子书源管理》◎✍️ 喵公子◎【003/77/52/16】\n\nhttps://legado.aoaostar.com《📕丨阅读 APP 源》◎✍️ aoaostar   📆 标示日期为采集刷新日期◎【https://avatars.githubusercontent.com/u/86001674】\n\nhttps://www.yckceo.com/yuedu/shuyuan/index.html《🏚️丨源仓库-阅读书源》◎✍️ 我不是木木◎【002/88/03/61】\n\nhttps://flowus.cn/ycheng/share/923f5a35-6dcf-47d1-b8eb-b9c5ef3ed39b《🗞️丨一程书源订阅源阅读合集》◎✍️ 一程   🏷️ 综合   ◎【002/55/79/99】", "sourceGroup": "🅿️ Pixiv,🐲 Furry,书源", "sourceIcon": "https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/doc/pic/Legado-Pixiv.png", "sourceName": "书源订阅", "sourceUrl": "https://codeberg.org/DowneyRem/PixivSource", "type": 0, "variableComment": "【刷新分类】【刷新分类】【刷新分类】" } ]