耽免时光|小说@tlyanyu
https://bltime.cc/pages/novel/novel
liang-qian-889 (1067)1天前
YX源仓库:http://yx.ccute.xyz/ 无需登录,可看最新章节@tlyanyu
{ "bookSourceComment": "YX源仓库:http:\/\/yx.ccute.xyz\/\n无需登录,可看最新章节@tlyanyu", "bookSourceGroup": "女频,BL", "bookSourceName": "耽免时光|小说@tlyanyu", "bookSourceType": 0, "bookSourceUrl": "https:\/\/bltime.cc\/pages\/novel\/novel", "customOrder": 1, "enabled": true, "enabledCookieJar": false, "enabledExplore": true, "exploreUrl": "[\n{\"title\":\"人气排行\",\"url\":\"view_count\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.4}},\n{\"title\":\"最近更新\",\"url\":\"publish_date\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.4}}\n]", "header": "{\n\"User-Agent\":\n\"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\"\n}", "jsLib": "{\"crypto\": \"https:\/\/cdn.bootcss.com\/crypto-js\/3.1.9-1\/crypto-js.min.js\"}", "lastUpdateTime": "1760770852279", "loginUrl": "https:\/\/bltime.cc", "respondTime": 180000, "ruleBookInfo": { "author": "creator_name", "coverUrl": "cover_url", "init": "<js>\nfunction createSign(params) {\n\tvar str = '';\n\tObject.keys(params).sort().forEach((key) => {\n\t\tif (params[key]) {\n\t\t\tstr += `&${key}=${params[key]}`;\n\t\t}\n\t});\n\treturn CryptoJS.HmacMD5(str.slice(1), 'c17DTXDNhSc0ea9AQMdUUQ==').toString();\n}\n\nconst timestamp = Date.now();\nlet url = \"https:\/\/api.next.bspapp.com\/client\";\nlet body = {\n\t\"method\": \"serverless.auth.user.anonymousAuthorize\",\n\t\"params\": \"{}\",\n\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\"timestamp\": timestamp\n};\n\nlet sign = createSign(body);\n\nlet headers = {\n\t\"Content-Type\": \"application\/json\",\n\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\"x-serverless-sign\": sign\n};\n\nlet response = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body),headers).body());\n\nif(response.success){\n\tconst accessToken = response.data.accessToken;\n\tconst idValue = baseUrl.match(\/id=([^&]+)\/)[1];\n\n\tconst timestamp1 = Date.now();\n\tconst params = JSON.stringify({\n\t\t\"functionTarget\": \"DCloud-clientDB\",\n\t\t\"functionArgs\": {\n\t\t\t\"command\": {\n\t\t\t\t\"$db\": [\n\t\t\t\t\t{ \"$method\": \"collection\", \"$param\": [\"bl-time-novel\"] },\n\t\t\t\t\t{ \"$method\": \"where\", \"$param\": [`_id=='${idValue}'`] },\n\t\t\t\t\t{ \"$method\": \"field\", \"$param\": [\"_id,cover_url,title,tags,word_number,view_count,excerpt,introduction,creator_id,creator_name,creator_avatar,is_completed,novel_status,contributor\"] },\n\t\t\t\t\t{ \"$method\": \"skip\", \"$param\": [0] },\n\t\t\t\t\t{ \"$method\": \"limit\", \"$param\": [20] },\n\t\t\t\t\t{ \"$method\": \"get\", \"$param\": [{}] }\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t});\n\tlet body1 = {\n\t\t\"method\": \"serverless.function.runtime.invoke\",\n\t\t\"params\": params,\n\t\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\t\"timestamp\": timestamp1,\n\t\t\"token\": accessToken\n\t};\n\tlet sign1 = createSign(body1);\n\tlet headers1 = {\n\t\t\"Content-Type\": \"application\/json\",\n\t\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\t\"x-basement-token\": accessToken,\n\t\t\"x-serverless-sign\": sign1\n\t};\n\tlet response1 = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body1),headers1).body());\n\t\n\tconst timestamp2 = Date.now();\n\tconst params2 = JSON.stringify({\n\t \"functionTarget\": \"DCloud-clientDB\",\n\t \"functionArgs\": {\n\t\t\"command\": {\n\t\t \"$db\": [\n\t\t\t{ \"$method\": \"collection\", \"$param\": [\"bl-time-chapter\"] },\n\t\t\t{ \"$method\": \"where\", \"$param\": [\"novel_id=='\" + idValue + \"'&&chapter_status==1\"] },\n\t\t\t{ \"$method\": \"field\", \"$param\": [\"_id,chapter_title,last_modify_date\"] },\n\t\t\t{ \"$method\": \"orderBy\", \"$param\": [\"chapter_index asc\"] },\n\t\t\t{ \"$method\": \"skip\", \"$param\": [0] },\n\t\t\t{ \"$method\": \"limit\", \"$param\": [500] },\n\t\t\t{ \"$method\": \"get\", \"$param\": [{}] }\n\t\t ]\n\t\t}\n\t }\n\t});\n\tlet body2 = {\n\t\t\"method\": \"serverless.function.runtime.invoke\",\n\t\t\"params\": params2,\n\t\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\t\"timestamp\": timestamp2,\n\t\t\"token\": accessToken\n\t};\n\tlet sign2 = createSign(body2);\n\tlet headers2 = {\n\t\t\"Content-Type\": \"application\/json\",\n\t\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\t\"x-basement-token\": accessToken,\n\t\t\"x-serverless-sign\": sign2\n\t};\n\tlet response2 = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body2),headers2).body());\n\n response1.data.data[0].latestChapter = response2.data.data[response2.data.data.length - 1].chapter_title;\n\tresult = response1;\n}result;\n<\/js>\n$.data.data[0]", "intro": "introduction", "kind": "tags", "lastChapter": "latestChapter", "name": "title", "wordCount": "word_number" }, "ruleContent": { "content": "<js>\nfunction createSign(params) {\n\tvar str = '';\n\tObject.keys(params).sort().forEach((key) => {\n\t\tif (params[key]) {\n\t\t\tstr += `&${key}=${params[key]}`;\n\t\t}\n\t});\n\treturn CryptoJS.HmacMD5(str.slice(1), 'c17DTXDNhSc0ea9AQMdUUQ==').toString();\n}\nconst timestamp = Date.now();\nlet body = {\n\t\"method\": \"serverless.auth.user.anonymousAuthorize\",\n\t\"params\": \"{}\",\n\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\"timestamp\": timestamp\n};\n\nlet sign = createSign(body);\n\nlet headers = {\n\t\"Content-Type\": \"application\/json\",\n\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\"x-serverless-sign\": sign\n};\n\nlet response = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body),headers).body());\n\nif(response.success){\n\tconst accessToken = response.data.accessToken;\n\tconst idValue = baseUrl.match(\/id=([^&]+)\/)[1];\n\n\tconst timestamp2 = Date.now();\n\tconst params2 = JSON.stringify({\n\t \"functionTarget\": \"DCloud-clientDB\",\n\t \"functionArgs\": {\n\t\t\"command\": {\n\t\t \"$db\": [\n\t\t\t{\"$method\": \"collection\", \"$param\": [\"bl-time-chapter\"]},\n\t\t\t{\"$method\": \"where\", \"$param\": [{\"_id\": idValue}]},\n\t\t\t{\"$method\": \"get\", \"$param\": []}\n\t\t ]\n\t\t}\n\t }\n\t});\n\tlet body2 = {\n\t\t\"method\": \"serverless.function.runtime.invoke\",\n\t\t\"params\": params2,\n\t\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\t\"timestamp\": timestamp2,\n\t\t\"token\": accessToken\n\t};\n\tlet sign2 = createSign(body2);\n\tlet headers2 = {\n\t\t\"Content-Type\": \"application\/json\",\n\t\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\t\"x-basement-token\": accessToken,\n\t\t\"x-serverless-sign\": sign2\n\t};\n\tlet response2 = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body2),headers2).body());\n\tresult = response2.data.data[0].chapter_content;\n}result;\n<\/js>\n@html" }, "ruleExplore": { "author": "$.creator_name", "bookList": "<js>\nfunction createSign(params) {\n\tvar str = '';\n\tObject.keys(params).sort().forEach((key) => {\n\t\tif (params[key]) {\n\t\t\tstr += `&${key}=${params[key]}`;\n\t\t}\n\t});\n\treturn CryptoJS.HmacMD5(str.slice(1), 'c17DTXDNhSc0ea9AQMdUUQ==').toString();\n}\nconst timestamp = Date.now();\nlet body = {\n\t\"method\": \"serverless.auth.user.anonymousAuthorize\",\n\t\"params\": \"{}\",\n\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\"timestamp\": timestamp\n};\n\nlet sign = createSign(body);\n\nlet headers = {\n\t\"Content-Type\": \"application\/json\",\n\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\"x-serverless-sign\": sign\n};\n\nlet response = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body),headers).body());\n\nif(response.success){\n\tconst accessToken = response.data.accessToken;\n\tconst timestamp2 = Date.now();\n let orderBy = \"\";\n if( baseUrl.match(\/view_count\/) ) orderBy = \"view_count\";\n else orderBy = \"publish_date\";\n\tconst params2 = JSON.stringify({\n \"functionTarget\": \"DCloud-clientDB\",\n \"functionArgs\": {\n \"command\": {\n \"$db\": [\n {\"$method\": \"collection\", \"$param\": [\"bl-time-novel\"]},\n {\"$method\": \"where\", \"$param\": [{\"novel_status\": 1, \"publish_date\": {\"$db\": [{\"$method\": \"command\"}, {\"$method\": \"gte\", \"$param\": [1672502400000]}]}}]},\n {\"$method\": \"field\", \"$param\": [\"_id,title,excerpt,creator_id,creator_name,creator_avatar,is_completed,cover_url,tags,word_number,view_count,novel_status\"]},\n {\"$method\": \"orderBy\", \"$param\": [orderBy+\" desc\"]},\n {\"$method\": \"skip\", \"$param\": [0]},\n {\"$method\": \"limit\", \"$param\": [500]},\n {\"$method\": \"get\", \"$param\": [{}]}\n ]\n }\n }\n});\n\tlet body2 = {\n\t\t\"method\": \"serverless.function.runtime.invoke\",\n\t\t\"params\": params2,\n\t\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\t\"timestamp\": timestamp2,\n\t\t\"token\": accessToken\n\t};\n\tlet sign2 = createSign(body2);\n\tlet headers2 = {\n\t\t\"Content-Type\": \"application\/json\",\n\t\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\t\"x-basement-token\": accessToken,\n\t\t\"x-serverless-sign\": sign2\n\t};\n\tlet response2 = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body2),headers2).body());\n\tresult = JSON.stringify(response2);\n}result;\n<\/js>\n$.data.data", "bookUrl": "https:\/\/bltime.cc\/pages\/novel\/detail?id={{$._id}}&creator_id={{$.creator_id}}", "coverUrl": "$.cover_url", "intro": "$.excerpt", "kind": "$.tags", "name": "$.title", "wordCount": "$.word_number" }, "ruleSearch": { "author": "$.creator_name", "bookList": "<js>\nfunction createSign(params) {\n\tvar str = '';\n\tObject.keys(params).sort().forEach((key) => {\n\t\tif (params[key]) {\n\t\t\tstr += `&${key}=${params[key]}`;\n\t\t}\n\t});\n\treturn CryptoJS.HmacMD5(str.slice(1), 'c17DTXDNhSc0ea9AQMdUUQ==').toString();\n}\nconst timestamp = Date.now();\nlet body = {\n\t\"method\": \"serverless.auth.user.anonymousAuthorize\",\n\t\"params\": \"{}\",\n\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\"timestamp\": timestamp\n};\n\nlet sign = createSign(body);\n\nlet headers = {\n\t\"Content-Type\": \"application\/json\",\n\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\"x-serverless-sign\": sign\n};\n\nlet response = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body),headers).body());\n\nif(response.success){\n\tconst accessToken = response.data.accessToken;\n const keyword = decodeURIComponent(baseUrl).match(\/\"([^\"]+)\"\/)[1];\n\tconst timestamp2 = Date.now();\n\tconst params2 = JSON.stringify({\n \"functionTarget\": \"DCloud-clientDB\",\n \"functionArgs\": {\n \"command\": {\n \"$db\": [\n { \"$method\": \"collection\", \"$param\": [\"bl-time-novel\"] },\n { \"$method\": \"where\", \"$param\": [\"\\\"novel_status\\\" != 0 && (\/\" + keyword + \"\/i.test(title) || \/\" + keyword + \"\/i.test(creator_name))\"] },\n { \"$method\": \"field\", \"$param\": [\"_id,title,excerpt,creator_id,creator_name,is_completed,cover_url,tags,view_count,word_number,novel_status,publish_date\"] },\n { \"$method\": \"orderBy\", \"$param\": [\"publish_date desc\"] },\n { \"$method\": \"limit\", \"$param\": [200] },\n { \"$method\": \"get\", \"$param\": [] }\n ]\n }\n }\n});\n\tlet body2 = {\n\t\t\"method\": \"serverless.function.runtime.invoke\",\n\t\t\"params\": params2,\n\t\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\t\"timestamp\": timestamp2,\n\t\t\"token\": accessToken\n\t};\n\tlet sign2 = createSign(body2);\n\tlet headers2 = {\n\t\t\"Content-Type\": \"application\/json\",\n\t\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\t\"x-basement-token\": accessToken,\n\t\t\"x-serverless-sign\": sign2\n\t};\n\tlet response2 = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body2),headers2).body());\n\tresult = JSON.stringify(response2);\n}result;\n<\/js>\n$.data.data", "bookUrl": "https:\/\/bltime.cc\/pages\/novel\/detail?id={{$._id}}&creator_id={{$.creator_id}},{\"webView\":true}", "checkKeyWord": "重生", "coverUrl": "$.cover_url", "intro": "$.excerpt", "kind": "$.tags", "name": "$.title", "wordCount": "$.word_number" }, "ruleToc": { "chapterList": "<js>\nfunction createSign(params) {\n\tvar str = '';\n\tObject.keys(params).sort().forEach((key) => {\n\t\tif (params[key]) {\n\t\t\tstr += `&${key}=${params[key]}`;\n\t\t}\n\t});\n\treturn CryptoJS.HmacMD5(str.slice(1), 'c17DTXDNhSc0ea9AQMdUUQ==').toString();\n}\nconst timestamp = Date.now();\nlet body = {\n\t\"method\": \"serverless.auth.user.anonymousAuthorize\",\n\t\"params\": \"{}\",\n\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\"timestamp\": timestamp\n};\n\nlet sign = createSign(body);\n\nlet headers = {\n\t\"Content-Type\": \"application\/json\",\n\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\"x-serverless-sign\": sign\n};\n\nlet response = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body),headers).body());\n\nif(response.success){\n\tconst accessToken = response.data.accessToken;\n\tconst idValue = baseUrl.match(\/id=([^&]+)\/)[1];\n\n\tconst timestamp2 = Date.now();\n\tconst params2 = JSON.stringify({\n\t \"functionTarget\": \"DCloud-clientDB\",\n\t \"functionArgs\": {\n\t\t\"command\": {\n\t\t \"$db\": [\n\t\t\t{ \"$method\": \"collection\", \"$param\": [\"bl-time-chapter\"] },\n\t\t\t{ \"$method\": \"where\", \"$param\": [\"novel_id=='\" + idValue + \"'&&chapter_status==1\"] },\n\t\t\t{ \"$method\": \"field\", \"$param\": [\"_id,chapter_title,last_modify_date\"] },\n\t\t\t{ \"$method\": \"orderBy\", \"$param\": [\"chapter_index asc\"] },\n\t\t\t{ \"$method\": \"skip\", \"$param\": [0] },\n\t\t\t{ \"$method\": \"limit\", \"$param\": [500] },\n\t\t\t{ \"$method\": \"get\", \"$param\": [{}] }\n\t\t ]\n\t\t}\n\t }\n\t});\n\tlet body2 = {\n\t\t\"method\": \"serverless.function.runtime.invoke\",\n\t\t\"params\": params2,\n\t\t\"spaceId\": \"mp-a23ce835-47fc-4856-9c1a-5648136d3829\",\n\t\t\"timestamp\": timestamp2,\n\t\t\"token\": accessToken\n\t};\n\tlet sign2 = createSign(body2);\n\tlet headers2 = {\n\t\t\"Content-Type\": \"application\/json\",\n\t\t\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 6.0; Nexus 5 Build\/MRA58N) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Mobile Safari\/537.36\",\n\t\t\"x-basement-token\": accessToken,\n\t\t\"x-serverless-sign\": sign2\n\t};\n\tlet response2 = JSON.parse(java.post(\"https:\/\/api.next.bspapp.com\/client\",JSON.stringify(body2),headers2).body());\n\tresult = JSON.stringify(response2);\n}result;\n<\/js>\n$.data.data", "chapterName": "$.chapter_title", "chapterUrl": "https:\/\/bltime.cc\/pages\/novel\/read?id={{$._id}}", "updateTime": "<js>\njava.timeFormat(result.last_modify_date)\n<\/js>" }, "searchUrl": "https:\/\/bltime.cc\/pages\/search\/search?keyword=%22{{key}}%22,{\"webView\":true}", "weight": 0 }