Pixiv

https://www.pixiv.net/novel,{"js":"java.longToast('请使用右上角菜单中的【登录】进行登录/退出账号')"}

分享者: DowneyRem (9968)发布时间: 09/15 19:41

Pixiv 订阅源


可用功能:✅添加小说(配合书源)✅更新书源

添加小说:打开小说,【刷新】,点击【加入书架】按钮,添加小说到书架


书源发布:

Pixiv 书源频道 https://t.me/PixivSource

兽人阅读频道 https://t.me/FurryReading


项目地址:

https://github.com/DowneyRem/PixivSource


规则订阅:

https://cdn.jsdelivr.net/gh/DowneyRem/PixivSource@main/btsrk.json

https://raw.githubusercontent.com/DowneyRem/PixivSource/main/btsrk.json

二维码导入
{
    "articleStyle": 0,
    "cacheFirst": false,
    "customOrder": 1,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\"User-Agent\":\"Mozilla\/5.0 (Linux; Android 10; K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/150.0.0.0 Mobile Safari\/537.36 Reader\"}",
    "injectJs": "if (!document.getElementById('open-yuedu-bookshelf')) {\n    const style = document.createElement('style');\n    style.textContent = `\n        .yuedu-float-btn {\n            z-index: 9999999999;\n            position: fixed;\n            bottom: 13%;\n            padding: 11px 20px;\n            border-radius: 8px;\n            border: none;\n            color: #fff;\n            font-weight: 500;\n            font-size: clamp(14px, 3.8vw, 17px);\n            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n            transition: all 0.25s ease;\n            cursor: pointer;\n            user-select: none;\n            white-space: nowrap;\n        }\n\n        .yuedu-float-btn:hover {\n            transform: scale(1.08);\n            box-shadow: 0 6px 18px rgba(0, 0, 0, 0.25);\n        }\n        .yuedu-float-btn:active {\n            transform: scale(0.96);\n        }\n    `;\n    document.head.appendChild(style);\n\n    \/\/ 域名判断\n    const currentUrl = window.location.href;\n    const isPixiv = \/pixiv\\.net\/i.test(currentUrl);\n    const isLinpx = \/linpx\\.ink\/i.test(currentUrl);\n    const isFurryNovel = \/furrynovel\\.com\/i.test(currentUrl);\n\n    \/\/ 书源地址\n    let bookSourceUrl\n    if (isPixiv) {\n        bookSourceUrl = 'https:\/\/cdn.jsdelivr.net\/gh\/DowneyRem\/PixivSource@main\/pixiv.json'\n    } else {\n        bookSourceUrl = 'https:\/\/cdn.jsdelivr.net\/gh\/DowneyRem\/PixivSource@main\/linpx.json'\n    }\n\n    \/\/ 按钮颜色(linpx 用黄色,其他用蓝色)\n    const mainColor = isLinpx ? '#ff9900' : '#1da5f9';\n    const hoverColor = isLinpx ? '#ffaa22' : '#40b6ff';\n\n    \/\/ 「导入书源」按钮 - 左下\n    const btn = document.createElement('button');\n    btn.id = 'impotr-booksource';\n    btn.className = 'yuedu-float-btn';\n    btn.style.backgroundColor = mainColor;\n    btn.style.left = '10%';\n    btn.textContent = '导入书源';\n    document.body.appendChild(btn);\n\n    btn.onclick = () => {\n        window.open(`legado:\/\/import\/bookSource?src=${encodeURIComponent(bookSourceUrl)}`, '_blank');\n    };\n\n    \/\/ 「加入书架」按钮 - 右下\n    if (!isFurryNovel) {\n        const btn2 = document.createElement('button');\n        btn2.id = 'open-yuedu-bookshelf';\n        btn2.className = 'yuedu-float-btn';\n        btn2.style.backgroundColor = mainColor;\n        btn2.style.right = '10%';\n        btn2.textContent = '加入书架';\n        document.body.appendChild(btn2);\n\n        btn2.onclick = () => {\n            window.open(`legado:\/\/import\/addToBookshelf?src=${encodeURIComponent(window.location.href)}`, '_blank');\n        };\n    }\n\n    \/\/ Hover 颜色\n    const hoverStyle = document.createElement('style');\n    hoverStyle.textContent = `\n        #impotr-booksource:hover,\n        #open-yuedu-bookshelf:hover {\n            background-color: ${hoverColor} !important;\n        }\n    `;\n    document.head.appendChild(hoverStyle);\n}",
    "jsLib": "function getWebViewUA() {\n    let {java} = this\n    let userAgent = String(java.getWebViewUA())\n    return String(userAgent)\n}\n\nfunction sleep(seconds) {\n    return Packages.java.lang.Thread.sleep(1000*seconds)\n}\n\nfunction sleepToast(text, second) {\n    const {java} = this\n    java.log(text)\n    java.longToast(text)\n    if (second === undefined) {second = 0.01}\n    this.sleep(second)\n}\n\nfunction startBrowser(url, title) {\n    const {java} = this\n    let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${this.getWebViewUA()}\"}}`\n    if (url.includes(\"pixiv.net\")) {\n        msg += \"\\n\\n即将打开 Pixiv\\n请确认已开启代理\/梯子\/VPN等\"\n    } else if (url.includes(\"github\")) {\n        msg += \"\\n\\n即将打开 Github\\n请确认已开启代理\/梯子\/VPN等\"\n    } else if (url.includes(\"https:\/\/t.me\/\")){\n        msg += \"\\n\\n即将打开 Telegram\\n请确认已开启代理\/梯子\/VPN等\"\n    }\n    if (msg) this.sleepToast(msg)\n    java.startBrowser(`${url}, ${headers}`, title)\n}\n\nfunction startPixivSettings() {\n    const {java} = this\n    this.startBrowser(\"https:\/\/www.pixiv.net\/settings\/viewing\", \"账号设置\")\n}\n\nfunction startGithubReadme() {\n    const {java, source} = this\n    if (source.sourceUrl.includes(\"pixiv.net\")) {\n        this.startBrowser(\"https:\/\/pixivsource.pages.dev\/Pixiv\", \"书源指南\")\n    } else if (source.sourceUrl.includes(\"linpx.ink\")) {\n        this.startBrowser(\"https:\/\/pixivsource.pages.dev\/Linpx\", \"书源指南\")\n    } else if (source.sourceUrl.includes(\"furrynovel.com\")) {\n        this.startBrowser(\"https:\/\/pixivsource.pages.dev\/FurryNovel\", \"书源指南\")\n    }\n}\n\nfunction startGithubIssue() {\n    const {java} = this\n    this.startBrowser(\"https:\/\/github.com\/DowneyRem\/PixivSource\/issues\", \"反馈问题\")\n}\nfunction startGithub() {\n    const {java} = this\n    this.startBrowser(\"https:\/\/github.com\/DowneyRem\/PixivSource\", \"收藏项目\")\n}\n\nfunction startGithubIntroduction() {\n    const {java} = this\n    this.startBrowser(\"https:\/\/pixivsource.pages.dev\/BetterExperience\", \"使用指南\")\n}\nfunction startGithubWebdavBackup() {\n    const {java} = this\n    this.startBrowser(\"https:\/\/pixivsource.pages.dev\/WebdavBackup\", \"备份恢复\")\n}\nfunction startGithubRemoteBooks() {\n    const {java} = this\n    this.startBrowser(\"https:\/\/pixivsource.pages.dev\/RemoteBooks\", \"远程书籍\")\n}\nfunction startGithubSponsor() {\n    const {java} = this\n    this.startBrowser(\"https:\/\/pixivsource.pages.dev\/Sponsor\", \"支持开发\")\n}\n\nfunction startTelegram() {\n    const {java} = this\n    this.startBrowser(\"https:\/\/t.me\/PixivSource\", \"书源频道\")\n}\nfunction startTelegramLegado() {\n    const {java} = this\n    this.startBrowser(\"https:\/\/t.me\/ReadSigma\", \"阅读频道\")\n}\nfunction startTelegramFurryReading() {\n    const {java} = this\n    this.startBrowser(\"https:\/\/t.me\/FurryReadingRE\", \"兽人阅读频道\")\n}",
    "lastUpdateTime": 1784390400251,
    "loadWithBaseUrl": true,
    "loginUi": "[\n    {\n        \"name\": \"🅿️️ 登录账号\",\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\": \"🔙 退出账号\",\n        \"type\": \"button\",\n        \"action\": \"logout()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n\n    {\n        \"name\": \"书源设置\",\n        \"type\": \"text\"\n    },\n    {\n        \"name\": \"🔢 章节编号\",\n        \"type\": \"button\",\n        \"action\": \"editSettings('ADD_CHAPTER_INDEX')\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"❤️ 自动收藏\",\n        \"type\": \"button\",\n        \"action\": \"editSettings('AUTO_LIKE_NOVELS')\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"📚 整合系列\",\n        \"type\": \"button\",\n        \"action\": \"editSettings('COMBINE_NOVELS')\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n\n    {\n        \"name\": \"书源相关\",\n        \"type\": \"text\"\n    },\n    {\n        \"name\": \"🔰 使用指南\",\n        \"type\": \"button\",\n        \"action\": \"startGithubIntroduction()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"📘 书源指南\",\n        \"type\": \"button\",\n        \"action\": \"startGithubReadme()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"🐞 反馈问题\",\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\": \"startGithub()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"💾 备份恢复\",\n        \"type\": \"button\",\n        \"action\": \"startGithubWebdavBackup()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"☁️ 远程书籍\",\n        \"type\": \"button\",\n        \"action\": \"startGithubRemoteBooks()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"📖 阅读频道\",\n        \"type\": \"button\",\n        \"action\": \"startTelegramLegado()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"✈️ 书源频道\",\n        \"type\": \"button\",\n        \"action\": \"startTelegram()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    },\n    {\n        \"name\": \"☕ ️支持开发\",\n        \"type\": \"button\",\n        \"action\": \"startGithubSponsor()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": -1\n        }\n    }\n]",
    "loginUrl": "function 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(\"pixivHeaders\")\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 putInCacheObject(objectName, object, saveSeconds) {\n    if (object === undefined) object = null\n    if (saveSeconds === undefined) saveSeconds = 0\n    cache.put(objectName, JSON.stringify(object), saveSeconds)\n}\n\nfunction getFromCacheObject(objectName) {\n    let object = cache.get(objectName)\n    if (object === undefined) return null  \/\/ 兼容源阅,避免 parse 报错\n    return JSON.parse(object)\n}\n\nfunction statusMsg(status) {\n    if (status === true) return \"✅ 已开启\"\n    else if (status === false) return \"🚫 已关闭\"\n    else if (status === undefined) return \"🈚️ 未设置\"\n}\n\nconst settingsName = {\n    \"ADD_CHAPTER_INDEX\": \"🔢 章节编号\",\n    \"AUTO_LIKE_NOVELS\": \"❤️ 自动收藏\",\n    \"COMBINE_NOVELS\": \"📚 整合系列\",\n}\n\nfunction editSettings(settingName) {\n    let msg, status\n    let settings = getFromCacheObject(\"pixivSettings\")\n    \/\/ if (!settings) settings = setDefaultSettings()\n    if (!!settings[settingName]) {\n        status = settings[settingName] = !settings[settingName]\n    } else {\n        status = settings[settingName] = true\n    }\n    putInCacheObject(\"pixivSettings\", settings)\n    msg = `\\n\\n${statusMsg(status)} ${settingsName[settingName]}`\n    sleepToast(msg)\n}",
    "preload": false,
    "showWebLog": false,
    "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\n\n规则订阅:\nhttps:\/\/cdn.jsdelivr.net\/gh\/DowneyRem\/PixivSource@main\/btsrk.json\nhttps:\/\/raw.githubusercontent.com\/DowneyRem\/PixivSource\/main\/btsrk.json",
    "sourceGroup": "🅿️ Pixiv,🐲 Furry",
    "sourceIcon": "https:\/\/asset.brandfetch.io\/idIlKj_n7C\/idSsbP7h1m.png",
    "sourceName": "Pixiv",
    "sourceUrl": "https:\/\/www.pixiv.net\/novel,{\"js\":\"java.longToast('请使用右上角菜单中的【登录】进行登录\/退出账号')\"}",
    "type": 0
}
广告