[{"bookSourceComment":"\/\/❗免责声明：\n本工具\/代码\/内容仅供学习交流使用，严禁用于任何非法用途。使用者应严格遵守所在国家或地区的法律法规，任何因滥用或违规使用导致的后果均与开发者\/提供者无关，责任自负❗","bookSourceGroup":"🔞","bookSourceName":"BBQQGG","bookSourceType":0,"bookSourceUrl":"https:\/\/www.bbqqgg.com","customButton":false,"customOrder":13,"enabled":true,"enabledCookieJar":true,"enabledExplore":true,"eventListener":false,"exploreUrl":"@js:\nfunction getCategories() {\n  let tagHtml = java.ajax(\"https:\/\/www.bbqqgg.com\/tags\/\");\n  let tagDoc = org.jsoup.Jsoup.parse(tagHtml);\n  let tagList = tagDoc.select(\".tag-list li a\");\n  let tags = Array.from(tagList, (a) => ({\n    \"title\": a.ownText().trim(),\n    \"url\": a.attr(\"href\") + \"{{page}}.html\",\n    \"style\": { \"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25 }\n  }));\n  let catHtml = java.ajax(\"https:\/\/www.bbqqgg.com\/categories\/\");\n  let catDoc = org.jsoup.Jsoup.parse(catHtml);\n  let catList = catDoc.select(\".category-list li a\");\n  let categories = Array.from(catList, (a) => ({\n    \"title\": a.ownText().trim(),\n    \"url\": a.attr(\"href\") + \"?page={{page}}\",\n    \"style\": { \"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25 }\n  }));\n  let additionalCategories = [\n    { \"title\": \"完本小说\", \"url\": \"https:\/\/www.bbqqgg.com\/rank\/complete\/{{page}}.html\", \"style\": { \"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25 } },\n    { \"title\": \"热门小说\", \"url\": \"https:\/\/www.bbqqgg.com\/rank\/hot\/{{page}}.html\", \"style\": { \"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25 } }\n  ];\n  let allCategories = tags.concat(categories, additionalCategories);\n  return JSON.stringify(allCategories);\n}\ngetCategories();","lastUpdateTime":"1782319140328","loginUi":"[\n  { \"name\": \"账号\", \"type\": \"text\" },\n  { \"name\": \"密码\", \"type\": \"text\" }\n]","loginUrl":"function login() {\n  try {\n    var url = baseUrl.replace(\/\\\/+$\/, '').replace(\/[^\\w.:\/\\-]\/g, '');\n    var ur = source.getLoginInfoMap();\n    var params = `username=${ur.get(\"账号\")}&password=${ur.get(\"密码\")}`;\n    var r = java.post(`${url}\/api\/login.php`, params, { \"method\": \"POST\" });\n    var resp = JSON.parse(r.body());\n    if (resp.success) {\n      const cookies = Array.from(r.cookies(), ([k, v]) => `${k}=${v}`).join(';');\n      return source.putLoginHeader(JSON.stringify({ Cookie: cookies }));\n    } else {\n      throw new Error(`登录失败: ${resp.message || '未知错误'}`);\n    }\n  } catch (e) {\n    java.log(`登录异常: ${e.message}`);\n    throw e;\n  }\n}","respondTime":180000,"ruleBookInfo":{"author":"p.0@text","coverUrl":".cover.0@img@src","intro":".desc@text","kind":"p.1@text&&p.2:3@a@text##状态：","name":"h1@text","tocUrl":"text.章节目录@href"},"ruleContent":{"content":".content@html"},"ruleExplore":{"author":"span.0@text","bookList":".novel-list@a","bookUrl":"a@href","coverUrl":"img.0@data-src","name":"h4.0@text"},"ruleSearch":{"author":"span@text","bookList":".novel-item","bookUrl":"a@href","checkKeyWord":"重生","coverUrl":"img@data-src","intro":"p@text","name":"a@text"},"ruleToc":{"chapterList":".chapter-list@a","chapterName":"text","chapterUrl":"href"},"searchUrl":"\/search\/?q={{key}}&page={{page}}","weight":0}]