// ==UserScript==
// @name new luogu
// @namespace http://tampermonkey.net/
// @version 1.2.2
// @description Luogu Expansion
// @description:zh 洛谷扩展
// @author volatile
// @match https://www.luogu.com.cn/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=luogu.com.cn
// @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 new 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: 100vh; display: none; align-items: center; justify-content: center; } .NEWLG-menu{width: 600px; height: 800px; display: flex; flex-direction: column; padding: 40px; position: relative; z-index: 100; background: inherit; border-radius: 18px; overflow: hidden; } .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; }";
var style = document.createElement("style");
style.innerHTML = css;
document.head.appendChild(style);
let nowurl = window.location.href;
console.log(nowurl);
function getcookie(name){
const cookiestring = document.cookie;
const cookies = cookiestring.split('; ');
for(const cookie of cookies){
const [cookiename, cookievalue] = cookie.split('=');
if(cookiename === name) return cookievalue;
}
if(name == 'color'){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "color=lg-fg-purple" + ";expires=" + time.toUTCString();
return "lg-fg-purple";
}
else if(name == 'hanger'){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "hanger=golden" + ";expires=" + time.toUTCString();
return "golden";
}
else if(name == 'tag'){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "tag=管理员" + ";expires=" + time.toUTCString();
return "管理员";
}
}
let changecolor = getcookie('color');
let _username;
let tagchange = getcookie('tag');
let tag = document.createElement("span");
let tagcolor = changecolor.replace('fg','bg');
tag.className = 'am-badge am-radius ' + tagcolor;
tag.textContent = tagchange;
GM_xmlhttpRequest({
method: "GET",
url: 'https://www.luogu.com.cn/',
onload: function(response){
let username = new DOMParser();
let doc1 = username.parseFromString(response.responseText, "text/html");
_username = doc1.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').textContent;
}
});
//首页
if(nowurl == 'https://www.luogu.com.cn/'){
//日历
const today=new Date();
const year=today.getFullYear();
const month=String(today.getMonth()+1);
const day=String(today.getDate());
console.log(year);
console.log(month);
console.log(day);
let date_html='
今天是 '+year+'-'+month+'-'+day+'
';
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 if(month==4&&day==28){
let years=year-2012;
date_html+='今天是作者生日的后 '+years+' 年
';
}
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;
document.querySelector('#app-old > div.lg-index-content.am-center > div:nth-child(3) > div.am-u-lg-3.am-u-md-4.lg-right > div:nth-child(3) > div:nth-child(5)').remove();
document.querySelector('#app-old > div.lg-index-content.am-center > div:nth-child(3) > div.am-u-lg-3.am-u-md-4.lg-right > div:nth-child(3) > div').remove();
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);
document.querySelector('#app-old > div.lg-index-content.am-center > div:nth-child(3) > div.am-u-lg-3.am-u-md-4.lg-right > div:nth-child(3) > h2:nth-child(4)').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("div");
button.innerHTML = '';
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);
let menu = document.createElement("div");
menu.innerHTML = '';
document.querySelector("#app > div.main-container > div.wrapper.wrapped.lfe-body.header-layout.tiny > div.container").parentNode.append(menu);
const tb = document.querySelector('#app > div.main-container > div.wrapper.wrapped.lfe-body.header-layout.tiny > div.container > div:nth-child(3) > button');
tb.addEventListener('click', function(){
let menudisplay = document.querySelector('#app > div.main-container > div.wrapper.wrapped.lfe-body.header-layout.tiny > div:nth-child(3) > div');
if(menudisplay.style.display == 'none') menudisplay.style.display = 'flex';
else menudisplay.style.display = 'none';
const submitcolor = document.querySelector('#app > div.main-container > div.wrapper.wrapped.lfe-body.header-layout.tiny > div:nth-child(3) > div > from > button');
const greenhanger = document.querySelector('#app > div.main-container > div.wrapper.wrapped.lfe-body.header-layout.tiny > div:nth-child(3) > div > from > h3:nth-child(6) > button:nth-child(1)');
const bluehanger = document.querySelector('#app > div.main-container > div.wrapper.wrapped.lfe-body.header-layout.tiny > div:nth-child(3) > div > from > h3:nth-child(6) > button:nth-child(2)');
const goldenhanger = document.querySelector('#app > div.main-container > div.wrapper.wrapped.lfe-body.header-layout.tiny > div:nth-child(3) > div > from > h3:nth-child(6) > button:nth-child(3)');
submitcolor.addEventListener('click', function(){
let colorchange = document.getElementById('nlcolor').value;
console.log(colorchange);
if(colorchange=='灰名'){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "color=lg-fg-gray" + ";expires=" + time.toUTCString();
location.reload();
}
else if(colorchange=='蓝名'){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "color=lg-fg-blue" + ";expires=" + time.toUTCString();
location.reload();
}
else if(colorchange=='绿名'){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "color=lg-fg-green" + ";expires=" + time.toUTCString();
location.reload();
}
else if(colorchange=='橙名'){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "color=lg-fg-orange" + ";expires=" + time.toUTCString();
location.reload();
}
else if(colorchange=='红名'){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "color=lg-fg-red" + ";expires=" + time.toUTCString();
location.reload();
}
else if(colorchange=='紫名'){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "color=lg-fg-purple" + ";expires=" + time.toUTCString();
location.reload();
}
else if(colorchange=='复原'){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "color=null" + ";expires=" + time.toUTCString();
location.reload();
}
});
greenhanger.addEventListener('click', function(){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "hanger=green" + ";expires=" + time.toUTCString();
location.reload();
});
bluehanger.addEventListener('click', function(){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "hanger=blue" + ";expires=" + time.toUTCString();
location.reload();
});
goldenhanger.addEventListener('click', function(){
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "hanger=golden" + ";expires=" + time.toUTCString();
location.reload();
});
const submittag = document.querySelector('#app > div.main-container > div.wrapper.wrapped.lfe-body.header-layout.tiny > div:nth-child(3) > div > from > button:nth-child(9)');
submittag.addEventListener('click', function(){
let tagchange = document.getElementById('nltag').value;
const time = new Date();
time.setDate(time.getDate() + 365);
document.cookie = "tag=" + tagchange + ";expires=" + time.toUTCString();
location.reload();
});
});
if(nowurl == 'https://www.luogu.com.cn/'){
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_);
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.card.user-header-container.padding-0 > div.user-header-top > div.user-info > div.user-name > span').textContent != _username){
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');
}
};
// Your code here...
})();