// ==UserScript== // @name Better Luogu! // @namespace http://tampermonkey.net/ // @version 1.4.5 // @description:zh 洛谷扩展 // @description Luogu Expansion // @author volatile // @match *://*.luogu.com.cn/* // @icon https://fecdn.luogu.com.cn/luogu/logo.png?0fdd294ff62e331d2f70e1a37ba4ee02 // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_listValues // @grant GM_setClipboard // @grant GM_xmlhttpRequest // @grant GM_getResourceText // @grant unsafeWindow // @connect baidu.com // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; //进入插件 console.log("This is Better Luogu!"); console.log("\n _____ _____ _____ _____ _____ \n /\\ \\ /\\ \\ /\\ \\ /\\ \\ /\\ \\ \n /::\\____\\ /::\\ \\ /::\\____\\ /::\\____\\ /::\\ \\ \n /::::| | /::::\\ \\ /:::/ / /:::/ / /::::\\ \\ \n /:::::| | /::::::\\ \\ /:::/ _/___ /:::/ / /::::::\\ \\ \n /::::::| | /:::/\\:::\\ \\ /:::/ /\\ \\ /:::/ / /:::/\\:::\\ \\ \n /:::/|::| | /:::/__\\:::\\ \\ /:::/ /::\\____\\ /:::/ / /:::/ \\:::\\ \\ \n /:::/ |::| | /::::\\ \\:::\\ \\ /:::/ /:::/ / /:::/ / /:::/ \\:::\\ \\ \n /:::/ |::| | _____ /::::::\\ \\:::\\ \\ /:::/ /:::/ _/___ /:::/ / /:::/ / \\:::\\ \\ \n /:::/ |::| |/\\ \\ /:::/\\:::\\ \\:::\\ \\ /:::/___/:::/ /\\ \\ /:::/ / /:::/ / \\:::\\ ___\\ \n/:: / |::| /::\\____\\/:::/__\\:::\\ \\:::\\____\\|:::| /:::/ /::\\____\\/:::/____/ /:::/____/ ___\\:::| |\n\\::/ /|::| /:::/ /\\:::\\ \\:::\\ \\::/ /|:::|__/:::/ /:::/ /\\:::\\ \\ \\:::\\ \\ /\\ /:::|____|\n \\/____/ |::| /:::/ / \\:::\\ \\:::\\ \\/____/ \\:::\\/:::/ /:::/ / \\:::\\ \\ \\:::\\ /::\\ \\::/ / \n |::|/:::/ / \\:::\\ \\:::\\ \\ \\::::::/ /:::/ / \\:::\\ \\ \\:::\\ \\:::\\ \\/____/ \n |::::::/ / \\:::\\ \\:::\\____\\ \\::::/___/:::/ / \\:::\\ \\ \\:::\\ \\:::\\____\\ \n |:::::/ / \\:::\\ \\::/ / \\:::\\__/:::/ / \\:::\\ \\ \\:::\\ /:::/ / \n |::::/ / \\:::\\ \\/____/ \\::::::::/ / \\:::\\ \\ \\:::\\/:::/ / \n /:::/ / \\:::\\ \\ \\::::::/ / \\:::\\ \\ \\::::::/ / \n /:::/ / \\:::\\____\\ \\::::/ / \\:::\\____\\ \\::::/ / \n \\::/ / \\::/ / \\::/____/ \\::/ / \\::/____/ \n \\/____/ \\/____/ ~~ \\/____/ \n "); var css = ".newlgmenu{width: 100vw; height: 80vh; display: none; align-items: center; justify-content: center; font-size: 16px; } .NEWLG-menu{width: 600px; height: 550px; display: flex; flex-direction: column; padding: 40px; position: relative; z-index: 100; background: inherit; border-radius: 18px; overflow: hidden; color: black; } .NEWLG-menu::before{ content: \"\"; width: calc\(100% + 20px\); height: calc\(100% + 20px\); position: absolute; top: -10px; left: -10px; overflow:hidden; background: inherit; box-shadow: inset 0 0 0 200px rgba\(255, 255, 255, 0.75\); filter: blur\(5px\); z-index: -1; } .NEWLG-menu input { margin: 6px 0; height: 36px; border: none; background-color: rgba\(255, 255, 255, 0.75\); border-radius: 4px; padding: 0 14px; color: #3d5245; } .NEWLG-menu button { border: none; background: transparent; } .search-container { width: 10%; height: 50px; display: none; z-index: 114514; position: fixed; top: 20px; left: 500px; }.search-box {padding: 10px;border: 1px solid #ddd;border-radius: 4px;font-size: 16px;transition: border-color 0.3s;}.search-box:focus {border-color: #4A90E2;box-shadow: 0 0 8px rgba(74, 144, 226, 0.5);} #mask { position: fixed; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); z-index: 1000; }"; var style = document.createElement("style"); style.innerHTML = css; document.head.appendChild(style); let nowurl = window.location.href; console.log(nowurl); let nowcolor1; let nowcolor=""; if(nowurl == 'https://www.luogu.com.cn/'){ nowcolor1 = document.querySelector('#app-old > div.lg-index-content.am-center > div:nth-child(1) > div > div > div > div.am-u-md-4.lg-punch.am-text-center > h2 > a').className; for(let i=0;i'; if(month==1&&day==1){ date_html+='

