-
个人简介
一枚蒟蒻叛徒一切都过去了
再见
留点回忆,以前的主页:
油猴hydro优化 (修改自@ 主页 ,原版在主页传送门最下方)
PS:
背景图片与一首音乐可修改,点击oiclass页面左下角查询,并将图片链接和网易云音乐的外联播放器代码复制进去保存即可
复制时请长按输入框并直接按 , 松开后会退出查询页面,重新进去再点击保存即可
// ==UserScript== // @name Better Hydro // @namespace http://tampermonkey.net/ // @version 3.0 // @description Improve the Hydro interface with custom settings! // @author Cheerimy // @match *://hydro.ac/* // @match *://goj.wiki/* // @match *://www.goj.wiki/* // @match *://oiclass.com/* // @match *://www.oiclass.com/* // @match *://106.53.100.188:1000/* // @icon https://s21.ax1x.com/2024/08/22/pAi6KDP.png // @grant none // @license GPLv3 // @downloadURL https://update.greasyfork.org/scripts/504607/Better%20Hydro.user.js // @updateURL https://update.greasyfork.org/scripts/504607/Better%20Hydro.meta.js // ==/UserScript== (function() { 'use strict'; //Cookies 初始化函数 function setCookieIfNotExists(name, value) { if (!document.cookie.split('; ').map(cookie => cookie.split('=')[0]).includes(name)) { document.cookie = `${name}=${encodeURIComponent(value)};path=/;expires=${new Date(Date.now()+365*24*60*60*1000).toUTCString()}` } } //获取 Cookies 模块 function getCookie(name) { const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); return match ? decodeURIComponent(match[2]) : null } //初始化 Cookies 模块 function initCookies() { setCookieIfNotExists('browserupdateorg', 'pause'); setCookieIfNotExists('background', 'https://api.imlazy.ink/mcapi/mcbg.php'); setCookieIfNotExists('music', '//music.163.com/outchain/player?type=2&id=133567&auto=0&height=66'); console.log('Cookies 模块加载成功!'); } //基本模块(欢迎栏与 UI 优化) function loadWelcomeMessage() { const username = Array.from(document.querySelectorAll('li[data-dropdown-target="#menu-nav-user"]')).map(item => item.querySelector('a')).find(link => link && link.textContent.trim() !== 'Language')?.textContent.trim() || 'Visitor'; const panel = document.getElementById('panel'); panel.style.backgroundImage = `url(${getCookie('background')})`; panel.style.backgroundSize = 'cover'; panel.style.backgroundPosition = 'center'; const style = document.createElement('style'); style.textContent = `.section{border-radius:8px!important;opacity:0.75!important}.section__table-header{border-radius:8px 8px 0 0;opacity:0.75!important}`; document.head.append(style); const title=document.title; const name=title.split(" - ").pop().trim(); const newHTML=''; //const newHTML = `<div class="section visible"><div class="section__header"><h1 class="section__title">欢迎 ${username} 来到 ${name}!</h1><h1 class="section__title"style="text-align: end;">Let's Coding Now!</h1></div></div>`; const main = panel.querySelector('.main'); const element = main.querySelector('div'); element.insertAdjacentHTML('afterbegin', newHTML); console.log('基本模块加载成功!'); } //音乐模块(播放音乐源音乐) function loadMusicPlayer() { const musicURL = getCookie('music'); const musicHTML = `<div class="section side visible"><div class="section__header"><h1 class="section__title">一首歌曲</h1></div><div class="section__body typo"><iframe frameborder="no"border="0"marginwidth="0"marginheight="0"width="100%"height="86"src="${musicURL}"></iframe></div></div>`; const row = document.getElementById('panel').querySelector('.main').querySelector('.row'); const divs = row.querySelectorAll(':scope > div'); divs.forEach(div => { const className = div.className; if (className.includes('medium-3') && className.includes('columns')) { div.insertAdjacentHTML('afterbegin', musicHTML) } }); console.log('音乐播放器加载成功!') } //个性化面板模块 function loadSettingsPanel() { const settingDiv = document.createElement('div'); settingDiv.id = 'setting'; settingDiv.innerHTML = `<div class="section side visible"><div class="section__header"><h1 class="section__title">设置</h1></div><style>.input-group{display:flex;flex-direction:column;gap:10px;max-width:400px;margin:0 auto}.input-group label{font-size:14px;color:#333}.input-group input[type="text"]{padding:8px;font-size:14px;border:1px solid#ccc;border-radius:4px;width:100%;box-sizing:border-box}.input-group input[type="text"]::placeholder{color:#999}</style><div class="section__body typo"><div class="input-group"><label for="background-url">背景图片:</label><input type="text"id="background-url"placeholder="输入背景图片地址"><button id="save-background">保存背景</button><label for="music-url">音乐地址:</label><input type="text"id="music-url"placeholder="输入音乐播放器地址"><button id="save-music">保存音乐</button></div></div></div>`; const omnibarContent = document.getElementById('omnibar-content'); omnibarContent.insertAdjacentElement('afterend', settingDiv); const setCookie = (name, value, days = 365) => { const expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toUTCString(); document.cookie = `${name}=${value};expires=${expires};path=/` }; const saveInput = (inputId, cookieName) => { const input = document.getElementById(inputId); if (input) { setCookie(cookieName, input.value) } else { console.error(`Element#${inputId}not found`) } }; document.getElementById('save-background').onclick = () => saveInput('background-url', 'background'); document.getElementById('save-music').onclick = () => saveInput('music-url', 'music'); console.log('个性化面板模块加载成功!') } //尝试加载 Cookies 模块 try { initCookies(); } catch (error) { console.error('Cookies 模块加载失败,错误::', error); } //尝试加载基础模块 try { loadWelcomeMessage(); } catch (error) { console.error('基础模块加载失败,错误::', error); } //尝试加载音乐模块 try { loadMusicPlayer(); } catch (error) { console.error('音乐模块加载失败,错误::', error); } //尝试个性化面板面板模块 setTimeout(function() { try { loadSettingsPanel(); } catch (error) { console.error('个性化面板模块加载失败,错误::', error); } }, 2000); })();
-
最近活动
- 第五届oiClass信息学夏令营day8作业-for循环专题练习2 作业
- 2024春季班class8-多维&差值DP 课后作业 作业
- 【oiClass公益赛】2024CSP-J模拟赛#18「WZA Round #2」 OI
- 2024春季班class8-多维&差值DP 随堂练习 作业
- 2024春季班class7-倍增-ST算法 课后作业 作业
- 2024春季班class7-倍增-ST算法 随堂练习 作业
- 2024春季班class6-区间型动态规划2-区间合并 课后作业 作业
- 2024春季班class6-区间型动态规划2-区间合并 随堂练习 作业
- 2024春季班class5-区间分割型动态规划 课后作业 作业
- 2024春季班class5-区间分割型动态规划 随堂练习 作业
- 【oiClass公益赛】2024CSP-J模拟赛#08 || For Riddles, For Wonders OI
- 2024春季班class4-背包型动态规划2课后作业 作业
- 2024春季班class4-背包型动态规划2随堂练习 作业
- 【oiClass公益赛】2024CSP-J模拟赛#20 OI
- 2024春季班class3-背包型动态规划1课后作业 作业
- 2024春季班class3-背包型动态规划1随堂练习 作业
- 【oiClass公益赛】2024CSP-J模拟赛#15 OI
- 2024春季班class2-二维动规&最长公共子序列课后作业 作业
- 2024春季班class2-二维动规&最长公共子序列随堂练习 作业
- 【oiClass公益赛】2024CSP-J模拟赛#06 || LSZOI #01 OI
- 【oiClass公益赛】2024CSP-J模拟赛#17 OI
- 2024春季班class1-一维动规&最长不下降子序列课后作业 作业
- 2024春季班class1-一维动规&最长不下降子序列随堂练习 作业
- 【oiClass 公益赛】2024 CSP-J 模拟赛 #13 & XYZ Round 1 OI
- 【oiclass 公益赛】2024 CSP-J 模拟赛 #11 OI
- 【oiClass公益赛】2024CSP-J模拟赛#10 OI
- 【oiClass公益赛】2024CSP-J模拟赛#19 OI
- 备用 OI
- 【oiClass公益赛】2024CSP-J模拟赛#14 OI
- 【oiClass公益赛】2024CSP-J模拟赛#09 OI
- 【oiClass公益赛】2024CSP-J模拟赛#07 OI
- 【oiClass公益赛】2024CSP-J模拟赛#16 OI
- 【oiClass公益赛】2024 CSP-J 模拟赛 #04 OI
- 【oiClass公益赛】2024CSP-J模拟赛#03 OI
- 【oiClass公益赛】2024CSP-J模拟赛 #05 OI
- 【oiClass公益赛】2024CSP-J模拟赛#02 OI
- 【oiClass公益赛】2024CSP-J模拟赛#01 OI
- 2023-2024学年冬令营Class6-双指针 作业
- 2023-2024学年冬令营Class4-二分搜索2 作业
- 2023-2024学年冬令营Class3-二分搜索1 作业
- 2023-2024学年冬令营Class1-广搜2 作业
- 2023-2024学年冬令营Class1-广搜1 作业
- 张晋嘉、倪穗霆杂题 作业
- 2023年秋季营lesson15作业-深度优先搜索算法2 作业
- 2023学年秋季班_模拟测试11 OI
- 2023年秋季营lesson14作业-深度优先搜索算法1 作业
- 2023年秋季营lesson13作业-递归算法2 作业
- 2023学年秋季班_模拟测试09 OI
- 2023学年秋季班_模拟测试08 OI
- 2023年秋季营lesson12作业-递归算法1 作业
- 2023年秋季营lesson11作业-阶段测试2(仅供改题) 作业
- 2023年秋季营lesson10作业2-队 作业
- 2023年秋季营lesson10作业1-栈 作业
- 2023年秋季营阶段测试2 OI
- 2023学年秋季班_模拟测试07 OI
- 2023年秋季营lesson9作业2-差分前缀和 作业
- 2023年秋季营lesson9作业1-递推算法 作业
- 2023学年秋季班_模拟测试06 OI
- 2023年秋季营lesson8作业-指针&贪心 作业
- 2023学年秋季班_模拟测试05 OI
- 2023年秋季营lesson7作业-位运算 作业
- 2023年秋季营lesson6作业-进制转换 作业
- 【oiClass公益赛】2023CSPJ模拟赛#10 OI
- 【oiClass公益赛】2023CSPJ模拟赛#09 OI
- 【oiClass公益赛】2023CSPJ模拟赛#08 OI
- 【oiClass公益赛】2023CSPJ模拟赛#07 OI
- 【oiClass公益赛】2023CSPJ模拟赛#06 OI
- 【oiClass公益赛】2023CSPJ模拟赛#05 OI
- 【oiClass公益赛】2023CSPJ模拟赛#04 OI
- 【oiClass公益赛】2023CSPJ模拟赛#03 OI
- 【oiClass公益赛】2023CSPJ模拟赛#02 OI
- 【oiClass公益赛】2023CSPJ模拟赛#01 OI
- 2023学年秋季班_模拟测试04 OI
- 2023年秋季营lesson4作业-排序&枚举 作业
- 第五届oiClass信息学夏令营day22作业-结构体和函数 作业
- 2023学年秋季班_模拟测试02 OI
- 2023年秋季营lesson2作业-字符数组&字符串 作业
- 2023学年秋季班_模拟测试01 OI
- 2023年秋季营lesson1作业-二维数组 作业
- 夏令营模拟测试-05 OI
- 夏令营模拟测试-03 OI
- 2023年第四届oiClass夏令营线上选拔赛 OI
- 夏令营第二周模拟测试 OI
- 第五届oiClass信息学夏令营day6作业-for语句3 作业
- 夏令营第一周模拟测试 OI
- 开学DP测试 IOI
-
Stat
-
Rating