// ==UserScript==
// @name EH高亮本地本子
// @namespace http://tampermonkey.net/
// @version 2024.10.29
// @description 彩色高亮本地exhentai-manga-manager中存在的本子
// @author Cury
// @match *://exhentai.org/*
// @match *://e-hentai.org/*
// @icon https://raw.githubusercontent.com/SchneeHertz/exhentai-manga-manager/master/public/icon.png
// @grant GM_addStyle
// @grant GM.xmlHttpRequest
// @connect localhost
// @license MIT
// ==/UserScript==
(function () {
'use strict';
// 配置要使用的高亮颜色,下面出现的颜色均可选。
const hightlightColor = '霓虹色';
GM_addStyle(`
:root {
--彩虹色: linear-gradient(-90deg, #602ce5cc 0, #2ce597cc 20%, #e7bb18cc 40%, #ff7657cc 60%, #45c1eecc 80%, #2ce597cc 100%);
--夕阳海滩: linear-gradient(-90deg, #ff9a9e 0%, #fad0c4 99%, #fad0c4 100%);
--薰衣草田: linear-gradient(-90deg, #a18cd1 0%, #fbc2eb 100%);
--柑橘清新: linear-gradient(-90deg, #f6d365 0%, #fda085 100%);
--深海幻想: linear-gradient(-90deg, #43e97b 0%, #38f9d7 100%);
--樱花飞舞: linear-gradient(-90deg, #ff9a9e 0%, #fecfef 50%, #fecfef 100%);
--北极光: linear-gradient(-90deg, #4facfe 0%, #00f2fe 100%);
--秋叶飘落: linear-gradient(-90deg, #fa709a 0%, #fee140 100%);
--星空漫步: linear-gradient(-90deg, #30cfd0 0%, #330867 100%);
--热带雨林: linear-gradient(-90deg, #43e97b 0%, #38f9d7 100%);
--火焰燃烧: linear-gradient(-90deg, #ff9a9e 0%, #fad0c4 99%, #fad0c4 100%);
--日落色: linear-gradient(-90deg, #ff5e62cc 0%, #ff9966cc 50%, #ffcc66cc 100%);
--海洋色: linear-gradient(-90deg, #00c9ffcc 0%, #92fe9dcc 100%);
--星空色: linear-gradient(-90deg, #1e3c72cc 0%, #2a5298cc 100%);
--森林色: linear-gradient(-90deg, #005a3ccc 0%, #35c24ecc 100%);
--糖果色: linear-gradient(-90deg, #ff6b6bcc 0%, #f8b195cc 50%, #f67280cc 100%);
--黎明色: linear-gradient(-90deg, #f953c6cc 0%, #b91dcc 100%);
--霓虹色: linear-gradient(-90deg, #12c2eccc 0%, #c471edcc 50%, #f64f59cc 100%);
--地平线色: linear-gradient(-90deg, #f7971ecc 0%, #ffd200cc 100%);
--午夜蓝: linear-gradient(-90deg, #000428cc 0%, #004e92cc 100%);
--火焰色: linear-gradient(-90deg, #fc466bcc 0%, #3f5efbcc 100%);
}
`);
if (document.getElementById('searchbox') == null) {
return;
}
let dataHash;
const gids = new Set();
const checkUrl = (async function () {
const { response } = await GM.xmlHttpRequest({ url: 'http://localhost:23786/api/search?length=1000000' });
const result = JSON.parse(response);
if (result.hash === dataHash) {
gids.forEach(gid => {
const posted = document.getElementById(`posted_${gid}`);
if (posted) {
posted.style.borderColor = '#fff';
posted.style.backgroundImage = `var(--${hightlightColor})`;
}
});
return;
} else {
dataHash = result.hash;
}
result.data.forEach(manga => {
try {
const path = new URL(manga.url).pathname;
const gid = path.split('/')[2]
gids.add(gid);
} catch (ignored) { }
});
gids.forEach(gid => {
const posted = document.getElementById(`posted_${gid}`);
if (posted) {
posted.style.borderColor = '#fff';
posted.style.backgroundImage = `var(--${hightlightColor})`;
}
});
});
setInterval(checkUrl, 10000);
checkUrl();
})();