-
-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathbtsrk.json
More file actions
140 lines (140 loc) · 37 KB
/
btsrk.json
File metadata and controls
140 lines (140 loc) · 37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
[
{
"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 getWebViewUA() {\n let {java} = this\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 sleep(seconds) {\n return Packages.java.lang.Thread.sleep(1000*seconds)\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 this.sleep(1000*second)\n}",
"lastUpdateTime": 1773936000251,
"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\": \"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\": \"\\uD83D\\uDCD8 书源指南\",\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\": \"startGithub()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDCBE 备份恢复\",\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\": \"\\uD83D\\uDCD6 阅读频道\",\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(\"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 startBrowser(url, title) {\n let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${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 sleepToast(msg)\n java.startBrowser(`${url}, ${headers}`, title)\n}\n\nfunction startPixivSettings() {\n startBrowser(\"https://www.pixiv.net/settings/viewing\", \"账号设置\")\n}\n\nfunction startGithubIssue() {\n startBrowser(\"https://github.com/DowneyRem/PixivSource/issues\", \"反馈问题\")\n}\nfunction startGithub() {\n startBrowser(\"https://github.com/DowneyRem/PixivSource\", \"收藏项目\")\n}\n\nfunction startGithubIntroduction() {\n startBrowser(\"https://pixivsource.pages.dev/BetterExperience\", \"使用指南\")\n}\nfunction startGithubReadme() {\n startBrowser(\"https://pixivsource.pages.dev/Pixiv\", \"书源指南\")\n}\nfunction startGithubWebdavBackup() {\n startBrowser(\"https://pixivsource.pages.dev/WebdavBackup\", \"备份恢复\")\n}\nfunction startGithubRemoteBooks() {\n startBrowser(\"https://pixivsource.pages.dev/RemoteBooks\", \"远程书籍\")\n}\nfunction startGithubSponsor() {\n startBrowser(\"https://pixivsource.pages.dev/Sponsor\", \"支持开发\")\n}\n\nfunction startTelegram() {\n startBrowser(\"https://t.me/PixivSource\", \"书源频道\")\n}\nfunction startTelegramLegado() {\n startBrowser(\"https://t.me/ReadSigma\", \"阅读频道\")\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": 2,
"sourceName": "Linpx",
"sourceUrl": "https://furrynovel.ink/?from=read",
"sourceIcon": "https://furrynovel.ink/apple-touch-icon.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: 8.1%;left: 9.5%;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/linpx.json','_blank');\">导入书源</button>`;\n document.body.appendChild(btn);\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}\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 getWebViewUA() {\n let {java} = this\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 sleep(seconds) {\n return Packages.java.lang.Thread.sleep(1000*seconds)\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 this.sleep(1000*second)\n}",
"lastUpdateTime": 1773936000251,
"loginUi": "[\n {\n \"name\": \"🔰 使用指南\",\n \"type\": \"button\",\n \"action\": \"startGithubIntroduction()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDCD9 书源指南\",\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\": \"startGithub()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDCBE 备份恢复\",\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\": \"\\uD83D\\uDC3A 兽人阅读\",\n \"type\": \"button\",\n \"action\": \"startTelegramFurryReading()\",\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\nfunction startBrowser(url, title) {\n let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${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 sleepToast(msg)\n java.startBrowser(`${url}, ${headers}`, title)\n}\n\nfunction startGithubIssue() {\n startBrowser(\"https://github.com/DowneyRem/PixivSource/issues\", \"反馈问题\")\n}\nfunction startGithub() {\n startBrowser(\"https://github.com/DowneyRem/PixivSource\", \"收藏项目\")\n}\n\nfunction startGithubIntroduction() {\n startBrowser(\"https://pixivsource.pages.dev/BetterExperience\", \"使用指南\")\n}\nfunction startGithubReadme() {\n startBrowser(\"https://pixivsource.pages.dev/Linpx\", \"书源指南\")\n}\nfunction startGithubWebdavBackup() {\n startBrowser(\"https://pixivsource.pages.dev/WebdavBackup\", \"备份恢复\")\n}\nfunction startGithubRemoteBooks() {\n startBrowser(\"https://pixivsource.pages.dev/RemoteBooks\", \"远程书籍\")\n}\nfunction startGithubSponsor() {\n startBrowser(\"https://pixivsource.pages.dev/Sponsor\", \"支持开发\")\n}\n\nfunction startTelegram() {\n startBrowser(\"https://t.me/PixivSource\", \"书源频道\")\n}\nfunction startTelegramLegado() {\n startBrowser(\"https://t.me/ReadSigma\", \"阅读频道\")\n}\nfunction startTelegramFurryReading() {\n startBrowser(\"https://t.me/FurryReading\", \"兽人阅读频道\")\n}",
"singleUrl": true,
"sourceComment": "Linpx 订阅源\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": 3,
"sourceName": "兽人小说站",
"sourceUrl": "https://www.furrynovel.com/zh/?utm_source=reader",
"sourceIcon": "https://www.furrynovel.com/static/icon.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\"}",
"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: 8.1%;left: 9.5%;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/linpx.json','_blank');\">导入书源</button>`;\n document.body.appendChild(btn);\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}\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 getWebViewUA() {\n let {java} = this\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 sleep(seconds) {\n return Packages.java.lang.Thread.sleep(1000*seconds)\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 this.sleep(1000*second)\n}",
"lastUpdateTime": 1773936000251,
"loginUi": "[\n {\n \"name\": \"🔰 使用指南\",\n \"type\": \"button\",\n \"action\": \"startGithubIntroduction()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDCD8 书源指南\",\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\": \"startGithub()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDCBE 备份恢复\",\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\": \"\\uD83D\\uDC3A 兽人阅读\",\n \"type\": \"button\",\n \"action\": \"startTelegramFurryReading()\",\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\nfunction startBrowser(url, title) {\n let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${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 sleepToast(msg)\n java.startBrowser(`${url}, ${headers}`, title)\n}\n\nfunction startGithubIssue() {\n startBrowser(\"https://github.com/DowneyRem/PixivSource/issues\", \"反馈问题\")\n}\nfunction startGithub() {\n startBrowser(\"https://github.com/DowneyRem/PixivSource\", \"收藏项目\")\n}\n\nfunction startGithubIntroduction() {\n startBrowser(\"https://pixivsource.pages.dev/BetterExperience\", \"使用指南\")\n}\nfunction startGithubReadme() {\n startBrowser(\"https://pixivsource.pages.dev/FurryNovel\", \"书源指南\")\n}\nfunction startGithubWebdavBackup() {\n startBrowser(\"https://pixivsource.pages.dev/WebdavBackup\", \"备份恢复\")\n}\nfunction startGithubRemoteBooks() {\n startBrowser(\"https://pixivsource.pages.dev/RemoteBooks\", \"远程书籍\")\n}\nfunction startGithubSponsor() {\n startBrowser(\"https://pixivsource.pages.dev/Sponsor\", \"支持开发\")\n}\n\nfunction startTelegram() {\n startBrowser(\"https://t.me/PixivSource\", \"书源频道\")\n}\nfunction startTelegramLegado() {\n startBrowser(\"https://t.me/ReadSigma\", \"阅读频道\")\n}\nfunction startTelegramFurryReading() {\n startBrowser(\"https://t.me/FurryReading\", \"兽人阅读频道\")\n}",
"singleUrl": true,
"sourceComment": "兽人控小说站 订阅源\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://pixivsource.pages.dev",
"sourceIcon": "https://pixivsource.pages.dev/favicon-512x512.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\"}",
"jsLib": "function getWebViewUA() {\n let {java} = this\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 sleep(seconds) {\n return Packages.java.lang.Thread.sleep(1000*seconds)\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 this.sleep(1000*second)\n}",
"lastUpdateTime": 1773936000251,
"loginUi": "[\n {\n \"name\": \"🔰 使用指南\",\n \"type\": \"button\",\n \"action\": \"startGithubIntroduction()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDCD8 书源指南\",\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\": \"startGithub()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDCBE 备份恢复\",\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\": \"\\uD83D\\uDCD6 阅读频道\",\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\nfunction startBrowser(url, title) {\n let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${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 sleepToast(msg)\n java.startBrowser(`${url}, ${headers}`, title)\n}\n\nfunction startGithubIssue() {\n startBrowser(\"https://github.com/DowneyRem/PixivSource/issues\", \"反馈问题\")\n}\nfunction startGithub() {\n startBrowser(\"https://github.com/DowneyRem/PixivSource\", \"收藏项目\")\n}\n\nfunction startGithubIntroduction() {\n startBrowser(\"https://pixivsource.pages.dev/BetterExperience\", \"使用指南\")\n}\nfunction startGithubReadme() {\n startBrowser(\"https://pixivsource.pages.dev/Pixiv\", \"书源指南\")\n}\nfunction startGithubWebdavBackup() {\n startBrowser(\"https://pixivsource.pages.dev/WebdavBackup\", \"备份恢复\")\n}\nfunction startGithubRemoteBooks() {\n startBrowser(\"https://pixivsource.pages.dev/RemoteBooks\", \"远程书籍\")\n}\nfunction startGithubSponsor() {\n startBrowser(\"https://pixivsource.pages.dev/Sponsor\", \"支持开发\")\n}\n\nfunction startTelegram() {\n startBrowser(\"https://t.me/PixivSource\", \"书源频道\")\n}\nfunction startTelegramLegado() {\n startBrowser(\"https://t.me/ReadSigma\", \"阅读频道\")\n}\nfunction startTelegramFurryReading() {\n startBrowser(\"https://t.me/FurryReading\", \"兽人阅读频道\")\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
},
{
"customOrder": 5,
"sourceName": "兽人控游戏索引",
"sourceUrl": "https://furrygames.top/zh-cn/list-b.html",
"sourceIcon": "https://cdn.jsdelivr.net/gh/FurryGamesIndex/games@master/assets/_README/logo.png",
"sourceGroup": "🐲 Furry",
"loginUrl": "https://github.com/FurryGamesIndex/games",
"lastUpdateTime": 1763049600251,
"articleStyle": 0,
"enableJs": true,
"enabled": true,
"enabledCookieJar": true,
"singleUrl": true,
"type": 0
},
{
"customOrder": 6,
"sourceName": "兽人游戏库",
"sourceUrl": "https://kemono.games/zh-Hans/explore?sort=latest_update",
"sourceIcon": "https://img.srkyxk.com/logo-512x512.png",
"sourceGroup": "🐲 Furry",
"loginUrl": "https://kemono.games/zh-Hans/user/login",
"lastUpdateTime": 1763049600251,
"articleStyle": 0,
"enableJs": true,
"enabled": true,
"enabledCookieJar": true,
"singleUrl": true,
"type": 0
},
{
"customOrder": 7,
"sourceName": "兽展日历",
"sourceUrl": "https://www.furrycons.cn",
"sourceIcon": "https://images.furrycons.cn/logo_800x800.png",
"sourceGroup": "🐲 Furry",
"loginUrl": "https://github.com/FurryConsChina/website",
"lastUpdateTime": 1763049600251,
"articleStyle": 0,
"enableJs": true,
"enabled": true,
"enabledCookieJar": true,
"singleUrl": true,
"type": 0
},
{
"customOrder": 8,
"sourceName": "兽聚汇总",
"sourceUrl": "https://www.furryfusion.net",
"sourceIcon": "https://www.furryfusion.net/images/LOGO.png",
"sourceGroup": "🐲 Furry",
"lastUpdateTime": 1763049600251,
"articleStyle": 0,
"enableJs": true,
"enabled": true,
"enabledCookieJar": true,
"singleUrl": true,
"type": 0
}
]