// ==UserScript==
// @name 编程猫使用优化
// @namespace https://shequ.codemao.cn/user/438403
// @version 1.9.42
// @description 对于在使用编程猫中遇到的各种问题的部分优化
// @author 小鱼yuzifu
// @match *://shequ.codemao.cn/*
// @icon https://creation.codemao.cn/884/l4zc7xoc.png?imageMogr2/thumbnail/!200x200r/blur/1x0/quality/100|imageslim
// @grant GM_xmlhttpRequest
// @require https://code.jquery.com/jquery-3.6.1.min.js
// @require https://cdn.jsdelivr.net/npm/lil-gui@0.16
// @require https://greasyfork.org/scripts/452713-%E7%BC%96%E5%88%9B%E5%8D%8Fmarkdown%E7%BC%96%E8%BE%91%E5%99%A8-%E5%B0%8F%E9%B1%BC%E9%9B%86%E6%88%90%E7%89%88/code/%E7%BC%96%E5%88%9B%E5%8D%8FMarkdown%E7%BC%96%E8%BE%91%E5%99%A8%EF%BC%88%E5%B0%8F%E9%B1%BC%E9%9B%86%E6%88%90%E7%89%88%EF%BC%89.js?version=1102750
// @license 616 SB License
// @downloadURL none
// ==/UserScript==
(function () {
'use strict';
GM_xmlhttpRequest({
method: "get",
url: "https://api.codemao.cn/creation-tools/v1/user/center/honor",
data: document.cookie,
binary: true,
async onload({ response }) {
$("li[data-watch_event='下载APP-入口tab']").after(`
`);
if ((window.location.href.indexOf("work/") != -1) && (parseInt(window.location.href.slice(25 + 5,)))) {
GM_xmlhttpRequest({
method: "get",
url: "https://api.codemao.cn/creation-tools/v1/works/" + parseInt(window.location.href.slice(25 + 5,)),
data: document.cookie,
binary: true,
async onload({ response }) {
if (JSON.parse(response).type == 'NEMO') {
$("li[data-watch_event='下载APP-入口tab']").after(`
旋转屏幕`);
var rotateDeg = 0
$("li[data-watch_event='旋转-入口tab']").click(function () {
rotateDeg -= 90;
document.documentElement.style.setProperty('--rotateDeg', 'rotate(' + rotateDeg + 'deg)');
document.documentElement.style.setProperty('--OppoRotateDeg', 'rotate(' + -rotateDeg + 'deg)');
//document.getElementById('player_cover').contentWindow.document.querySelector('body').style.transform='rotate(' + -rotateDeg + 'deg)'
})
}
}
})
}
$("head").after(``)
$('#custom-sett textarea').on('change', () => {
localStorage.setItem('custom-sett', document.querySelector('#custom-sett textarea').value)
document.querySelector('#custom-setts').innerHTML = document.querySelector('#custom-sett textarea').value
})
$('input#main-color').on('change', () => {
document.documentElement.style.setProperty('--main-color', document.querySelector('input#main-color').value);
localStorage.setItem('main-color', document.querySelector('input#main-color').value);
})
$('input#second-color').on('change', () => {
document.documentElement.style.setProperty('--second-color', document.querySelector('input#second-color').value);
localStorage.setItem('second-color', document.querySelector('input#second-color').value);
})
$('input#highlight-color').on('change', () => {
document.documentElement.style.setProperty('--highlight-color', document.querySelector('input#highlight-color').value);
localStorage.setItem('highlight-color', document.querySelector('#highlight-color').value);
})
$('input#level-shown').on('change', () => {
if (document.querySelector('input#level-shown').checked) {
document.documentElement.style.setProperty('--isLevelShown', '');
localStorage.setItem('isLevelShown', '');
}
else {
document.documentElement.style.setProperty('--isLevelShown', 'none');
localStorage.setItem('isLevelShown', 'none');
}
})
$('input[value="pic"]').on('change', () => {
document.documentElement.style.setProperty('--person-color', '');
document.documentElement.style.setProperty('--person-bg', localStorage.getItem('person-bg') || 'url(https://cdn-community.codemao.cn/community_frontend/asset/banner_65b4a.png)');
localStorage.setItem('person-setting', 'pic');
document.documentElement.style.setProperty('--person-setting', 'pic');
document.querySelector('#person-bg-btn').style.display = 'block';
document.querySelector('#person-color').style.display = 'none';
if ((window.location.href.indexOf("user") != -1) && (JSON.parse(response).user_id != parseInt(window.location.href.slice(25 + 5,)))) {
GM_xmlhttpRequest({
method: "get",
url: "https://api.codemao.cn/creation-tools/v1/user/center/honor?user_id=" + parseInt(window.location.href.slice(25 + 5,)),
data: document.cookie,
binary: true,
async onload({ response }) {
if (JSON.parse(response).user_cover == '') {
document.documentElement.style.setProperty('--person-bg', 'url(https://cdn-community.codemao.cn/community_frontend/asset/banner_65b4a.png)');
document.documentElement.style.setProperty('--person-color', '');
}
else {
document.documentElement.style.setProperty('--person-bg', 'url(' + JSON.parse(response).user_cover + ')');
document.documentElement.style.setProperty('--person-color', '');
}
}
})
}
})
$('input[value="color"]').on('change', () => {
document.documentElement.style.setProperty('--person-color', localStorage.getItem('person-color') || '#000');
document.documentElement.style.setProperty('--person-bg', '');
localStorage.setItem('person-setting', "color");
document.documentElement.style.setProperty('--person-setting', "color");
document.querySelector('#person-bg-btn').style.display = 'none';
document.querySelector('#person-color').style.display = 'block'
if ((window.location.href.indexOf("user") != -1) && (JSON.parse(response).user_id != parseInt(window.location.href.slice(25 + 5,)))) {
GM_xmlhttpRequest({
method: "get",
url: "https://api.codemao.cn/creation-tools/v1/user/center/honor?user_id=" + parseInt(window.location.href.slice(25 + 5,)),
data: document.cookie,
binary: true,
async onload({ response }) {
if (JSON.parse(response).user_cover == '') {
document.documentElement.style.setProperty('--person-bg', 'url(https://cdn-community.codemao.cn/community_frontend/asset/banner_65b4a.png)');
document.documentElement.style.setProperty('--person-color', '');
}
else {
document.documentElement.style.setProperty('--person-bg', 'url(' + JSON.parse(response).user_cover + ')');
document.documentElement.style.setProperty('--person-color', '');
}
}
})
}
})
$('input[fish]').on('change', function () {
document.querySelector('li[data-watch_event="' + this.value + '-入口tab"]').style.display = this.checked ? '' : 'none';
localStorage.setItem('isShown' + this.value, this.checked);
})
$('input[fish2]').on('change', function () {
document.documentElement.style.setProperty(this.value, this.checked ? '' : 'none');
localStorage.setItem(this.value, this.checked ? '' : 'none');
})
$('#person-color').on('change', function () {
document.documentElement.style.setProperty('--person-color', this.value);
localStorage.setItem('person-color', this.value);
})
$('#person-bg-btn').on('click', function () {
document.querySelector('#person-bg').click()
})
if (localStorage.getItem('isLevelShown') == 'none') {
document.querySelector('input#level-shown').checked = false;
}
else {
document.querySelector('input#level-shown').checked = true;
}
var i;
for (i of document.querySelectorAll('input[fish]')) {
if (localStorage.getItem('isShown' + i.value) != null) {
if (localStorage.getItem('isShown' + i.value) == 'true') {
document.querySelector('li[data-watch_event="' + i.value + '-入口tab"]').style.display = ''
i.checked = true
}
else {
document.querySelector('li[data-watch_event="' + i.value + '-入口tab"]').style.display = 'none'
i.checked = false
}
}
}
for (i of document.querySelectorAll('input[fish2]')) {
if (localStorage.getItem(i.value) != null) {
if (localStorage.getItem(i.value) == 'none') {
document.documentElement.style.setProperty(i.value, 'none');
i.checked = false
}
else {
document.documentElement.style.setProperty(i.value, '');
i.checked = true
}
}
}
$('#person-bg').on('change', function () {
var file = this.files[0];
if (!/image\/\w+/.test(file.type)) {
return false;
}
if (typeof FileReader != 'undefined') {
var reader = new FileReader();
var imgFile;
reader.readAsDataURL(file);
reader.onload = function (e) {
imgFile = e.target.result;
document.documentElement.style.setProperty('--person-bg', 'url(' + imgFile + ')');
localStorage.setItem('person-bg', 'url(' + imgFile + ')');
};
} else {
var URL = window.URL || window.webkitURL;
var imageURL = URL.createObjectURL(file);
document.documentElement.style.setProperty('--person-bg', 'url(' + imageURL + ')');
localStorage.setItem('person-bg', 'url(' + imageURL + ')');
}
})
const addRipple = function (e) {
let overlay = $("
")
overlay.removeClass("animate");
const x = parseInt(e.pageX - $(this).offset().left) - (overlay.width() / 2);
const y = parseInt(e.pageY - $(this).offset().top) - (overlay.height() / 2);
overlay.css(
{
left: x,
top: y
}
).addClass("animate");
$(this).append(overlay)
setTimeout(() => {
overlay.remove()
}, 500)
}
let rippleList = ['.c-navigator--header-content .c-navigator--nav_wrap .c-navigator--item a',
".c-navigator--dropdown-wrap li a",
".r-community--send_btn",
"li[data-watch_event='旋转-入口tab']",
".r-community-c-forum_sender--option",
".r-home-c-community_star--user_recommend_item",
".r-user-c-banner--btn",
".c-navigator--logout",
".c-navigator--cont .c-navigator--item",
".r-community-c-forum_sender--select_area span",
".r-community--forum_list div li",
".r-community--board_item",
".r-home-c-work_card--work_card"
]
setInterval(() => {
for (i of rippleList) {
if (!$(i).hasClass('yzf-animate')) {
$(i).addClass("yzf-animate")
$(i).css({
position: 'relative',
overflow: 'hidden',
transition: '0.1s ease-in'
})
if (i == ".r-home-c-community_star--user_recommend_item") {
$(i).children("a").mousedown(addRipple)
}
else {
$(i).mousedown(addRipple)
}
}
}
if (!(window.location.href.indexOf("work/") != -1) || !(parseInt(window.location.href.slice(25 + 5,)))) {
$("li[data-watch_event='旋转-入口tab']").remove()
}
if ((window.location.href.indexOf("community") != -1) || (window.location.href.indexOf("wiki/forum/") != -1)) {
try {
document.getElementsByClassName("c-model_box--title")[0].style.display = '';
document.getElementById("mceu_11").style.display = '';
}
catch (err) { }
if (document.querySelector('.r-community--forum_list2') == null) {
$('.r-community--forum_list').after("")
}
var reactTinymce
try {
reactTinymce = document.getElementById('react-tinymce-0_ifr').contentWindow.document.querySelectorAll('img')
}
catch (err) {
try {
reactTinymce = document.getElementById('react-tinymce-0_ifr').contentWindow.document.querySelectorAll('img')
}
catch (err) {
reactTinymce = document.getElementById('react-tinymce-1_ifr').contentWindow.document.querySelectorAll('img')
}
}
for (i of reactTinymce) {
if (i.className.indexOf("encode") == -1) {
i.src = i.src
i.className = 'encode'
i.removeAttribute('alt')
}
}
/* 论坛自动翻页功能(不完善,等下个版本进行修复)
if (document.querySelector('.r-community--forum_list div:not(div[class])') != null && document.querySelector(".r-community--forum_filter") != null && document.querySelector("#fan") == null){
var forum_list = document.querySelectorAll('.r-community--forum_list div:not(div[class])')
for (i of forum_list) {
let oCopy = i.cloneNode(true)
$('.r-community--forum_list2').append(oCopy)
}
$('.r-community--forum_list div:not(div[class])').css('display','none')
$('.r-community--forum_filter').after(document.querySelector('.r-community--forum_list2').innerHTML)
$('.r-community--forum_list').append("
")
}
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
var windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
var scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
if (scrollTop + windowHeight >= scrollHeight) {
try{
document.querySelector('.r-community--forum_list .c-pagination--btn.c-pagination--page-container li:last-child').click()
}
catch (err){
console.log(err)
}
}*/
}
}, 100)
document.querySelector('#custom-sett textarea').value = localStorage.getItem('custom-sett')
document.querySelector('#custom-setts').innerHTML = document.querySelector('#custom-sett textarea').value
$("head").after(`
`);
$("head").after(`
`);
$("li[data-watch_event='设置-入口tab']").click(function () {
$("#yzf-settings").css("display", "block")
$("#yzf-settings").css("transform", "translateY(0)")
$("#yzf-close").click(() => {
$(".c-dialog--dialog_wrap").css("opacity", "0");
$("#yzf-settings").css("transform", "translateY(-20px)")
setTimeout(() => {
$('.c-dialog--dialog_wrap').removeClass('c-dialog--visiable c-dialog--show')
$(".c-dialog--dialog_wrap").css("opacity", "");
$("#yzf-settings").css("display", "none")
}, 200)
})
$("#main-color").val(localStorage.getItem('main-color') || '#fec433')
$("#second-color").val(localStorage.getItem('second-color') || '#f6b206')
$("#person-color").val(localStorage.getItem('person-color') || '#000')
$("#highlight-color").val(localStorage.getItem('highlight-color') || '#ec443d')
$(".c-dialog--dialog_wrap").addClass('c-dialog--visiable c-dialog--show')
});
if (localStorage.getItem('person-setting') == 'color') {
document.querySelector('input[value="color"]').checked = true
document.querySelector('#person-bg-btn').style.display = 'none';
document.querySelector('#person-color').style.display = 'block';
document.documentElement.style.setProperty('--person-color', localStorage.getItem('person-color') || '#000');
document.documentElement.style.setProperty('--person-bg', '');
}
else {
document.querySelector('input[value="pic"]').checked = true
document.querySelector('#person-bg-btn').style.display = 'block';
document.querySelector('#person-color').style.display = 'none';
document.documentElement.style.setProperty('--person-color', '');
document.documentElement.style.setProperty('--person-bg', localStorage.getItem('person-bg') || 'url(https://cdn-community.codemao.cn/community_frontend/asset/banner_65b4a.png)');
}
if ((window.location.href.indexOf("user") != -1) && (JSON.parse(response).user_id != parseInt(window.location.href.slice(25 + 5,)))) {
GM_xmlhttpRequest({
method: "get",
url: "https://api.codemao.cn/creation-tools/v1/user/center/honor?user_id=" + parseInt(window.location.href.slice(25 + 5,)),
data: document.cookie,
binary: true,
async onload({ response }) {
if (JSON.parse(response).user_cover == '') {
document.documentElement.style.setProperty('--person-bg', 'url(https://cdn-community.codemao.cn/community_frontend/asset/banner_65b4a.png)');
document.documentElement.style.setProperty('--person-color', '');
}
else {
document.documentElement.style.setProperty('--person-bg', 'url(' + JSON.parse(response).user_cover + ')');
document.documentElement.style.setProperty('--person-color', '');
}
}
})
}
}
})
$("head").after(`
`);
})();