[
    {
        "customOrder": 1,
        "sourceName": "Pixiv",
        "sourceUrl": "https://www.pixiv.net/novel,{\"js\":\"java.longToast('请使用右上角菜单中的【登录】进行登录/退出账号')\"}",
        "sourceIcon": "https://asset.brandfetch.io/idIlKj_n7C/idSsbP7h1m.png",
        "sourceGroup": "🅿️ Pixiv,🐲 Furry",
        "articleStyle": 0,
        "enableJs": true,
        "enabled": true,
        "enabledCookieJar": true,
        "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36 Reader\"}",
        "injectJs": "if (!/^https:\\/\\/(so\\.toutiao\\.com\\/search\\/?|quark\\.sm\\.cn\\/s|wap\\.sogou\\.com\\/web\\/searchList\\.jsp|m\\.so\\.com\\/s|cn\\.bing\\.com\\/search|www\\.baidu\\.com\\/s)\\?/.test(window.location.href) && !document.getElementById('open-yuedu-bookshelf')) {\n    const btn = document.createElement('div');\n    btn.innerHTML = `<button type=\"button\" id='open-yuedu-bookshelf' style=\"z-index: 9999999999;\n    position: fixed;bottom: 13%;right: 10%;background-color: rgb(255, 153, 0);border-radius: 2px;border: 1px solid rgb(255, 153, 0);color: #fff;\n    font-size:${window.innerWidth/80}vw;font-weight: 400;padding: ${window.innerWidth/400}vw ${window.innerWidth/150}vw;\n    \"onclick=\"window.open('legado://import/addToBookshelf?src=${encodeURIComponent(window.location.href)}','_blank');location.reload();\">加入书架</button>`;\n    document.body.appendChild(btn);\n\n    const btn2 = document.createElement('div');\n    btn2.innerHTML = `<button type=\"button\" id='impotr-booksource' style=\"z-index: 9999999999;\n    position: fixed;bottom: 13%;left: 10%;background-color: rgb(255, 153, 0);border-radius: 2px;border: 1px solid rgb(255, 153, 0);color: #fff;\n    font-size:${window.innerWidth/80}vw;font-weight: 400;padding: ${window.innerWidth/400}vw ${window.innerWidth/150}vw;\n    \"onclick=\"window.open('legado://import/bookSource?src=https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/pixiv.json','_blank');\">导入书源</button>`;\n    document.body.appendChild(btn2);\n}\n\nlet time,num=0;\nconst herfs = new Map();\nfunction onTouchStart(evt) {\n    for (const el of evt.path) {\n        if (el.tagName === \"A\") {\n            if (el.href !== 'javascript:void(0)') {\n                const inner = el.href;\n                herfs.set(el, inner);\n                el.setAttribute('href', 'javascript:void(0)');\n                time = setTimeout(() => {\twindow.open(`legado://import/addToBookshelf?src=${encodeURIComponent(inner)}`, '_blank')\n                }, 600);\n            }\n            break;\n        }\n    }\n}\nfunction onTouchEnd(evt) {\n    if (time) {\n        clearTimeout(time);\n        time = undefined;\n    }\n    for (const el of evt.path) {\n        if (el.tagName === \"A\") {\n            if (el.href === 'javascript:void(0)') {\n                const herf = herfs.get(el);\n                if (herf) {\n                    el.setAttribute('href', herf)\n                }\n            }\n            break;\n        }\n    }\n}\n\nfunction addListener(els){\n    Array.from(els, (item) => {\n        if (item.getAttribute('add-yuedu-bookshelf') !== 'add-yuedu-bookshelf' && item.innerText && item.href && !/^#|^javascript:/.test(item.href)) {\n            item.setAttribute('add-yuedu-bookshelf', 'add-yuedu-bookshelf');\n            item.addEventListener('touchstart', onTouchStart);\n            item.addEventListener('touchend', onTouchEnd);\n            item.addEventListener('touchcancel', onTouchEnd);\n            item.addEventListener('mousedown', onTouchStart);\n            item.addEventListener('mouseup', onTouchEnd);\n        }\n    });\n    num= els.length;\n}\n\nfunction reAdd(){\n    const els = document.getElementsByTagName('a');\n    if(els.length>num)addListener(els);\n}\n\nreAdd();\n\nconst observer = new ResizeObserver(reAdd);\nobserver.observe(document.body);",
        "jsLib": "function sleep(time) {\n    let endTime = new Date().getTime() + time\n    while(true){\n        if (new Date().getTime() > endTime){\n            return;\n        }\n    }\n}\n\nfunction sleepToast(text, second) {\n    let {java} = this\n    java.log(text)\n    java.longToast(text)\n    if (second === undefined) {second = 0.01}\n    sleep(1000*second)\n}\n\nlet bookSourceCommentText = `Pixiv 小说\n\n书源版本：无法获取\n使用说明：📌阅读版本 3.25.0527 及之后版本可用\n可用功能：✅搜索✅发现✅添加网址✅订阅源\n搜索小说：✅单篇✅系列✅标签✅作者\n发现小说：✅关注✅追更✅推荐✅发现\n发现小说：✅收藏✅书签✅首页✅排行\n添加网址：✅Pixiv小说链接✅Pixiv系列链接\n订阅用法：点击订阅源打开小说/系列小说，【刷新】，点击【加入书架】按钮，添加到书架\n\n书源发布：兽人阅读频道 https://t.me/FurryReading\n项目地址：https://github.com/DowneyRem/PixivSource\n使用教程：https://downeyrem.github.io/PixivSource/Pixiv\n\n规则订阅：import 订阅源\nhttps://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/import.json\nhttps://raw.githubusercontent.com/DowneyRem/PixivSource/main/import.json\n\n⚙️ 书源设置：\n设置1️⃣：打开小说 - 菜单 - 登录 - 点击下方按钮\n设置2️⃣：编辑书源 - 基本 - 变量说明 - 修改并保存\n\n🚫 屏蔽作者(本地)：\n设置方法1️⃣：打开小说 - 菜单 - 登录 - 🚫 屏蔽作者\n`.trim()\n\nfunction updateSource() {\n    const {java, source} = this\n    let onlineSource, comment\n    java.longToast(\"🆙 更新书源\\n\\nJsdelivr CDN 更新有延迟\\nGithub 更新需代理\")\n    try {\n        let updateUrl = \"https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/pixiv.json\"\n        onlineSource = JSON.parse(java.get(updateUrl,{'User-Agent': 'Mozilla/5.0 (Linux; Android 14)','X-Requested-With': 'XMLHttpRequest'}).body())[0]  // 第1个书源\n        comment = onlineSource.bookSourceComment.split(\"\\n\")\n    } catch (e) {\n        try {\n            let updateUrl = \"https://raw.githubusercontent.com/DowneyRem/PixivSource/main/pixiv.json\"\n            onlineSource = JSON.parse(java.get(updateUrl,{'User-Agent': 'Mozilla/5.0 (Linux; Android 14)','X-Requested-With': 'XMLHttpRequest'}).body())[0]  // 第1个书源\n            comment = onlineSource.bookSourceComment.split(\"\\n\")\n        } catch (e) {\n            onlineSource = {lastUpdateTime: new Date().getTime(), bookSourceComment: bookSourceCommentText}\n            comment = onlineSource.bookSourceComment.split(\"\\n\")\n        }\n    }\n\n    let htm = `data:text/html; charset=utf-8,\n<html>\n<head>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>更新 Pixiv 书源</title>\n    <style> \n    table { text-align: center; margin: 0 auto; } .ann { display: flex; justify-content: center; align-items: center; height: 5vh; } \n    button { background-color: rgb(76, 175, 80); color: white; border: none; border-radius: 4px; height: 6vh; width: 30vw; overflow: hidden; } \n    button span { cursor: pointer; display: inline-block; position: relative; transition: 0.4s; } \n    button span:after { content: '>'; position: absolute; opacity: 0; top: 0; right: 30px; transition: 0.2s; } \n    button:active span { padding-right: 20px; } \n    button:active span:after { opacity: 1; right: -40px; }\n    </style>\n</head>\n\n<body>\n    <table border=\"1\" cellspacing=\"0\">\n        <th colspan=\"2\"> Pixiv 书源 \n        <a href=\"https://downeyrem.github.io/PixivSource/Pixiv\">🔰 使用指南</a>\n        || <a href=\"https://downeyrem.github.io/PixivSource/Sponsor\">❤️ 赞助开发</a>\n        </th>\n        <tr>\n            <td>☁️ 远程版本：${onlineSource.bookSourceComment.split(\"\\n\")[2].replace(\"书源版本：\", \"\")}</td>\n            <td>📆 更新：${java.timeFormat(onlineSource.lastUpdateTime)}</td>\n        </tr>\n        <tr><td colspan=\"2\" style=\"text-align: left;\">${comment.slice(3, 10).join(\"<br>\")}</td></tr>\n        <tr><td colspan=\"2\" style=\"text-align: left;\">${comment.slice(comment.length-15, comment.length).join(\"<br>\")}</td></tr>\n    </table>\n    \n    <table border=\"0\" cellspacing=\"20\">\n        <th colspan=\"2\"> 更新 Pixiv 书源 </th>\n        <tr><td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/pixiv.json\">\n            <button><span>更新书源<br>(Jsdelivr CDN)</span></button>\n            </a></div></td>\n            \n            <td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/btsrk.json\">\n            <button><span>更新订阅<br>(Jsdelivr CDN)</span></button>\n            </a></div></td>\n        </tr>\n        \n        <tr><td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://raw.githubusercontent.com/DowneyRem/PixivSource/main/pixiv.json\">\n            <button><span>书源链接<br>(GitHub)</span></button>\n            </a></div></td>\n            \n            <td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://raw.githubusercontent.com/DowneyRem/PixivSource/main/btsrk.json\">\n            <button><span>订阅链接<br>(GitHub)</span></button>\n            </a></div></td>\n        </tr>\n        \n        <tr><td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://codeberg.org/DowneyRem/PixivSource/raw/branch/main/pixiv.json\">\n            <button><span>备用书源链接<br>(Codeberg)</span></button>\n            </a></div></td>\n            \n            <td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://codeberg.org/DowneyRem/PixivSource/raw/branch/main/btsrk.json\">\n            <button><span>备用订阅链接<br>(Codeberg)</span></button>\n            </a></div></td>\n        </tr>\n    </table>\n</body>\n</html>`\n    java.startBrowser(htm,'更新书源')\n    return []\n}",
        "lastUpdateTime": 1763913600251,
        "loginUi": "[\n    {\n        \"name\": \"\\uD83C\\uDD7F️ 登录账号\",\n        \"type\": \"button\",\n        \"action\": \"login()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"⚙️ 账号设置\",\n        \"type\": \"button\",\n        \"action\": \"startPixivSettings()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDD19 退出账号\",\n        \"type\": \"button\",\n        \"action\": \"logout()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"🆙 更新书源\",\n        \"type\": \"button\",\n        \"action\": \"updateSource()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDCCC 简要教程\",\n        \"type\": \"button\",\n        \"action\": \"readMe()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {   \"name\": \"\\uD83D\\uDD0D 搜索教程\",\n        \"type\": \"button\",\n        \"action\": \"readMeSearch()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"⭐️ 收藏项目\",\n        \"type\": \"button\",\n        \"action\": \"startGithub()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDD30 使用指南\",\n        \"type\": \"button\",\n        \"action\": \"startGithubReadme()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDC1E 反馈问题\",\n        \"type\": \"button\",\n        \"action\": \"startGithubIssue()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83C\\uDD7F️ 书源频道\",\n        \"type\": \"button\",\n        \"action\": \"startTelegramPixivSource()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDC3A 兽人阅读\",\n        \"type\": \"button\",\n        \"action\": \"startTelegramFurryReading()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"❤\\uFE0F 赞助开发\",\n        \"type\": \"button\",\n        \"action\": \"startGithubSponsor()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    }\n]",
        "loginUrl": "function getWebViewUA() {\n    let userAgent = String(java.getWebViewUA())\n    if (userAgent.includes(\"Windows NT 10.0; Win64; x64\")) {\n        userAgent = \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36\"\n    }\n    return String(userAgent)\n}\n\nfunction login() {\n    let resp = java.startBrowserAwait(`https://accounts.pixiv.net/login,\n    {\"headers\": {\"User-Agent\": ${getWebViewUA()}}}`, '登录账号', false)\n    if (resp.code() === 200) {\n        getCookie(); getCsrfToken()\n        return true\n    } else {\n        java.log(resp.code()); sleepToast(\"🅿️ 登录账号\\n\\n⚠️ 登录失败\")\n        return false\n    }\n}\n\nfunction logout() {\n    removeCookie()\n    java.startBrowser(\"https://www.pixiv.net/logout.php\", \"退出账号\")\n    removeCookie()\n    sleepToast(`✅ 已退出当前账号\\n\\n退出后请点击右上角的 ✔️ 退出\\n\\n登录请点击【登录账号】进行登录`)\n}\n\nfunction removeCookie() {\n    cookie.removeCookie('https://www.pixiv.net')\n    cookie.removeCookie('https://accounts.pixiv.net')\n    cookie.removeCookie('https://accounts.google.com')\n    cookie.removeCookie('https://api.weibo.com')\n    cache.delete(\"pixivCookie\")\n    cache.delete(\"pixivCsrfToken\")  // 与登录设备有关\n    cache.delete(\"headers\")\n}\n\n// 获取 Csrf Token，以便进行收藏等请求\n// 获取方法来自脚本 Pixiv Previewer\n// https://github.com/Ocrosoft/PixivPreviewer\n// https://greasyfork.org/zh-CN/scripts/30766-pixiv-previewer/code\nfunction getCsrfToken() {\n    let pixivCsrfToken\n    let html = java.webView(null, \"https://www.pixiv.net/\", null)\n    try {\n        pixivCsrfToken = html.match(/token\\\\\":\\\\\"([a-z0-9]{32})/)[1]\n    } catch (e) {\n        pixivCsrfToken = null\n    }\n    // java.log(pixivCsrfToken)\n    cache.put(\"pixivCsrfToken\", pixivCsrfToken)  // 与登录设备有关\n    return pixivCsrfToken\n}\n\nfunction getCookie() {\n    let pixivCookie = String(java.getCookie(\"https://www.pixiv.net/\", null))\n    if (pixivCookie.includes(\"first_visit_datetime\")) {\n        // java.log(pixivCookie)\n        cache.put(\"pixivCookie\", pixivCookie, 60*60)\n        return pixivCookie\n    } else {\n        cache.delete(\"pixivCookie\")\n        // sleepToast(\"未登录账号( pixivCookie)\")\n        return null\n    }\n}\n\nfunction readMe() {\n    sleepToast(`📌 书源使用简要教程\\n\n1️⃣ 导入书源：点击按钮，导入书源\n导入书源后，需要【在书源内登录账号】\n登录后，可在阅读内部搜索小说\n搜索时，需要开启代理/梯子等\\n\n2️⃣ 加入书架：系列目录/小说正文页面\n点击按钮，刷新页面后后可添加至书架\n需要【导入书源】并【在书源内登录账号】\\n\n3️⃣ 搜索小说：阅读内部搜索关键词\n也可添加小说至书架\n　 详细内容：见 🔍 搜索教程\\n\n4️⃣ 详细教程：见 🔰 使用指南`)\n}\n\nfunction readMeSearch() {\n    sleepToast(`🔍 阅读内部搜索说明\\n\n    标签之间需要以【空格】间隔\n    ➖ 排除标签：#标签1 -标签2\n    👤 作者专搜：@作者的名称\n    #️ 标签专搜：#标签1 标签2 \n    ⏬ 字数筛选1：#标签1 标签2 字数3k5\n    ⏬ 字数筛选2：@作者的名称 字数3w5`.replace(\"    \",\"\"), 5)\n}\n\nfunction startBrowser(url, title) {\n    let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${getWebViewUA()}\"}}`\n    if (url.includes(\"https://www.pixiv.net\")) {\n        if (url.includes(\"settings\")) msg += \"⚙️ 账号设置\"\n        else msg += \"⤴️ 分享小说\"\n        msg += \"\\n\\n即将打开 Pixiv\\n请确认已开启代理/梯子/VPN等\"\n    } else if (url.includes(\"https://github.com\")) {\n        if (url.includes(\"issues\")) msg += \"🐞 反馈问题\"\n        else if (url.includes(\"doc\")) msg += \"🔰 使用指南\"\n        else msg += \"⭐️ 收藏项目\"\n        msg += \"\\n\\n即将打开 Github\\n请确认已开启代理/梯子/VPN等\"\n    }\n    sleepToast(msg)\n    java.startBrowser(`${url}, ${headers}`, title)\n}\n\nfunction startPixivSettings() {\n    startBrowser(\"https://www.pixiv.net/settings/viewing\", \"账号设置\")\n}\nfunction startGithub() {\n    startBrowser(\"https://github.com/DowneyRem/PixivSource\", \"书源介绍\")\n}\nfunction startGithubIssue() {\n    startBrowser(\"https://github.com/DowneyRem/PixivSource/issues\", \"反馈问题\")\n}\nfunction startGithubReadme() {\n    startBrowser(\"https://downeyrem.github.io/PixivSource/Pixiv\", \"使用指南\")\n}\nfunction startGithubSponsor() {\n    startBrowser(\"https://downeyrem.github.io/PixivSource/Sponsor\", \"赞助开发\")\n}\nfunction startTelegramPixivSource() {\n    startBrowser(\"https://t.me/PixivSource\", \"Pixiv 书源频道\")\n}\nfunction startTelegramFurryReading() {\n    startBrowser(\"https://t.me/FurryReading\", \"兽人阅读频道\")\n}",
        "singleUrl": true,
        "sourceComment": "Pixiv 订阅源\n\n可用功能：✅添加小说（配合书源）✅更新书源\n添加小说：打开小说，【刷新】，点击【加入书架】按钮，添加小说到书架\n\n书源发布：\nPixiv 书源频道 https://t.me/PixivSource\n兽人阅读频道 https://t.me/FurryReading\n\n项目地址：\nhttps://github.com/DowneyRem/PixivSource\nhttps://github.com/eigeen/PixivSourceProject\n\n规则订阅：Import 订阅源\nhttps://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/import.json\nhttps://raw.githubusercontent.com/DowneyRem/PixivSource/main/import.json",
        "type": 0
    },
    {
        "customOrder": 4,
        "sourceName": "Pixiv 书源 发布页",
        "sourceUrl": "https://downeyrem.github.io/PixivSource",
        "sourceIcon": "https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/doc/pic/BookSourcePixiv.png",
        "sourceGroup": "🐲 Furry",
        "articleStyle": 0,
        "enableJs": true,
        "enabled": true,
        "enabledCookieJar": true,
        "header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36 Reader\"}",
        "jsLib": "function sleep(time) {\n    let endTime = new Date().getTime() + time\n    while(true){\n        if (new Date().getTime() > endTime){\n            return;\n        }\n    }\n}\n\nfunction sleepToast(text, second) {\n    let {java} = this\n    java.log(text)\n    java.longToast(text)\n    if (second === undefined) {second = 0.01}\n    sleep(1000*second)\n}\n\nlet bookSourceCommentText = `Pixiv 小说\n\n书源版本：无法获取\n使用说明：📌阅读版本 3.25.0527 及之后版本可用\n可用功能：✅搜索✅发现✅添加网址✅订阅源\n搜索小说：✅单篇✅系列✅标签✅作者\n发现小说：✅关注✅追更✅推荐✅发现\n发现小说：✅收藏✅书签✅首页✅排行\n添加网址：✅Pixiv小说链接✅Pixiv系列链接\n订阅用法：点击订阅源打开小说/系列小说，【刷新】，点击【加入书架】按钮，添加到书架\n\n书源发布：https://t.me/PixivSource\n项目地址：https://github.com/DowneyRem/PixivSource\n使用教程：https://downeyrem.github.io/PixivSource/Pixiv\n\n规则订阅：import 订阅源\nhttps://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/import.json\nhttps://raw.githubusercontent.com/DowneyRem/PixivSource/main/import.json\n\n⚙️ 书源设置：\n设置1️⃣：打开小说 - 菜单 - 登录 - 点击下方按钮\n设置2️⃣：编辑书源 - 基本 - 变量说明 - 修改并保存\n\n🚫 屏蔽作者(本地)：\n设置方法1️⃣：打开小说 - 菜单 - 登录 - 🚫 屏蔽作者\n`.trim()\n\nfunction updateSource() {\n    const {java, source} = this\n    let onlineSource, comment\n    java.longToast(\"🆙 更新书源\\n\\nJsdelivr CDN 更新有延迟\\nGithub 更新需代理\")\n    try {\n        let updateUrl = \"https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/pixiv.json\"\n        onlineSource = JSON.parse(java.get(updateUrl,{'User-Agent': 'Mozilla/5.0 (Linux; Android 14)','X-Requested-With': 'XMLHttpRequest'}).body())[0]  // 第1个书源\n        comment = onlineSource.bookSourceComment.split(\"\\n\")\n    } catch (e) {\n        try {\n            let updateUrl = \"https://raw.githubusercontent.com/DowneyRem/PixivSource/main/pixiv.json\"\n            onlineSource = JSON.parse(java.get(updateUrl,{'User-Agent': 'Mozilla/5.0 (Linux; Android 14)','X-Requested-With': 'XMLHttpRequest'}).body())[0]  // 第1个书源\n            comment = onlineSource.bookSourceComment.split(\"\\n\")\n        } catch (e) {\n            onlineSource = {lastUpdateTime: new Date().getTime(), bookSourceComment: bookSourceCommentText}\n            comment = onlineSource.bookSourceComment.split(\"\\n\")\n        }\n    }\n\n    let htm = `data:text/html; charset=utf-8,\n<html>\n<head>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>更新 Pixiv 书源</title>\n    <style> \n    table { text-align: center; margin: 0 auto; } .ann { display: flex; justify-content: center; align-items: center; height: 5vh; } \n    button { background-color: rgb(76, 175, 80); color: white; border: none; border-radius: 4px; height: 6vh; width: 30vw; overflow: hidden; } \n    button span { cursor: pointer; display: inline-block; position: relative; transition: 0.4s; } \n    button span:after { content: '>'; position: absolute; opacity: 0; top: 0; right: 30px; transition: 0.2s; } \n    button:active span { padding-right: 20px; } \n    button:active span:after { opacity: 1; right: -40px; }\n    </style>\n</head>\n\n<body>\n    <table border=\"1\" cellspacing=\"0\">\n        <th colspan=\"2\"> Pixiv 书源 \n        <a href=\"https://downeyrem.github.io/PixivSource/Pixiv\">🔰 使用指南</a>\n        || <a href=\"https://downeyrem.github.io/PixivSource/Sponsor\">❤️ 赞助开发</a>\n        </th>\n        <tr>\n            <td>☁️ 远程版本：${onlineSource.bookSourceComment.split(\"\\n\")[2].replace(\"书源版本：\", \"\")}</td>\n            <td>📆 更新：${java.timeFormat(onlineSource.lastUpdateTime)}</td>\n        </tr>\n        <tr><td colspan=\"2\" style=\"text-align: left;\">${comment.slice(3, 10).join(\"<br>\")}</td></tr>\n        <tr><td colspan=\"2\" style=\"text-align: left;\">${comment.slice(comment.length-20, comment.length).join(\"<br>\")}</td></tr>\n    </table>\n    \n    <table border=\"0\" cellspacing=\"20\">\n        <th colspan=\"2\"> 更新 Pixiv 书源 </th>\n        <tr><td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/pixiv.json\">\n            <button><span>更新书源<br>(Jsdelivr CDN)</span></button>\n            </a></div></td>\n            \n            <td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/btsrk.json\">\n            <button><span>更新订阅<br>(Jsdelivr CDN)</span></button>\n            </a></div></td>\n        </tr>\n        \n        <tr><td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://raw.githubusercontent.com/DowneyRem/PixivSource/main/pixiv.json\">\n            <button><span>书源链接<br>(GitHub)</span></button>\n            </a></div></td>\n            \n            <td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://raw.githubusercontent.com/DowneyRem/PixivSource/main/btsrk.json\">\n            <button><span>订阅链接<br>(GitHub)</span></button>\n            </a></div></td>\n        </tr>\n        \n        <tr><td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://codeberg.org/DowneyRem/PixivSource/raw/branch/main/pixiv.json\">\n            <button><span>备用书源链接<br>(Codeberg)</span></button>\n            </a></div></td>\n            \n            <td><div class=\"ann\">\n            <a href=\"legado://import/importonline?src=https://codeberg.org/DowneyRem/PixivSource/raw/branch/main/btsrk.json\">\n            <button><span>备用订阅链接<br>(Codeberg)</span></button>\n            </a></div></td>\n        </tr>\n    </table>\n</body>\n</html>`;\n    java.startBrowser(htm,'更新书源');\n    return []\n}",
        "lastUpdateTime": 1763913600251,
        "loginUi": "[\n    {\n        \"name\": \"🆙 更新书源\",\n        \"type\": \"button\",\n        \"action\": \"updateSource()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDD30 使用指南\",\n        \"type\": \"button\",\n        \"action\": \"startGithubReadme()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83D\\uDC1E 反馈问题\",\n        \"type\": \"button\",\n        \"action\": \"startGithubIssue()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"⭐️ 收藏项目\",\n        \"type\": \"button\",\n        \"action\": \"startGithubLogin()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"\\uD83C\\uDD7F️ 书源频道\",\n        \"type\": \"button\",\n        \"action\": \"startTelegram()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"❤\\uFE0F 赞助开发\",\n        \"type\": \"button\",\n        \"action\": \"startGithubSponsor()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    }\n]",
        "loginUrl": "function getWebViewUA() {\n    let userAgent = String(java.getWebViewUA())\n    if (userAgent.includes(\"Windows NT 10.0; Win64; x64\")) {\n        userAgent = \"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36\"\n    }\n    return String(userAgent)\n}\n\nfunction login() {}\n\nfunction startBrowser(url, title) {\n    let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${getWebViewUA()}\"}}`\n    if (url.includes(\"https://github.com\")) {\n        if (url.includes(\"issues\")) msg += \"🐞 反馈问题\"\n        else if (url.includes(\"doc\")) msg += \"🔰 使用指南\"\n        else msg += \"⭐️ 收藏项目\"\n        msg += \"\\n\\n即将打开 Github\\n请确认已开启代理/梯子/VPN等\"\n    } else if (url.includes(\"https://t.me\")) {\n        if (url.includes(\"FurryReading\")) msg += \"🐺 兽人阅读频道\"\n        else if (url.includes(\"joinchat\")) msg += \"🐞 反馈群组\"\n        msg += \"\\n\\n即将打开 Telegram\\n请确认已开启代理/梯子/VPN等\"\n    }\n    sleepToast(msg)\n    java.startBrowser(`${url}, ${headers}`, title)\n}\n\nfunction startGithub() {\n    startBrowser(\"https://github.com/DowneyRem/PixivSource\", \"书源介绍\")\n}\nfunction startGithubLogin() {\n    startBrowser(\"https://github.com/login?return_to=https://github.com/DowneyRem/PixivSource\", \"收藏项目\")\n}\nfunction startGithubIssue() {\n    startBrowser(\"https://github.com/DowneyRem/PixivSource/issues\", \"反馈问题\")\n}\nfunction startGithubReadme() {\n    startBrowser(\"https://downeyrem.github.io/PixivSource/Pixiv\", \"使用指南\")\n}\nfunction startGithubSponsor() {\n    startBrowser(\"https://downeyrem.github.io/PixivSource/Sponsor\", \"使用指南\")\n}\nfunction startTelegram() {\n    startBrowser(\"https://t.me/PixivSource\", \"Pixiv 书源频道\")\n}",
        "singleUrl": true,
        "sourceComment": "Pixiv 书源项目\n\n可用功能：✅导入书源✅更新书源\n\n书源发布：\nPixiv 书源频道 https://t.me/PixivSource\n兽人阅读频道 https://t.me/FurryReading\n\n项目地址：\nhttps://github.com/DowneyRem/PixivSource\nhttps://github.com/eigeen/PixivSourceProject\n\n规则订阅：Import 订阅源\nhttps://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/import.json\nhttps://raw.githubusercontent.com/DowneyRem/PixivSource/main/import.json",
        "type": 0
    }
]