// ==UserScript==
// @name Beautify
// @namespace https://github.com/symant233/PublicTools
// @version 0.0.82
// @description 美化<误>各网页界面
// @author symant233
// @icon https://cdn.jsdelivr.net/gh/symant233/PublicTools/Beautify/Bkela.png
// @require https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js
// @match https://*.vuejs.org/*
// @match https://www.runoob.com/*
// @match https://blog.csdn.net/*
// @match https://es6.ruanyifeng.com/*
// @match https://wenku.baidu.com/*
// @match https://didi.github.io/cube-ui/*
// @match https://www.bilibili.com/*
// @match https://space.bilibili.com/*
// @match https://cn.bing.com/search?q=*
// @match https://duckduckgo.com/?q=*
// @match https://baike.baidu.com/*
// @match https://yz.chsi.com.cn/sytj/tj/*
// @match https://www.30secondsofcode.org/*
// @match https://developer.mozilla.org/*
// @match https://juejin.cn/editor/drafts/*
// @match https://xui.ptlogin2.qq.com/cgi-bin/xlogin*
// @match https://steamcommunity.com/*
// @match https://www.pixiv.net/*
// @match https://live.bilibili.com/*
// @match https://frontendwingman.com/*
// @match https://cloud.tencent.com/developer/*
// @match https://www.npmjs.com/*
// @match https://www.zhihu.com/*
// @match https://fanyi.baidu.com/*
// @match https://jiexi.8old.cn/*
// @match https://read.qidian.com/*
// @match https://*.taobao.com/*
// @match https://s.taobao.com/search?q=*
// @match https://*.tmall.com/*
// @match https://caddyserver.com/docs/*
// @match https://leetcode.cn/*
// @match https://github.com/*
// @match https://mooc1.chaoxing.com/work/*
// @match https://mooc1.chaoxing.com/mooc2/work/*
// @match https://*sci-hub.*/*
// @match https://scholar.google.com/scholar?q=*
// @match https://www.dlsite.com/*
// @match https://preactjs.com/*
// @match https://*.react.dev/*
// @match https://basarat.gitbook.io/*
// @match https://www.photopea.com/*
// @match https://www.phind.com/*
// @match https://hd.nowcoder.com/link.html?target=*
// @match *://www.cesium.xin/*
// @match https://message.bilibili.com/*
// @match *://pan.baidu.com/share/*
// @match https://x.com/*
// @match https://*.xiaoeknow.com/*
// @match https://nextjs.org/*
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_addStyle
// @grant GM_registerMenuCommand
// @grant unsafeWindow
// @license GPL-3.0
// @homepageURL https://greasyfork.org/zh-CN/scripts/390421-beautify
// @supportURL https://github.com/symant233/PublicTools/issues
// ==/UserScript==
;(function() {
'use strict';
if (!$) { var $ = window.jQuery; }
let customScrollBar = true; // global config; set `false` to disable in every site.
function changeScrollBar() {
GM_addStyle(`body{overflow-y: overlay;}
::-webkit-scrollbar {
height: 12px; width: 12px;
background-color: initial;
}::-webkit-scrollbar-button {height: 0;}
::-webkit-scrollbar-thumb {
background-color: rgb(127 127 127 / 40%);
background-clip: padding-box;
border: solid transparent;
border-width: 1px 1px 1px 1px;
box-shadow: inset 1px 1px 0 rgb(0 0 0 / 10%), inset 0 -1px 0 rgb(0 0 0 / 7%);
}::-webkit-scrollbar-thumb:hover{
background: rgb(127 127 127 / 60%);
background-clip: padding-box;
}::-webkit-scrollbar-thumb:active{
background: rgb(127 127 127 / 85%);
background-clip: padding-box;
}::-webkit-scrollbar-track {
background-clip: padding-box;
border: solid transparent;
border-width: 0 0 0 4px;
}`);
}
(function(left, right, color) {
const arg = [
`%c ${left} %c ${right} `,
'padding:1px;border-radius:3px 0 0 3px;color:#fff;background:#606060;',
`padding:1px;border-radius:0 3px 3px 0;color:#fff;background:${color}`
];
console.log(...arg);
})('Loaded', 'Beautify', '#e99010');
// console.log(`Domain: ${document.domain}\nHostname: ${location.hostname}`);
switch (document.domain){
case 'vuejs.org':
function zhVue() {
let url = location.href.replace('://vue', '://cn.vue');
location.href = url;
}
const el = document.querySelector('a[href="/translations/"]');
el.addEventListener("click", zhVue);
el.href = '#';
break;
case 'www.runoob.com':
//隐藏头部logo 移动搜索框位置到navbar
$('#index-nav').append(`<form action="//www.runoob.com/" target="_blank" style="display: inline;float: right;">
<input class="placeholder" id="s" name="s" placeholder="搜索……" autocomplete="off"></form>`);
$('.pc-nav').append(`<form action="//www.runoob.com/" target="_blank" style="display: inline;position: absolute;right:0;">
<input class="placeholder" id="s" name="s" placeholder="搜索……" autocomplete="off"></form>`);
GM_addStyle(`#s{outline: 0; height: 2.3rem; margin-top: -1px; margin-right: 2rem; border: 0; border-radius: 4px;}`);
$('.logo-search').remove();
$('.col.nav').css("padding-top", "5px");
$('#sidebar-right-re').parent().remove(); //右侧广告
$('.feedback-btn').remove(); //反馈按钮
$('.qrcode').remove; //右侧悬浮二维码
$('.navigation').css("background", "grey");
if (document.location.href.split('/')[3] == "try") {
$('nav').remove();
$("body").css("padding-top", "60px");
$('footer').remove();
}
break;
case 'csdn.net': {
console.log('Beautify@ try to click');
var r = $('.btn-readmore')[0].click();
console.log('Beautify@ clicked:' + r);
break;
}
case 'es6.ruanyifeng.com':
$('#content').css("width", "63%");
$('#content').css("padding-bottom", "0px");
$('#back_to_top').css("right", "35px");
$('#edit').css("right", "35px");
$('#theme').css("right", "35px");
$('#flip').css("right", "10px");
break;
case 'wenku.baidu.com':
setTimeout(function() {
console.log('show more');
$('.btn-know').click();
$('.moreBtn').click();
}, 1500 );
break;
case 'didi.github.io':
setTimeout(function() {
document.getElementsByClassName('navigator')[0].style.height = "54px";
document.getElementsByClassName('navigator')[0].style.lineHeight = "54px";
document.getElementsByClassName('home-view')[0].style.paddingTop = "38px";
}, 500 );
break;
case 'bilibili.com':
case 'www.bilibili.com': {
const enableWideScreen = GM_getValue('enableWideScreen', true); // 是否启用宽屏模式
GM_registerMenuCommand('切换宽屏设置', () => GM_setValue('enableWideScreen', !enableWideScreen));
// 宽屏模式 来自 https://github.com/bilibili-helper/bilibili-helper-o/blob/637d0741b0d81154c7bc330f8fce19b926f5a71b/src/js/modules/videoWiden/UI/index.js
function setWide() {
const btn = document.querySelector('.bpx-player-ctrl-wide:not(.bpx-state-entered)');
if (btn) {
btn.click();
// 调整滚动位置
setTimeout(() => {
const player = document.querySelector('#bilibili-player');
if (player) {
const playerRect = player.getBoundingClientRect();
const position = window.scrollY + playerRect.top - 75; // Navbar height
window.scrollTo({ top: position });
}
}, 500);
if (unsafeWindow.ob) unsafeWindow.ob.disconnect(); // 触发后停止监听
}
}
new Promise(resolve => {
const player = document.querySelector('#bilibili-player');
if (player && enableWideScreen) {
unsafeWindow.ob = new MutationObserver((mutationList) => {
setWide();
});
unsafeWindow.ob.observe(player, {
attributes: false,
subtree: true,
childList: true,
});
}
resolve();
});
// PiP 画中画模式快捷键`p`
document.addEventListener('keyup', function (e) {
if (e.key === 'p' && e.altKey) {
document.querySelector('video').requestPictureInPicture();
} else if (e.key === 'ArrowRight' & e.altKey === true) {
$('.bilibili-player-video-btn-next').click();
}
}, false);
GM_addStyle(`html.gray {
filter: grayscale(0) !important;
-webkit-filter: grayscale(0) !important;
}`);
// start of the `spm_id_from` filter
let listener = function (e) {
let i = e.target;
for (; i && i.tagName !== "A"; )
i = i.parentNode;
if ((i == null ? void 0 : i.tagName) !== "A")
return;
let o = i.getAttribute("href");
if (!o || !/\/\//.test(o) || !/spm_id_from=/.test(o) || /^blob:/.test(o))
return;
i.setAttribute("href", o.split('?spm_id_from')[0]); // fuck bilibili spm_id
}
document.body.addEventListener("contextmenu", listener, false);
break;
}
case 'cn.bing.com': {
//$("head").append('<style>#b_content{padding-left: 85px;}</style>');
break;
}
case 'duckduckgo.com': {
$("head").append('<style>#links_wrapper{padding-left: 108px;}</style>');
break;
}
case 'baike.baidu.com':
$('.video-list-container').remove(); // 删除播放器容器
GM_addStyle(`.lemmaWgt-searchHeader{height:55px;}
div[class^="videoListWrap"], div[class^="knowledge-toolbar"], .J-knowledge-editor-toolbar {display: none;}
.content-wrapper .content {font: unset;}
.wgt-searchbar-new.wgt-searchbar .logo-container{padding: 6px 0;}
.wgt-searchbar-new.wgt-searchbar .search{padding: 8px 0;}
.wgt-navbar-hover {margin-top: 5px;}
#J-lemma-video-list, #J-bottom-tashuo {display: none;}`);
break;
case 'yz.chsi.com.cn': {
// 去除不符合不能调剂的信息
function filter() {
const tmp = $("#content-qecxList > table > tbody").children();
for ( let i in tmp ) {
if ( tmp[i].lastElementChild.innerText.includes("不符合") || tmp[i].lastElementChild.firstElementChild.title.includes('不符合') ) {
tmp[i].remove();
console.log(tmp[i].textContent + 'removed');
}
}
}
$('<button id="btn-filter" style="width: 50px;">过滤</button>').appendTo('.ewm-fix');
$('#btn-filter').click(filter);
document.addEventListener('keyup', function (e) {
if (e.key === 'Enter' && e.ctrlKey) {
$('.tj-seach-btn').click();
}
}, false);
break;
}
case 'www.30secondsofcode.org':
GM_addStyle('.nav-bar{height:auto;}');
break;
case 'developer.mozilla.org': {
GM_addStyle(`
.mdn-cta-container{display:none;}
.page-header{padding:12px 24px;}
.breadcrumb-locale-container,#license{margin:0px;}
.logo{height:59px;}
.localized-content-note.notecard.neutral{display:none;}
.header-search{margin-bottom: 4px;}
.top-banner.fallback{display:none;}`);
break;
}
case 'juejin.cn':
GM_addStyle('.header.editor-header{height:4rem;}.main .bytemd{height:calc(100vh - 4rem);}');
break;
case 'xui.ptlogin2.qq.com':
// 自动启用账号密码登录 去他大爷的扫码登录
// GM_addStyle('.web_qr_login{display:block !important;}.qlogin,#bottom_qlogin{display:none !important;}');
break;
case 'steamcommunity.com': {
setInterval(()=>{
try {
document.getElementById('market_sell_dialog_accept_ssa').checked = true;
} catch (err) {}
try {
document.getElementById('market_buyorder_dialog_accept_ssa').checked = true;
} catch (err) {}
}, 2000);
break;
}
case 'www.pixiv.net':
// 需要与脚本配合使用 https://greasyfork.org/zh-CN/scripts/34153-pixiv-plus
GM_addStyle(`
select#select-ahao-favorites {
font-size: 14px;
line-height: 22px;
flex: 1 1 auto;
height: auto;
margin: 0px -9px;
padding: 9px 8px;
border: none;
border-radius: 4px;
color: rgba(0, 0, 0, 0.64);
background-color: rgba(0, 0, 0, 0.04);
transition: background-color 0.2s ease 0s, color 0.2s ease 0s;
}#select-ahao-favorites+div{gap: 0px;}`);
break;
case 'live.bilibili.com': {
const enableSideFollow = GM_getValue('enableSideFollow', false); // 是否切换关注按钮全屏展示
GM_registerMenuCommand('切换关注按钮全屏展示', () => GM_setValue('enableSideFollow', !enableSideFollow));
GM_addStyle(`
.side-bar-popup-cntr{bottom:5% !important;height:84% !important;}
.anchor-list {height: calc(100% - 55px) !important}
.anchor-list > div {height:unset !important; align-content: flex-start;}
.follow-cntr{height:100%;}
.shortcut-item .follow-cntr{height:unset;}
.section-content-cntr{height: calc(100% - 64px) !important;}
.title-length-limit{max-width:unset !important;}`);
if (enableSideFollow) GM_addStyle(`
.player-full-win .side-bar-cntr {display: block !important; height: 60px !important; padding: 4px !important;}
.player-full-win .side-bar-cntr div[data-upgrade-intro="Laboratory"] {display: none;}
.player-full-win .side-bar-cntr div[data-upgrade-intro="Top"] {display: none;}`);
break;
}
case 'frontendwingman.com':
try {
// credit: github.com/invobzvr
Object.defineProperty(document.querySelector('.theme-container').__vue__,'locked',{
get:()=>true,
set:function(val){this._data.locked=true}
});
document.querySelector('.theme-container').__vue__.locked = true;
} catch (e) {
console.warn('Beautify: 自动解锁失效.');
}
break;
case 'cloud.tencent.com':
GM_addStyle('.doc-main-hd {margin-bottom: 24px;padding-bottom: 28px;border-bottom: 1px solid #e5e5e5;}');
break;
case 'www.npmjs.com':
GM_addStyle(`.center-ns {padding-bottom: unset;}
pre.editor.editor-colors {overflow: overlay;}
header > div:nth-child(2) {display: none;}`);
break;
case 'www.zhihu.com':
if (window.location.href === "https://www.zhihu.com/hot") {
document.querySelectorAll('.HotItem').forEach((e) => {
if (!e.outerHTML.includes('HotItem-excerpt')) {e.remove();}
if (!e.outerHTML.includes('HotItem-img')) {e.remove();}
});
}break;
case 'fanyi.baidu.com':
GM_addStyle(`
.download-app,.doc-feedback-group{display:none;}
.header{padding:3px 0 7px 0;}
.doc-whole-container{height:100%;}
.doc-trans-view-wrap{width: unset;height: 88%;margin-top: -38px;}`);
break;
case 'jiexi.8old.cn': {
// https://jx.m3u8.tv/jiexi/?url=
document.addEventListener('keyup', function (e) {
if (e.key === 'f') {
$('.dplayer-full-icon').click();
}else if ([1,2,3,4].includes(parseInt(e.key))) {
$('.dplayer-setting-speed-item').slice(1)[parseInt(e.key)].click();
}
}, false);
break;
}
case 'qidian.com':
GM_addStyle(`body{overflow-x:hidden !important;}
.admire-wrap,.guide-btn-wrap,#j_navGameBtn,#navReward,#j_phoneRead{display:none;}`);
break;
case 'caddyserver.com':
GM_addStyle(`pre > code.cmd {font-size: 1rem; overflow: overlay;}
main > .sidebar:last-child {flex-shrink: 2;}
main > nav.sidebar {font-size: 1.2rem; width: 20%;}
article > :not(h1), dd, article p, article ol, article ul, article pre, article table {margin-bottom: 0.5rem;}
pre {padding-bottom: 0.5rem !important;padding-top: 0.5rem !important;}
pre.chroma {font-size: 1rem;}
#paper1, #paper2 {display: none;}
.paper3 {top: unset;left: unset;}
hr {margin-top: 2.5rem; margin-bottom: 2.5rem !important;}`);
break;
case 'leetcode.cn':
GM_addStyle(`
ul[class*="NavbarList"] > li[class*="NavbarListItem"]:nth-child(2)::after{display:none !important}
ul[class*="NavbarList"] > li[class*="NavbarListItem"]:nth-child(6)::after{display:none !important}
[class*=TimeRemainContainer]{display:none;}
section[class*=MainContainer] > div[class*=Container]:nth-child(1){display: none;}
section[class*=MainContainer]{margin-top: 12px;}
span[class*=BasicTag-StyledTag]{margin-right: 8px;}`);
// 自动开启运行结果差别
function enableDiff () {
const btn = document.querySelector('label[class*="Label-StyledSwitch"]');
if (btn && !btn.getAttribute('beautify-data')) {
btn.setAttribute('beautify-data', true);
btn.click();
}
}
setTimeout(() => {
$('div[class*=second-section-container] > div:last-child button').click();
new Promise(resolve => {
const container = document.querySelector('div[class*="CodeAreaContainer"]');
if (container) {
new MutationObserver((mutationList) => {
mutationList.forEach((mutation) => {
if (mutation.oldValue) enableDiff();
});
}).observe(container, {
attributes: true,
attributeOldValue: true,
subtree: true,
});
}
resolve();
});
}, 2600);
// 控制台获取题解 Markdown 源码
function getMarkdown() {
const node = document.querySelector('div[class*="ContentContainer"]');
const key = Object.keys(node).find(key=>{
return key.startsWith("__reactEventHandlers$");
});
console.log(node[key].children[0].props.children);
}
globalThis.unsafeWindow.getMarkdown = getMarkdown;
break;
case 'github.com':
GM_addStyle(`.dashboard-sidebar.overflow-auto::-webkit-scrollbar {display: none;}`);
break;
case 's.taobao.com':
GM_addStyle(`.grid-total .grid-right {display: none !important;}
.grid-total .grid-left {width: unset !important;}
li#J_FeedbackExperience {display: none;}`);
break;
case 'mooc1.chaoxing.com':
case 'chaoxing.com':
GM_addStyle(`#edui1_iframeholder{height:530px !important;}`);
break;
case 'scholar.google.com':
GM_addStyle(`.donate{display:none !important;}
#arovswmd_panel{display:none;}
#gs_hdr{margin:unset !important;}`);
break;
case 'www.dlsite.com':
GM_addStyle('h1#work_name{user-select: text !important;} body{overflow-y: initial !important;}');
break;
case 'preactjs.com':
GM_addStyle(`
header > div[class^='banner'] , header > a[class^='corner'] { display: none !important; }
#app > main { padding-top: 3.5rem; }
#app > main > div[class^=tutorial] { top: 3.5rem; }
#app > main > div[class^=repl] { top: 3.5rem; }
`);
break;
case 'react.dev':
function zhReact(event) {
event.preventDefault();
let url = location.href.replace('://react', '://zh-hans.react');
location.href = url;
} // 跳转到中文对应页面
document.querySelector('a[href="/community/translations"]').addEventListener("click", zhReact);
break;
case 'www.photopea.com': {
// code from https://chrome.google.com/webstore/detail/remove-ads-from-photopea/gjkjjhgjcalgefcimahpbacihndicccn
const style = document.createElement('style');
style.textContent = '.app > div:not(:first-child) { visibility: hidden; }';
document.head.appendChild(style);
function addCustomEvent() {
const ADS_WIDTH = window.screen.width < 1180 ? 180 : 320;
document.addEventListener('resizecanvas', () => {
// push the ads container outside of the viewport
window.innerWidth = document.documentElement.clientWidth + ADS_WIDTH;
});
}
// inject our custom event listener into the "main world"
document.documentElement.setAttribute('onreset', `(${addCustomEvent})()`);
document.documentElement.dispatchEvent(new CustomEvent('reset'));
document.documentElement.removeAttribute('onreset');
function resize(event = {}) {
if (!event.skip) {
document.dispatchEvent(new CustomEvent('resizecanvas'));
// trigger another resize event to update any listeners with the new window.innerWidth
const resizeEvent = new Event('resize');
resizeEvent.skip = true;
window.dispatchEvent(resizeEvent);
}
}
let debounce;
window.addEventListener('resize', event => {
clearTimeout(debounce);
debounce = setTimeout(() => resize(event), 100);
});
resize();
break;
}
case 'www.phind.com':
GM_addStyle(`
body {overflow-y: initial !important;}
`);
let engines = localStorage.getItem('userSearchRules') || null;
if (!engines) {
localStorage.setItem('userSearchRules', '{"developer.mozilla.org":3,"github.com":2,"stackoverflow.com":2,"www.reddit.com":-1,\
"www.quora.com":-2,"www.pinterest.com":-3,"wikipedia.com":1,"numpy.org":1,"vuejs.org":1,"reactjs.org":1,"csdn.net":-2}');
}
break;
case 'hd.nowcoder.com':
const link = location.href.split('?target=')[1];
location.href = link;
break;
default:
break;
}
switch (location.hostname) {
case 'basarat.gitbook.io':
GM_addStyle(`
html {overflow: visible !important;}
div.gitbook-root > div > div > header {height: 3.9rem;}
div.gitbook-root > div header a[href^="https://youtube.com"] {display:none;}
div.gitbook-root > div header a[href^="https://www.udemy.com"] {display:none;}
div.gitbook-root div[data-testid="page.desktopTableOfContents"] {top: 62px !important; height: calc(100vh - 64px) !important;}
`)
break;
case 'www.cesium.xin':
GM_addStyle(`
code[class*="language-"] { white-space: inherit; }
footer { padding: 6px; }
`);
break;
case 'message.bilibili.com':
const callback = function(mutationList, observer) {
if (document.querySelector('div.right .dialog:not(.hide)')) {
const el = document.querySelector('div.right .dialog:not(.hide)')
const mid = el.__vue__.userInfo.mid;
if (mid) {
el.querySelector('.title span').onclick = function() {
window.open(`https://space.bilibili.com/${mid}/video`);
}
}
}
}
const observer = new MutationObserver(callback);
observer.observe(document.body, { childList: true, subtree: true });
GM_addStyle(`
div.right .dialog .title span { padding: 8px; cursor: pointer; }
div.right .dialog .title span:hover { text-decoration: underline; }
`);
break;
case 'pan.baidu.com':
setInterval(() => {
const el = document.querySelector('input#accessCode');
if (el && el.value.length === 4) document.querySelector('#submitBtn').click();
}, 1000)
break;
case 'x.com':
$('head').append(`<link rel="shortcut icon" href="//abs.twimg.com/favicons/twitter.ico">"`);
Object.defineProperty(document, 'title', {
set(value) {},
get() { return 'Twitter' },
});
$('head').append(`<title>Twitter</title>`);
customScrollBar = false;
break;
case 'nextjs.org':
GM_addStyle(`
main > div.relative { padding-top: 1rem; }
main > div.relative > div.sticky { top: 5rem; }
main > div.relative > nav > .sticky { top: 6.5rem; }
`);
break;
}
const aliList = [
/^https:.+tmall.com\//,
/^https:.+taobao.com\//,
];
aliList.forEach((i) => {
if (i.test(document.location.href)) {
// 移除阴间字体 arial
GM_addStyle('span,input,li,div,a{font-family:none;}');
}
});
if (/.*sci-hub.+/.test(location.hostname)) {
GM_addStyle('#rollback img{width:50px !important;height:50px;margin-left:12px;}');
};
if (location.hostname.endsWith('.xiaoeknow.com')) {
document.addEventListener('keyup', function (e) {
const video = document.querySelector('video');
if (!video) return;
if (e.key === ' ' && video.paused) {
video.play();
} else if (e.key === ' ') {
video.pause();
}
if (e.key === 'f') {
document.querySelector('.fullBtn').click();
}
if (e.key === 'ArrowLeft') {
video.currentTime = video.currentTime - 5;
} else if (e.key === 'ArrowRight') {
video.currentTime = video.currentTime + 5;
}
}); // 快捷键控制视频
}
if (customScrollBar) { changeScrollBar(); }
})();