2/5/2021, 10:00:00 AM
目前為
// ==UserScript==
// @name 导出动漫之家订阅漫画到Tachiyomi漫画阅读器
// @namespace https://i.dmzj1.com//subscribe
// @match https://i.dmzj.com//subscribe
// @match https://i.dmzj1.com//subscribe
// @grant GM_registerMenuCommand
// @run-at document-end
// @version 0.2
// @author 芜湖
// @description 2/5/2021, 10:00:00 AM
// ==/UserScript==
/*
*该脚本可在浏览器控制台或Violentmonkey、Tampermonkey等用户脚本管理器中运行。
*用户脚本管理器:在用户脚本管理器内安装此脚本后,指定网址:https://i.dmzj1.com//subscribe ,登录动漫之家账号后
点击浏览器工具栏的用户脚本管理器图标,点击“开始导出动漫之家订阅”即可运行此脚本。
*控制台:打开指定网址:https://i.dmzj1.com//subscribe ,登录动漫之家账号后,复制该脚本的所有内容,粘贴到浏览器控制台输入框,
回车开始运行。
*导入tachiyomi:在 <tachiyomi设置> → <备份> 中点击“还原备份”,选择此脚本导出的JSON文件即可开始导入。
--说明--------------------------------------
*一次性导出过多漫画到tachiyomi书架内会对你查找原有的书架条目带来不便,同时也会严重拖慢tachiyomi更新书架的速度,
因此该脚本默认会把动漫之家导出的漫画放到名为"动漫之家备份"的书架分类下,你可以自行修改分类名称。
*不需要提前在tachiyomi中创建该分类,导入时会自动创建。
*导入tachiyomi后,建议在 <tachiyomi设置> → <书架> 中调整“默认分类”和“全局更新时包含的分类”:
- 新加入书架的漫画会自动放入“默认分类”,不需要每次加入书架时手动选择。
- “全局更新时包含的分类”,建议把“动漫之家备份”排除在外,避免条目过多而严重拖慢更新书架的速度。
- 当需要更新某个特定分类下的条目时,在书架页面点击画面顶部的选择栏,选中特定分类后,在靠近屏幕中间做出下拉手势即可。
*一个漫画可以存在于多个tachiyomi分类中,因此原先就加入了默认分类的动漫之家漫画依旧可以跟随全局更新。
--------------------------------------------
*/
(function () {
try {
if (GM_registerMenuCommand) {
GM_registerMenuCommand("开始导出动漫之家订阅", exportToTachiyomi);
}
} catch (error) {
exportToTachiyomi();
}
function exportToTachiyomi() {
//--可自行修改---------------------------------------
let categorieName = "动漫之家备份"; //指定分类名称,漫画会导出到这个分类下
//-------------------------------------------------
if (!(window.location.host.startsWith("i.dmzj"))) {
console.log("网址错误:" + window.location.href);
return;
}
// replaceAll 兼容性补丁
if (!String.prototype.replaceAll) {
String.prototype.replaceAll = function (str, newStr) {
// If a regex pattern
if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') {
return this.replace(str, newStr);
}
// If a string
return this.replace(new RegExp(str, 'g'), newStr);
};
}
let mangaList = new Map();
let nodelist = document.querySelectorAll("#my_subscribe_id .dy_content_li");
nodelist.forEach(element => {
let name = element.querySelector("h3").textContent;
let cid = element.querySelector("a.qx").getAttribute("value");
mangaList.set(cid, name);
});
console.log("找到" + mangaList.size + "个订阅");
class TachiyomiManga {
constructor(name, cid) {
this.manga = [
"/comic/comic_" + cid + ".json?version\u003d2.7.019", //网址
name, //漫画名
"2884190037559093788", //动漫之家插件识别ID
0,
0
]
this.categories = [
categorieName, //导出到特定分类
]
}
}
let tachiyomiMangaList = {
"version": 2,
"mangas": [],
"categories": [
[
categorieName,
0
]
],
"extensions": [
"2884190037559093788:动漫之家"
]
}
mangaList.forEach((value, key, map) => {
const m = new TachiyomiManga(value, key);
tachiyomiMangaList.mangas.push(m);
})
let json = JSON.stringify(tachiyomiMangaList);
json = json.replaceAll('"2884190037559093788"', '2884190037559093788');
//保存成文件
let elementA = document.createElement('a');
elementA.download = "dmzj_export_to_tachiyomi_" + (new Date().toLocaleString()) + ".json";
elementA.style.display = 'none';
let blob = new Blob([json]);
elementA.href = URL.createObjectURL(blob);
document.body.appendChild(elementA);
elementA.click();
document.body.removeChild(elementA);
}
})();