今天是元旦,新的一年,新的开始

'; } else if(month==2&&day==29){ date_html+='

今年是闰年

'; } else if(month==4&&day==1){ date_html+='

今天是愚人节

'; } else if(month==5&&day==1){ date_html+='

今天是劳动节

'; } else if(month==6&&day==1){ date_html+='

今天是儿童节

'; } else if(month==9&&day==10){ date_html+='

今天是教师节

'; } else if(month==10&&day==1){ date_html+='

今天是国庆节,七天小长假,启动!

' } else if(month==12&&day==31){ date_html+='

明年见

'; } else{ date_html+='

欢迎!

'; } let date = document.createElement('div'); date.className = 'lg-article'; date.innerHTML = date_html; document.querySelector('div.lg-right > div:nth-child(1)').insertAdjacentElement('beforebegin', date); //更改用户名颜色 let color = document.querySelector('#app-old > div.lg-index-content.am-center > div:nth-child(1) > div > div > div > div.am-u-md-4.lg-punch.am-text-center > h2 > a'); console.log(color); if(changecolor != 'null') color.className=changecolor; function removeDivWithText(text) { document.querySelectorAll('div').forEach(div => { if(div.textContent === text) div.remove(); }); } function findElement(element, text, cclass){ document.querySelectorAll(element).forEach(E => { if(E.textContent === text) E.className = cclass; }); } removeDivWithText('暂无推荐'); removeDivWithText('洛谷根据您近期的做题情况,使用机器学习自动为您推荐符合您目前程度的题目。本列表每日更新一次。'); GM_xmlhttpRequest({ method: "GET", url: 'https://top.baidu.com/board?tab=realtime', onload: function(response){ let rs = new DOMParser(); let doc = rs.parseFromString(response.responseText, "text/html"); for(let i=1;i<=5;i++){ let th = i.toString(); let selector = '#sanRoot > main > div.container.right-container_2EFJr > div > div:nth-child(2) > div:nth-child(' + th + ') > div.content_1YWBm > a > div.c-single-text-ellipsis'; let _rs = doc.querySelector(selector); console.log(_rs.textContent); let selector2 = '#sanRoot > main > div.container.right-container_2EFJr > div > div:nth-child(2) > div:nth-child(' + th + ') > div.content_1YWBm > a'; let rslink = doc.querySelector(selector2); console.log(rslink); let link = document.createElement("a"); link.href = rslink.href; link.textContent = _rs.textContent; let RS = document.createElement("p"); RS.appendChild(link); findElement('h2','智能推荐','zntj'); document.getElementsByClassName('zntj')[0].parentNode.append(RS); } } }); } window.onload = function(){ let _hanger = getcookie('hanger'); let __hanger = document.createElementNS('http://www.w3.org/2000/svg','svg'); __hanger.setAttribute('width','16'); __hanger.setAttribute('height','16'); __hanger.setAttribute('viewBox','0 0 16 16'); __hanger.setAttribute('style','margin-bottom: -3px;'); if(_hanger == 'green') __hanger.setAttribute('fill','#5eb95e'); else if(_hanger == 'blue') __hanger.setAttribute('fill','#3498db'); else if(_hanger == 'golden') __hanger.setAttribute('fill','#f1c40f'); let ___hanger = document.createElementNS('http://www.w3.org/2000/svg','path'); ___hanger.setAttribute('d','M16 8C16 6.84375 15.25 5.84375 14.1875 5.4375C14.6562 4.4375 14.4688 3.1875 13.6562 2.34375C12.8125 1.53125 11.5625 1.34375 10.5625 1.8125C10.1562 0.75 9.15625 0 8 0C6.8125 0 5.8125 0.75 5.40625 1.8125C4.40625 1.34375 3.15625 1.53125 2.34375 2.34375C1.5 3.1875 1.3125 4.4375 1.78125 5.4375C0.71875 5.84375 0 6.84375 0 8C0 9.1875 0.71875 10.1875 1.78125 10.5938C1.3125 11.5938 1.5 12.8438 2.34375 13.6562C3.15625 14.5 4.40625 14.6875 5.40625 14.2188C5.8125 15.2812 6.8125 16 8 16C9.15625 16 10.1562 15.2812 10.5625 14.2188C11.5938 14.6875 12.8125 14.5 13.6562 13.6562C14.4688 12.8438 14.6562 11.5938 14.1875 10.5938C15.25 10.1875 16 9.1875 16 8ZM11.4688 6.625L7.375 10.6875C7.21875 10.8438 7 10.8125 6.875 10.6875L4.5 8.3125C4.375 8.1875 4.375 7.96875 4.5 7.8125L5.3125 7C5.46875 6.875 5.6875 6.875 5.8125 7.03125L7.125 8.34375L10.1562 5.34375C10.3125 5.1875 10.5312 5.1875 10.6562 5.34375L11.4688 6.15625C11.5938 6.28125 11.5938 6.5 11.4688 6.625Z'); __hanger.appendChild(___hanger); let _hanger_ = document.createElement("a"); _hanger_.href = 'https://www.luogu.com/discuss/142324'; _hanger_.appendChild(__hanger); let button = document.createElement("a"); button.innerHTML = ''; let menu = document.createElement("div"); menu.innerHTML = '

