[{"bookSourceUrl":"https:\/\/drmh2.com","bookSourceName":"大人漫画","enabledExplore":true,"enabled":true,"bookSourceGroup":"","author":"","help":false,"html":"<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <title>大人漫画<\/title>\n<\/head>\n\n<body>\n<\/body>\n<script src=\"https:\/\/vc.jd.com\/web\/js\/jquery-3.1.1.min.js\"><\/script>\n<script>\n    var isCookieJar = true;\n    class FlutterJSBridge {\n        constructor() {\n            this.init();\n        }\n\n        init() {\n            if (window.flutter_inappwebview) {\n                this.isReady = true;\n                this.CookieJar();\n            } else {\n                window.addEventListener('flutterInAppWebViewPlatformReady', () => {\n                    this.isReady = true;\n                    this.CookieJar();\n                });\n            }\n        }\n\n        async CookieJar() {\n            try {\n                await window.flutter_inappwebview.callHandler('CookieJar', isCookieJar);\n            } catch (error) { }\n        }\n\n        async getbuildNumber() {\n            try {\n                return await window.flutter_inappwebview.callHandler('buildNumber');\n            } catch (error) {\n                return 0;\n            }\n        }\n\n        async getversion() {\n            try {\n                return await window.flutter_inappwebview.callHandler('version');\n            } catch (error) {\n                return \"0.0.0\";\n            }\n        }\n\n        async toTraditional(str) {\n            try {\n                return await window.flutter_inappwebview.callHandler('toTraditional', str);\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async toSimplified(str) {\n            try {\n                return await window.flutter_inappwebview.callHandler('toSimplified', str);\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async getDeviceid() {\n            try {\n                return await window.flutter_inappwebview.callHandler('id');\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async getDevice() {\n            try {\n                return await window.flutter_inappwebview.callHandler('device');\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async log(str) {\n            try {\n                return await window.flutter_inappwebview.callHandler('log', str);\n            } catch (error) {\n                return false;\n            }\n        }\n\n        async text(type, str) {\n            try {\n                return await window.flutter_inappwebview.callHandler('text', type, str);\n            } catch (error) {\n                return false;\n            }\n        }\n\n        async showToast(str) {\n            try {\n                return await window.flutter_inappwebview.callHandler('showToast', str);\n            } catch (error) {\n                return false;\n            }\n        }\n\n        async getWebViewUA() {\n            try {\n                return await window.flutter_inappwebview.callHandler('getWebViewUA');\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async openurl(url) {\n            try {\n                return await window.flutter_inappwebview.callHandler('openurl', url, \"\");\n            } catch (error) {\n                return false;\n            }\n        }\n\n        async openurlwithMimeType(url, mimeType) {\n            try {\n                return await window.flutter_inappwebview.callHandler('openurl', url, mimeType);\n            } catch (error) {\n                return false;\n            }\n        }\n\n        async webview(url, js, html, body, header) {\n            try {\n                return await window.flutter_inappwebview.callHandler('webview', url, js, html, body, header, \"\", \"\");\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async webViewGetOverrideUrl(url, js, html, body, header, overrideUrlRegex) {\n            try {\n                return await window.flutter_inappwebview.callHandler('webview', url, js, html, body, header, overrideUrlRegex, \"\");\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async webViewGetSource(url, js, html, body, header, urlregex) {\n            try {\n                return await window.flutter_inappwebview.callHandler('webview', url, js, html, body, header, \"\", urlregex);\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async startBrowser(url, title, header) {\n            try {\n                return await window.flutter_inappwebview.callHandler('startBrowser', url, title, header);\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async startBrowserWithShouldOverrideUrlLoading(url, title, header) {\n            try {\n                return await window.flutter_inappwebview.callHandler('startBrowserWithShouldOverrideUrlLoading', url, title, header);\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async startBrowserDp(url, title) {\n            try {\n                return await window.flutter_inappwebview.callHandler('startBrowserDp', url, title);\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async back() {\n            try {\n                return await window.flutter_inappwebview.callHandler('back');\n            } catch (error) {\n                return false;\n            }\n        }\n\n        async utf8ToGbkUrlEncoded(str) {\n            try {\n                return await window.flutter_inappwebview.callHandler('utf8ToGbkUrlEncoded', str);\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async getVerificationCode(str, header) {\n            try {\n                return await window.flutter_inappwebview.callHandler('getVerificationCode', str, header);\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async addbook(book) {\n            try {\n                return await window.flutter_inappwebview.callHandler('addbook', book);\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async base64encode(str) {\n            try {\n                return await window.flutter_inappwebview.callHandler('base64encode', str);\n            } catch (error) {\n                return \"\";\n            }\n        }\n\n        async base64decode(str) {\n            try {\n                return await window.flutter_inappwebview.callHandler('base64decode', str);\n            } catch (error) {\n                return \"\";\n            }\n        }\n    }\n\n    class Http {\n        constructor() { }\n\n        async Get(url, headers, followRedirects) {\n            try {\n                return await window.flutter_inappwebview.callHandler('http', \"get\", url, \"\", JSON.stringify(headers), followRedirects, \"\");\n            } catch (error) {\n                return null;\n            }\n        }\n\n        async Head(url, headers, followRedirects) {\n            try {\n                return await window.flutter_inappwebview.callHandler('http', \"head\", url, \"\", JSON.stringify(headers), followRedirects, \"\");\n            } catch (error) {\n                return null;\n            }\n        }\n\n        async Post(url, headers, body, contenttype, followRedirects) {\n            try {\n                return await window.flutter_inappwebview.callHandler('http', \"post\", url, body, JSON.stringify(headers), followRedirects, contenttype);\n            } catch (error) {\n                return null;\n            }\n        }\n    }\n\n    class Cache {\n        constructor() { }\n        async get(key) {\n            try {\n                return await window.flutter_inappwebview.callHandler('cache.get', key);\n            } catch (error) {\n                return null;\n            }\n        }\n\n        async set(key, value) {\n            try {\n                return await window.flutter_inappwebview.callHandler('cache.set', key, value);\n            } catch (error) {\n                return null;\n            }\n        }\n\n        async remove(key) {\n            try {\n                return await window.flutter_inappwebview.callHandler('cache.remove', key);\n            } catch (error) {\n                return null;\n            }\n        }\n\n        async getLoginInfo() {\n            return await this.get(\"LoginInfo\");\n        }\n\n        async putLoginInfo(info) {\n            return await this.set(\"LoginInfo\", info);\n        }\n\n        async getbookVariable(bookurl) {\n            return await this.get(bookurl);\n        }\n\n        async setbookVariable(bookurl, value) {\n            return await this.set(bookurl, value);\n        }\n    }\n\n    class Cookie {\n        constructor() { }\n\n        async get(url) {\n            try {\n                return await window.flutter_inappwebview.callHandler('cookie.get', url);\n            } catch (error) {\n                return null;\n            }\n        }\n\n        async remove(url) {\n            try {\n                return await window.flutter_inappwebview.callHandler('cookie.remove', url);\n            } catch (error) {\n                return null;\n            }\n        }\n\n        async set(url, value) {\n            try {\n                return await window.flutter_inappwebview.callHandler('cookie.set', url, value);\n            } catch (error) {\n                return null;\n            }\n        }\n\n        async setCookie(url, key, value) {\n            try {\n                return await window.flutter_inappwebview.callHandler('cookie.setcookie', url, key, value);\n            } catch (error) {\n                return null;\n            }\n        }\n\n        async getCookie(url, value) {\n            try {\n                return await window.flutter_inappwebview.callHandler('cookie.getCookie', url, value);\n            } catch (error) {\n                return null;\n            }\n        }\n    }\n\n    function parseHTMLSafely(htmlStr) {\n        try {\n            var tempDiv = document.createElement('div');\n            tempDiv.innerHTML = htmlStr;\n            return $(tempDiv);\n        } catch (e) {\n            return $('<div>');\n        }\n    }\n\n    function removeHTMLSafely(tempContainer) {\n        try {\n            if (tempContainer[0]) { tempContainer = tempContainer[0]; }\n            tempContainer.innerHTML = '';\n            if (tempContainer.parentNode) {\n                tempContainer.parentNode.removeChild(tempContainer);\n            }\n        } catch (e) { }\n    }\n\n    function removeHTMLTags(htmlString) {\n        var result = htmlString.replace(\/<script\\b[^<]*(?:(?!<\\\/script>)<[^<]*)*<\\\/script>\/gi, '');\n        result = result.replace(\/<style\\b[^<]*(?:(?!<\\\/style>)<[^<]*)*<\\\/style>\/gi, '');\n        result = result.replace(\/<link\\b[^<]*(?:(?!<\\\/link>)<[^<]*)*<\\\/link>\/gi, '');\n        return result;\n    }\n\n    var flutterBridge = new FlutterJSBridge();\n    var http = new Http();\n    var cache = new Cache();\n    var cookie = new Cookie();\n    var baseurl = \"https:\/\/drmh3.com\";\n    var header = {\n        \"User-Agent\": \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36\",\n        \"Referer\": baseurl\n    };\n\n    function fullUrl(url) {\n        if (!url) return \"\";\n        if (url.indexOf(\"http\") === 0) return url;\n        if (url.indexOf(\"\/\/\") === 0) return \"https:\" + url;\n        return baseurl + (url.indexOf(\"\/\") === 0 ? \"\" : \"\/\") + url;\n    }\n\n    function extractCover($el) {\n        return $el.attr(\"data-original\") || $el.attr(\"data-src\") || $el.attr(\"src\") || \"\";\n    }\n\n    function extractCoverFromItem($box) {\n        \/\/ 封面在 a.hl-item-thumb 的 data-original 属性上（该站没有img标签）\n        var $thumb = $box.find(\".hl-item-thumb\");\n        var cover = $thumb.attr(\"data-original\") || $thumb.attr(\"data-src\") || \"\";\n        if (!cover) {\n            var $img = $box.find(\"img\").first();\n            cover = $img.attr(\"data-original\") || $img.attr(\"data-src\") || $img.attr(\"src\") || \"\";\n        }\n        return cover;\n    }\n\n    async function search(key, page) {\n        try {\n            var encoded = encodeURIComponent(key);\n            var searchUrl;\n            if (page > 1) {\n                searchUrl = baseurl + \"\/comics-searching\/\" + encoded + \"\/page\/\" + page;\n            } else {\n                searchUrl = baseurl + \"\/cata.php?key=\" + encoded;\n            }\n\n            var get = await http.Get(searchUrl, header, true);\n            if (!get || !get.data) {\n                flutterBridge.log(\"搜索请求失败\");\n                return \"[]\";\n            }\n\n            var books = [];\n            var $html = parseHTMLSafely(removeHTMLTags(get.data));\n\n            $html.find(\".hl-list-item, .comic-item, .mh-item, .book-item, li.item\").each(function () {\n                var $box = $(this);\n                var $thumb = $box.find(\".hl-item-thumb, .comic-cover, .mh-thumb, .book-cover, a:first\");\n                var href = $thumb.attr(\"href\") || $box.find(\"a[href*='\/comics-reading\/']\").attr(\"href\") || $box.find(\"a\").first().attr(\"href\");\n                var name = $thumb.attr(\"title\") || $box.find(\".hl-item-title, .comic-name, .mh-title, .book-name, .title, h3 a\").first().text().trim();\n                if (!href || !name) return;\n                if (href.indexOf(\"javascript\") >= 0) return;\n\n                var bookUrl = fullUrl(href);\n                var coverUrl = extractCoverFromItem($box);\n\n                books.push({\n                    bookUrl: bookUrl,\n                    name: name,\n                    author: $box.find(\".hl-item-author, .author, .mh-author, .comic-author\").first().text().trim().replace(\/作者[：:]\/, \"\"),\n                    kind: $box.find(\".hl-item-type, .type, .tag, .genre, .status\").first().text().trim(),\n                    coverUrl: coverUrl,\n                    intro: \"\",\n                    tocUrl: bookUrl,\n                    wordCount: \"\",\n                    type: 2,\n                    latestChapterTitle: $box.find(\".hl-lc-1, .update, .latest-chapter, .mh-update, .chapter, .hl-item-sub\").first().text().trim()\n                });\n            });\n\n            removeHTMLSafely($html[0]);\n            return JSON.stringify(books);\n        } catch (e) {\n            flutterBridge.log(\"搜索失败: \" + e.message);\n            return \"[]\";\n        }\n    }\n\n    async function info(bookurl) {\n        try {\n            var get = await http.Get(bookurl, header, true);\n            if (!get || !get.data) {\n                flutterBridge.log(\"详情页请求失败\");\n                return \"{}\";\n            }\n\n            var $html = parseHTMLSafely(removeHTMLTags(get.data));\n\n            var name = $html.find(\".hl-dc-title, .book-title, h1, .comic-name, .detail-title\").first().text().trim();\n\n            var author = $html.find(\"a[href*='\/comics-searching\/'], a[href*='\/author\/'], a[href*='\/search\/']\").first().text().trim();\n\n            var kind = $html.find(\".detail-tags-item, .tags-item\").map(function () {\n                return $(this).text().trim();\n            }).get().join(\",\");\n\n            var intro = \"\";\n            $html.find(\"li.blurb, .blurb\").each(function () {\n                var text = $(this).text().trim();\n                if (text.indexOf(\"简介\") >= 0 || text.indexOf(\"介绍\") >= 0) {\n                    intro = text.replace(\/简介[：:]?\/, \"\").replace(\/介绍[：:]?\/, \"\").trim();\n                }\n            });\n            if (!intro) {\n                intro = $html.find(\"meta[property='og:description']\").attr(\"content\") || \"\";\n            }\n\n            var coverUrl = \"\";\n            var $coverSpan = $html.find(\".hl-dc-pic .hl-item-thumb, .hl-dc-pic span\").first();\n            coverUrl = $coverSpan.attr(\"data-original\") || $coverSpan.attr(\"data-src\") || \"\";\n            if (!coverUrl) {\n                coverUrl = $html.find(\"meta[property='og:image']\").attr(\"content\") || \"\";\n            }\n\n            var status = $html.find(\".hl-pic-tag .state, .state, .status, .comic-status, .serial\").first().text().trim();\n\n            var book = {\n                bookUrl: bookurl,\n                name: name,\n                author: author,\n                kind: kind,\n                coverUrl: coverUrl,\n                intro: intro,\n                tocUrl: bookurl,\n                wordCount: \"\",\n                status: status,\n                type: 2,\n                latestChapterTitle: \"\"\n            };\n\n            removeHTMLSafely($html[0]);\n            return JSON.stringify(book);\n        } catch (e) {\n            flutterBridge.log(\"详情页解析失败: \" + e.message);\n            return \"{}\";\n        }\n    }\n\n    async function chapter(tocUrl) {\n        try {\n            var get = await http.Get(tocUrl, header, true);\n            if (!get || !get.data) {\n                flutterBridge.log(\"章节列表请求失败\");\n                return \"[]\";\n            }\n\n            var chapters = [];\n            var $html = parseHTMLSafely(removeHTMLTags(get.data));\n\n            $html.find(\".hl-plays-list li a, #hl-plays-list li a, .chapter-list li a, ul li a[href*='\/comics-reading\/']\").each(function (index) {\n                var $a = $(this);\n                var href = $a.attr(\"href\");\n                var name = $a.attr(\"title\") || $a.text().trim();\n\n                if (href && name && href.indexOf(\"javascript\") < 0 && name.length > 0) {\n                    var chapterId = fullUrl(href);\n                    chapters.push({\n                        name: name,\n                        chapterId: chapterId,\n                        index: index,\n                        isPay: false,\n                        isVip: false,\n                        isVolume: false,\n                        tag: \"\"\n                    });\n                }\n            });\n\n            if (chapters.length === 0) {\n                $html.find(\"a[href*='\/comics-reading\/']\").each(function (index) {\n                    var $a = $(this);\n                    var href = $a.attr(\"href\");\n                    var name = $a.attr(\"title\") || $a.text().trim();\n                    if (href && name && name.length > 0 && name.indexOf(\"img\") < 0) {\n                        chapters.push({\n                            name: name,\n                            chapterId: fullUrl(href),\n                            index: index,\n                            isPay: false,\n                            isVip: false,\n                            isVolume: false,\n                            tag: \"\"\n                        });\n                    }\n                });\n            }\n\n            removeHTMLSafely($html[0]);\n            return JSON.stringify(chapters);\n        } catch (e) {\n            flutterBridge.log(\"章节列表解析失败: \" + e.message);\n            return \"[]\";\n        }\n    }\n\n    async function content(url) {\n        try {\n            var get = await http.Get(url, header, true);\n            if (!get || !get.data) {\n                flutterBridge.log(\"内容请求失败，尝试webview\");\n                return await contentViaWebview(url);\n            }\n\n            var images = [];\n            var seen = {};\n\n            var $html = parseHTMLSafely(removeHTMLTags(get.data));\n\n            $html.find(\"img[data-original], img[data-src], img[src]\").each(function () {\n                var $img = $(this);\n                var src = $img.attr(\"data-original\") || $img.attr(\"data-src\") || $img.attr(\"src\");\n                if (!src) return;\n\n                var cls = $img.attr(\"class\") || \"\";\n                if (cls.indexOf(\"logo\") >= 0) return;\n                if (cls.indexOf(\"nav\") >= 0) return;\n                if (cls.indexOf(\"avatar\") >= 0) return;\n                if (cls.indexOf(\"icon\") >= 0) return;\n                if (src.indexOf(\"loading\") >= 0) return;\n                if (src.indexOf(\"blank\") >= 0) return;\n                if (src.indexOf(\"data:image\") === 0) return;\n\n                var absSrc = fullUrl(src);\n                if (seen[absSrc]) return;\n                seen[absSrc] = true;\n\n                images.push('<img src=\"' + absSrc + ',' + JSON.stringify({ headers: { \"Referer\": baseurl + \"\/\" } }) + '\" \/>');\n            });\n\n            removeHTMLSafely($html[0]);\n\n            if (images.length === 0) {\n                return await contentViaWebview(url);\n            }\n\n            return images.join(\"\\n\");\n        } catch (e) {\n            flutterBridge.log(\"内容解析失败: \" + e.message);\n            return \"\";\n        }\n    }\n\n    async function contentViaWebview(url) {\n        try {\n            var js = \"(function(){\" +\n                \"var imgs=document.querySelectorAll('img[data-original],img[data-src],img');\" +\n                \"var r=[];\" +\n                \"for(var i=0;i<imgs.length;i++){\" +\n                \"var s=imgs[i].getAttribute('data-original')||imgs[i].getAttribute('data-src')||imgs[i].getAttribute('src');\" +\n                \"if(s&&s.indexOf('http')===0&&s.indexOf('loading')<0&&s.indexOf('blank')<0&&s.indexOf('logo')<0){\" +\n                \"r.push(s);\" +\n                \"}\" +\n                \"}\" +\n                \"return r.join('SEP');\" +\n                \"})()\";\n            var html = await flutterBridge.webview(url, js, \"\", \"\", JSON.stringify(header));\n            if (!html) return \"\";\n\n            if (html.indexOf(\"SEP\") > 0) {\n                var urls = html.split(\"SEP\");\n                var result = \"\";\n                var seen = {};\n                for (var i = 0; i < urls.length; i++) {\n                    var u = urls[i].trim();\n                    if (u && !seen[u]) {\n                        seen[u] = true;\n                        if (result) result += \"\\n\";\n                        result += '<img src=\"' + u + ',' + JSON.stringify({ headers: { \"Referer\": baseurl + \"\/\" } }) + '\" \/>';\n                    }\n                }\n                return result;\n            }\n\n            var $temp = parseHTMLSafely(html);\n            var result = \"\";\n            var seen = {};\n            $temp.find(\"img\").each(function () {\n                var src = $(this).attr(\"data-original\") || $(this).attr(\"data-src\") || $(this).attr(\"src\");\n                if (src && src.indexOf(\"http\") === 0 && !seen[src]) {\n                    seen[src] = true;\n                    if (result) result += \"\\n\";\n                    result += '<img src=\"' + src + ',' + JSON.stringify({ headers: { \"Referer\": baseurl + \"\/\" } }) + '\" \/>';\n                }\n            });\n            removeHTMLSafely($temp);\n            return result;\n        } catch (e) {\n            flutterBridge.log(\"webview内容解析失败: \" + e.message);\n            return \"\";\n        }\n    }\n\n    async function getfinds() {\n        var sort = [\n            { title: \"最近更新\", url: \"\/latest-comics\/page\/{{page}}\", type: 0 },\n            { title: \"新书上架\", url: \"\/latest-comics\/latest-comics\/page\/{{page}}\", type: 0 },\n            { title: \"推荐漫画\", url: \"\/latest-comics\/recommend\/page\/{{page}}\", type: 0 },\n            { title: \"日榜\", url: \"\/desirable-comics\/daily\/page\/{{page}}\", type: 0 },\n            { title: \"周榜\", url: \"\/desirable-comics\/weekly\/page\/{{page}}\", type: 0 },\n            { title: \"月榜\", url: \"\/desirable-comics\/monthly\/page\/{{page}}\", type: 0 },\n            { title: \"总榜\", url: \"\/desirable-comics\/all\/page\/{{page}}\", type: 0 },\n            { title: \"韩漫精品\", url: \"\/comics-catalog\/韩漫\/ob\/hits\/st\/all\/page\/{{page}}\", type: 0 },\n            { title: \"日漫精选\", url: \"\/comics-catalog\/日漫\/ob\/hits\/st\/all\/page\/{{page}}\", type: 0 },\n            { title: \"3D漫画\", url: \"\/comics-catalog\/3D漫画\/ob\/hits\/st\/all\/page\/{{page}}\", type: 0 },\n            { title: \"真人类\", url: \"\/comics-catalog\/真人\/ob\/hits\/st\/all\/page\/{{page}}\", type: 0 },\n            { title: \"完结专区\", url: \"\/comics-catalog\/all\/ob\/hits\/st\/completed\/page\/{{page}}\", type: 0 }\n        ];\n        return JSON.stringify(sort);\n    }\n\n    async function find(url, page) {\n        try {\n            var findUrl = url.replace(\"{{page}}\", page);\n            \/\/ 第1页去除\/page\/1后缀\n            if (page == 1) {\n                findUrl = findUrl.replace(\"\/page\/1\", \"\");\n            }\n            findUrl = fullUrl(findUrl);\n\n            var get = await http.Get(findUrl, header, true);\n            if (!get || !get.data) {\n                flutterBridge.log(\"发现页请求失败: \" + findUrl);\n                return \"[]\";\n            }\n\n            var books = [];\n            var $html = parseHTMLSafely(removeHTMLTags(get.data));\n\n            $html.find(\".hl-list-item, .comic-item, .mh-item, .book-item, li.item\").each(function () {\n                var $box = $(this);\n                var $thumb = $box.find(\".hl-item-thumb, .comic-cover, .mh-thumb, .book-cover, a:first\");\n                var href = $thumb.attr(\"href\") || $box.find(\"a[href*='\/comics-reading\/']\").attr(\"href\") || $box.find(\"a\").first().attr(\"href\");\n                var name = $thumb.attr(\"title\") || $box.find(\".hl-item-title, .comic-name, .mh-title, .book-name, .title, h3 a\").first().text().trim();\n                if (!href || !name) return;\n                if (href.indexOf(\"javascript\") >= 0) return;\n\n                var bookUrl = fullUrl(href);\n                var coverUrl = extractCoverFromItem($box);\n\n                books.push({\n                    bookUrl: bookUrl,\n                    name: name,\n                    author: \"\",\n                    kind: $box.find(\".hl-item-type, .type, .tag, .genre\").first().text().trim(),\n                    coverUrl: coverUrl,\n                    intro: \"\",\n                    tocUrl: bookUrl,\n                    wordCount: \"\",\n                    type: 2,\n                    latestChapterTitle: $box.find(\".hl-lc-1, .update, .latest-chapter, .hl-item-sub\").first().text().trim()\n                });\n            });\n\n            removeHTMLSafely($html[0]);\n            return JSON.stringify(books);\n        } catch (e) {\n            flutterBridge.log(\"发现页解析失败: \" + e.message);\n            return \"[]\";\n        }\n    }\n\n    async function getloginurl() {\n        return baseurl;\n    }\n\n    async function login() {\n    }\n\n    async function pay(bookurl, url) {\n    }\n\n    async function imagedecrypt(url, image) {\n        return image;\n    }\n\n    async function shouldOverrideUrlLoading(url) {\n        return true;\n    }\n<\/script>\n\n<\/html>\n","login":false,"lastUpdateTime":"1782291915855"}]