// ==UserScript==
// @name yande.re mobile adaptation
// @namespace http://tampermonkey.net/
// @version 0.0.4
// @description Mobile adaptation for yande.re | yande.re 移动端适配
// @author Exisi
// @license MIT License
// @supportURL https://exi.software
// @match *://yande.re/post/show/*
// @match *://yande.re/post/similar/*
// @downloadURL none
// ==/UserScript==
(function () {
"use strict";
const styles = {
header: `* { font-size: 100%; } #news-ticker { display: flex; align-items: center; } #news-ticker li { font-size: 35px; word-break: break-all; } #news-ticker .close-link { font-size: 35px; } #header #title { display: flex; justify-content: center; height: 85px !important; } #header #main-menu { font-size: 35px; } #header #main-menu ul { margin: 0; }`,
postShow: `.sidebar h5 { font-size: 35px; } #content { margin: 0; } .status-notice, .js-posts-show-edit-tab, .js-posts-show-comments-tab, h4:has(.js-posts-show-edit-tab), .tag-completion-box .color-tag-types, .sidebar form #tags, .sidebar #tag-sidebar, .sidebar ul { font-size: 34px !important; margin-right: 0 !important; margin-left: 0 !important; } .sidebar form #tags { width: -webkit-fill-available; } #comments { max-width: 100% !important; } .sidebar, #right-col, #comments textarea { width: 100% !important; } #comments input[type="submit"] { margin-top: 15px; font-size: 34px; border: 1px solid #ffffff; border-radius: 5px; padding: 10px 20px; box-sizing: border-box; } #comments input[type="submit"]:hover{ background-color: #ffaaae; border-color: #ffaaae; }`,
postSimilar: `#content { margin: 0; } .sidebar h5 { font-size: 35px; } .sidebar, .content { width: 100% !important; } .sidebar form #tags { width: -webkit-fill-available; } .sidebar select#mode, .tag-completion-box .color-tag-types, .sidebar form #tags, .sidebar #tag-sidebar, .sidebar ul, .sidebar #blacklisted-tag-add { font-size: 34px !important; margin-right: 0 !important; margin-left: 0 !important; } .sidebar select#mode { width: 50% !important; height: 40px; } .sidebar #blacklisted-sidebar h5 a.no-focus-outline { color: #ffffff; } #similar-form table.form { font-size: 30px !important; width: 100%; } #similar-form table.form input#url { width: 100% !important; } #similar-form table.form input[type="submit"], #blacklisted-tag-add a.text-button { margin-top: 15px; font-size: 30px; border: 1px solid #ffffff; border-radius: 5px; padding: 5px 15px; box-sizing: border-box; } #similar-form table.form input[type="submit"]:hover { background-color: #ffaaae; border-color: #ffaaae; } #post-list-posts { display: grid !important; grid-template-columns: 1fr 1fr; gap: 25px; margin-bottom: 30px; } #post-list-posts li, #post-list-posts li .inner { width: 100% !important; } #post-list-posts li .inner, #post-list-posts li .inner a img.preview { width: 100% !important; height: 100% !important; }`,
footer: `div.footer, form select[name="locale"], form:has(select[name="locale"]) button[type="submit"] { font-size: 34px !important; margin-right: 0 !important; margin-left: 0 !important; } form:has(select[name="locale"]) button[type="submit"] { font-size: 34px; border: 1px solid #ffffff; border-radius: 5px; box-sizing: border-box; } form:has(select[name="locale"]) button[type="submit"]:hover { background-color: #ffaaae; border-color: #ffaaae; } form:has(select[name="locale"]) { display: flex; justify-content: center; gap: 5px; margin: 20px 0; }`,
};
const styleElement = document.createElement("style");
styleElement.innerHTML = `${styles.header} ${styles.footer}`;
const match = {
isPostShow: location.href.includes("post/show"),
isPostSimilar: location.href.includes("post/similar"),
};
const content = document.querySelector(".content");
if (match.isPostShow) {
styleElement.innerHTML += styles.postShow;
const quickBtnBar = document.createElement("div");
Object.assign(quickBtnBar.style, {
display: "flex",
flexDirection: "row",
justifyContent: "center",
gap: "10px",
cursor: "default",
});
const features = {
addToFavorites: {
target: [document.querySelector("#add-to-favs a"), document.querySelector("#remove-from-favs a")],
icon: [
``,
``,
],
},
viewOrigin: {
target: [document.querySelector("ul a.original-file-changed.highres-show")],
icon: [
``,
],
},
download: {
target: [document.querySelector("ul a.original-file-changed")],
icon: [
``,
],
},
FindDupes: {
target: [document.querySelector("ul a#find-dupes")],
icon: [
``,
],
},
findSimilar: {
target: [document.querySelector("ul a#find-similar")],
icon: [
``,
],
},
};
Object.keys(features).forEach((feature) => {
const quickBtn = document.createElement("div");
Object.assign(quickBtn.style, {
padding: "15px",
borderRadius: "50%",
border: "none",
cursor: "pointer",
display: "flex",
alignItems: "center",
justifyContent: "center",
});
let icon = features[feature].icon[0];
let target = features[feature].target[0];
if (feature == "addToFavorites" && features[feature].target[0].parentNode.style.display == "none") {
icon = features[feature].icon[1];
target = features[feature].target[1];
}
quickBtn.innerHTML = icon;
const iconElement = quickBtn.querySelector("svg");
Object.assign(iconElement.style, {
width: "50px",
height: "50px",
color: "#ffaaae",
});
quickBtnBar.appendChild(quickBtn);
const [addToFavorites, removeFavorite] = features[feature].target;
quickBtn.addEventListener("click", () => {
if (feature !== "addToFavorites") {
features[feature].target[0].click();
return;
}
const [dislikeIcon, likeIcon] = features[feature].icon;
if (addToFavorites.parentNode.style.display == "none") {
removeFavorite.click();
quickBtn.innerHTML = dislikeIcon;
const iconElement = quickBtn.querySelector("svg");
Object.assign(iconElement.style, {
width: "50px",
height: "50px",
color: "#ffaaae",
});
return;
}
addToFavorites.click();
quickBtn.innerHTML = likeIcon;
const iconElement = quickBtn.querySelector("svg");
Object.assign(iconElement.style, {
width: "50px",
height: "50px",
color: "#ffaaae",
});
});
if (feature === "addToFavorites") {
addToFavorites.addEventListener("click", () => quickBtn.click());
removeFavorite.addEventListener("click", () => quickBtn.click());
}
});
content.appendChild(quickBtnBar);
const sidebar = document.querySelector(".sidebar");
content.appendChild(sidebar);
}
if (match.isPostSimilar) {
styleElement.innerHTML += styles.postSimilar;
const sidebar = document.querySelector(".sidebar");
content.firstChild.before(sidebar);
const blockListBox = document.querySelector("#blacklisted-list-box");
const blockListUl = document.createElement("ul");
blockListUl.innerHTML = "Show All Posts";
blockListUl.style.color = "#ffaaae";
blockListUl.style.marginTop = "5px";
blockListUl.addEventListener("click", () => {
const blockList = document.querySelectorAll(".blacklisted-tags a.no-focus-outline");
blockList.forEach((link) => link.click());
blockListUl.innerHTML = blockListUl.innerHTML === "Show All Posts" ? "Hide block Posts" : "Show All Posts";
});
blockListBox.after(blockListUl);
}
document.head.appendChild(styleElement);
})();