v1.4.5

用户名颜色

勾子

Tag

'; if(nowurl == 'https://www.luogu.com.cn/' || nowurl == 'https://www.luogu.com.cn/chat' || nowurl.includes('https://www.luogu.com.cn/user/notification') || (nowurl.includes('https://www.luogu.com.cn/user/') && !nowurl.includes('https://www.luogu.com.cn/user/setting'))){ document.querySelector('#app > div.main-container > div.wrapper.wrapped.lfe-body.header-layout.tiny > div.container > nav').insertAdjacentElement('beforebegin', button); document.querySelector("#app > div.main-container > div.wrapper.wrapped.lfe-body.header-layout.tiny > div.container").parentNode.append(menu); } else{ let user_nav = document.querySelector('div.user-nav[data-v-2dfcfd35]'); let c_usernav = document.querySelector('nav[data-v-2dfcfd35]'); user_nav.style.verticalAlign = 'middle'; c_usernav.insertBefore(button,c_usernav.firstChild); button.href = 'https://zhuangjihong.github.io/NEWLG/'; } const tb = document.getElementById("NLTB"); let menudisplay = document.getElementsByClassName("newlgmenu")[0]; function reloadmenu(){ location.reload(); menudisplay.style.display = 'flex'; document.body.style.overflow = 'hidden'; tb.textContent = "EXIT"; } tb.addEventListener('click', function(){ if(menudisplay.style.display == 'none'){ menudisplay.style.display = 'flex'; document.body.style.overflow = 'hidden'; tb.textContent = "EXIT"; } else{ menudisplay.style.display = 'none'; document.body.style.overflow = 'visible'; tb.textContent = "NEWLG"; } const submitcolor = document.getElementById('submitcolor'); const greenhanger = document.getElementById('greenhanger'); const bluehanger = document.getElementById('bluehanger'); const goldenhanger = document.getElementById('goldenhanger'); const nullhanger = document.getElementById('nullhanger'); submitcolor.addEventListener('click', function(){ let colorchange = document.getElementById('nlcolor').value; console.log(colorchange); deletecookie('color'); if(colorchange=='灰名'||colorchange=='gray'){ const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "color=lg-fg-gray" + ";expires=" + time.toUTCString(); reloadmenu(); } else if(colorchange=='蓝名'||colorchange=='blue'){ const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "color=lg-fg-blue" + ";expires=" + time.toUTCString(); reloadmenu(); } else if(colorchange=='绿名'||colorchange=='green'){ const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "color=lg-fg-green" + ";expires=" + time.toUTCString(); reloadmenu(); } else if(colorchange=='橙名'||colorchange=='orange'){ const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "color=lg-fg-orange" + ";expires=" + time.toUTCString(); reloadmenu(); } else if(colorchange=='红名'||colorchange=='red'){ const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "color=lg-fg-red" + ";expires=" + time.toUTCString(); reloadmenu(); } else if(colorchange=='紫名'||colorchange=='purple'){ const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "color=lg-fg-purple" + ";expires=" + time.toUTCString(); reloadmenu(); } else if(colorchange=='棕名'||colorchange=='brown'){ const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "color=lg-fg-brown" + ";expires=" + time.toUTCString(); reloadmenu(); } else if(colorchange=='复原'||colorchange=='recover'){ const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "color=" + nowcolor + ";expires=" + time.toUTCString(); reloadmenu(); } else alert('请按规范输入'); }); greenhanger.addEventListener('click', function(){ deletecookie('hanger'); const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "hanger=green" + ";expires=" + time.toUTCString(); reloadmenu(); }); bluehanger.addEventListener('click', function(){ deletecookie('hanger'); const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "hanger=blue" + ";expires=" + time.toUTCString(); reloadmenu(); }); goldenhanger.addEventListener('click', function(){ deletecookie('hanger'); const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "hanger=golden" + ";expires=" + time.toUTCString(); reloadmenu(); }); nullhanger.addEventListener('click',function(){ deletecookie('hanger'); const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "hanger=null" + ";expires=" + time.toUTCString(); reloadmenu(); }); const submittag = document.getElementById('submittag'); submittag.addEventListener('click', function(){ let tagchange = document.getElementById('nltag').value; if(getcookie('color') == 'lg-fg-brown') alert('当前为棕名'); else if(tagchange.length > 10) alert('长度应小于等于10'); else{ deletecookie('hanger'); const time = new Date(); time.setDate(time.getDate() + 365); document.cookie = "tag=" + tagchange + ";expires=" + time.toUTCString(); reloadmenu(); } }); }); if(nowurl == 'https://www.luogu.com.cn/'){ if(getcookie('hanger')!='null'){ document.querySelector('#app-old > div.lg-index-content.am-center > div:nth-child(1) > div > div > div > div.am-u-md-4.lg-punch.am-text-center > h2 > a').innerHTML += ' '; document.querySelector('#app-old > div.lg-index-content.am-center > div:nth-child(1) > div > div > div > div.am-u-md-4.lg-punch.am-text-center > h2 > a').appendChild(_hanger_); } if(getcookie('tag')!='null'){ document.querySelector('#app-old > div.lg-index-content.am-center > div:nth-child(1) > div > div > div > div.am-u-md-4.lg-punch.am-text-center > h2 > a').innerHTML += ' '; document.querySelector('#app-old > div.lg-index-content.am-center > div:nth-child(1) > div > div > div > div.am-u-md-4.lg-punch.am-text-center > h2 > a').appendChild(tag); } } else if(nowurl.includes('https://www.luogu.com.cn/user/')&&!nowurl.includes('https://www.luogu.com.cn/user/setting')){ if(document.querySelector('#app > div.main-container > main > div > div.full-container > section.main > div > div:nth-child(2)').className == 'introduction marked') document.querySelector('#app > div.main-container > main > div > div.full-container > section.main > div > div:nth-child(2)').removeAttribute('style'); else document.querySelector('#app > div.main-container > main > div > div.full-container > section.main > div > div:nth-child(2)').remove(); let jieshao = document.querySelector('#app > div.main-container > main > div > div.full-container > section.main > div > div.introduction.marked'); if(jieshao.style.display == 'none') jieshao.removeAttribute('style'); } }; })();