Better Luogu!

Luogu Expansion

当前为 2024-12-07 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Better Luogu!
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.8.2
  5. // @description:zh 洛谷扩展
  6. // @description Luogu Expansion
  7. // @author volatile
  8. // @match *://*.luogu.com.cn/*
  9. // @match *://*.luogu.com/*
  10. // @icon https://fecdn.luogu.com.cn/luogu/logo.png?0fdd294ff62e331d2f70e1a37ba4ee02
  11. // @grant GM_addStyle
  12. // @grant GM_getValue
  13. // @grant GM_setValue
  14. // @grant GM_deleteValue
  15. // @grant GM_listValues
  16. // @grant GM_setClipboard
  17. // @grant GM_xmlhttpRequest
  18. // @grant GM_getResourceText
  19. // @grant unsafeWindow
  20. // @connect baidu.com
  21. // @connect greasyfork.org
  22. // @require https://unpkg.com/sweetalert/dist/sweetalert.min.js
  23. // @license MIT
  24. // ==/UserScript==
  25.  
  26. (function() {
  27. 'use strict'
  28.  
  29. var css = ".swal-overlay {background-color: rgba(0, 0, 0, 0.5);}";
  30. var style = document.createElement("style");
  31. style.innerHTML = css;
  32. document.head.appendChild(style);
  33.  
  34. let br = document.createElement('br');
  35.  
  36. let nowurl = window.location.href;
  37.  
  38. let nowcolor1;
  39. let nowcolor="";
  40. if(nowurl == 'https://www.luogu.com.cn/'){
  41. 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;
  42. for(let i=0;i<nowcolor1.length;i++){
  43. if(nowcolor1[i]==' ') break;
  44. nowcolor = nowcolor + nowcolor1[i];
  45. }
  46. let uid = 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').href;
  47. let _uid = "";
  48. for(let i=uid.length-1;i>=0;i--){
  49. if(!(uid[i]>='0'&&uid[i]<='9')) break;
  50. _uid = uid[i] + _uid;
  51. }
  52. setcookie('uid',_uid,114514,'/','luogu.com.cn',true);
  53. }
  54.  
  55. function setcookie(name,value,days,path,domain,secure){
  56. let expires = "";
  57. if(days){
  58. let date = new Date();
  59. date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
  60. expires = "; expires=" + date.toUTCString();
  61. }
  62. var cookieString = name + "=" + (value || "") + expires;
  63. if(path) cookieString += "; path=" + path;
  64. if(domain) cookieString += "; domain=" + domain;
  65. if(secure && window.location.protocol === "https:") cookieString += "; secure";
  66. document.cookie = cookieString;
  67. }
  68.  
  69. function getcookie(name){
  70. const cookiestring = document.cookie;
  71. const cookies = cookiestring.split('; ');
  72. for(const cookie of cookies){
  73. const [cookiename, cookievalue] = cookie.split('=');
  74. if(cookiename === name) return cookievalue;
  75. }
  76. if(name == 'color'){
  77. setcookie('color',nowcolor,114514,'/','luogu.com.cn',true);
  78. return nowcolor;
  79. }
  80. else if(name == 'hanger'){
  81. setcookie('hanger','null',114514,'/','luogu.com.cn',true);
  82. return "null";
  83. }
  84. else if(name == 'version'){
  85. setcookie('version','1.8.2',114514,'/','luogu.com.cn',true);
  86. return "1.8.2";
  87. }
  88. else if(name == 'update'){
  89. setcookie('update','true',114514,'/','luogu.com.cn',true);
  90. return "true";
  91. }
  92. else if(name == 'uid'){
  93. setcookie('null','true',114514,'/','luogu.com.cn',true);
  94. return "null";
  95. }
  96. }
  97.  
  98.  
  99. function deletecookie(name){
  100. document.cookie = name+ '=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/';
  101. }
  102.  
  103. async function sendMessage(uid,content){
  104. await fetch("https://www.luogu.com.cn/api/chat/new", {
  105. headers: [
  106. ["content-type", "application/json"],
  107. ["referer", "https://www.luogu.com.cn/"],
  108. ["x-csrf-token", document.querySelector("meta[name=csrf-token]").content],
  109. ],
  110. body: JSON.stringify({
  111. user: uid,
  112. content: content,
  113. }),
  114. method: "POST",
  115. });
  116. }
  117.  
  118. async function sendBenBen(content){
  119. await fetch("https://www.luogu.com.cn/api/feed/postBenben", {
  120. headers: [
  121. ["content-type", "application/json"],
  122. ["referer", "https://www.luogu.com.cn/"],
  123. ["x-csrf-token", document.querySelector("meta[name=csrf-token]").content],
  124. ],
  125. body: JSON.stringify({
  126. content: content
  127. }),
  128. method: "POST",
  129. });
  130. }
  131.  
  132. GM_xmlhttpRequest({
  133. method: "GET",
  134. url: 'https://greasyfork.org/zh-CN/scripts/487511-better-luogu',
  135. onload: function(response){
  136. let parser = new DOMParser();
  137. let doc = parser.parseFromString(response.responseText, "text/html");
  138. let version = doc.querySelector('dd.script-show-version');
  139. if(version.textContent != '1.8.2' && nowurl == 'https://www.luogu.com.cn/'){
  140. if(getcookie('update')=='true'){
  141. swal("Better Luogu!","有新版本",{
  142. buttons: {
  143. no: {
  144. text: "7天内不再提醒",
  145. value: "false",
  146. },
  147. yes: {
  148. text: "更新",
  149. value: "true",
  150. }
  151. },
  152. })
  153. .then((value) => {
  154. if(value == "false"){
  155. deletecookie('update');
  156. setcookie('update','false',7,'/','luogu.com.cn',true);
  157. swal("Better Luogu!","好的,你可以在 NEWLG 菜单中点击更新来更新");
  158. }
  159. else window.open('https://greasyfork.org/zh-CN/scripts/487511-better-luogu','_blank');
  160. });
  161. }
  162. }
  163. }
  164. });
  165.  
  166. function colorschange(changecolor){//emm,这个函数,额,可能要用吧
  167. if(changecolor == 'lg-fg-gray') return 'rgb\(191, 191, 191\)';
  168. else if(changecolor == 'lg-fg-blue') return 'rgb\(14, 144, 210\)';
  169. else if(changecolor == 'lg-fg-green') return 'rgb\(94, 185, 94\)';
  170. else if(changecolor == 'lg-fg-orange') return 'rgb\(230, 126 34\)';
  171. else if(changecolor == 'lg-fg-red') return 'rgb\(231, 76, 60\)';
  172. else if(changecolor == 'lg-fg-purple') return 'rgb\(142, 68, 173\)';
  173. else if(changecolor == 'lg-fg-brown') return 'rgb\(173, 139, 0\)';
  174. }
  175.  
  176. function update(){
  177. swal("Better Luogu!","“在帖子右侧添加了“在保存站打开”的按钮",{
  178. buttons: {
  179. cancel: "取消",
  180. _continue: {
  181. text: "继续",
  182. value: "continue",
  183. },
  184. },
  185. })
  186. .then((value) => {
  187. if(value == "continue"){
  188. swal("Better Luogu!","对于专栏和讨论区修复了按钮不显示的bug",{
  189. buttons: {
  190. cancel: "取消",
  191. _continue: {
  192. text: "继续",
  193. value: "continue"
  194. }
  195. }
  196. });
  197. /*.then((value1) => {
  198. if(value1 == "continue"){
  199. swal("Better Luogu!","");
  200. }
  201. });*/
  202. }
  203. });
  204. }
  205.  
  206. let changecolor = getcookie('color');
  207.  
  208. let tagchange = getcookie('tag');
  209. let tag = document.createElement("span");
  210. let tagcolor;
  211. if(changecolor != 'lg-fg-blue' && changecolor != 'lg-fg-orange'){
  212. tagcolor = changecolor.replace('fg','bg');
  213. tag.className = 'am-badge am-radius ' + tagcolor;
  214. }
  215. else if(changecolor == 'lg-fg-blue'){
  216. tagcolor = 'color-none';
  217. tag.className = 'am-badge am-radius ' + tagcolor;
  218. tag.style.background = 'rgb(52, 152, 219)';
  219. }
  220. else if(changecolor == 'lg-fg-orange'){
  221. tagcolor = 'color-none';
  222. tag.className = 'am-badge am-radius ' + tagcolor;
  223. tag.style.background = 'rgb(243, 156, 17)';
  224. }
  225. if(changecolor != 'lg-fg-brown') tag.textContent = tagchange;
  226. else tag.textContent = '作弊者';
  227.  
  228. if(getcookie('version')!='1.8.2'&&nowurl=='https://www.luogu.com.cn/'){
  229. deletecookie('version');
  230. setcookie('version','1.8.2',114514,'/','luogu.com.cn',true);
  231. update();
  232. }
  233.  
  234. //首页
  235. if(nowurl == 'https://www.luogu.com.cn/'){
  236. //日历
  237. const today=new Date();
  238. const year=today.getFullYear();
  239. const month=String(today.getMonth()+1);
  240. const day=String(today.getDate());
  241. let date_html='<h2>今天是 '+year+'-'+month+'-'+day+'</h2>';
  242. if(month==1&&day==1){
  243. date_html+='<h2>今天是元旦,新的一年,新的开始</h2>';
  244. }
  245. else if(month==2&&day==29){
  246. date_html+='<h2>今年是闰年</h2>';
  247. }
  248. else if(month==4&&day==1){
  249. date_html+='<h2>今天是愚人节</h2>';
  250. }
  251. else if(month==5&&day==1){
  252. date_html+='<h2>今天是劳动节</h2>';
  253. }
  254. else if(month==6&&day==1){
  255. date_html+='<h2>今天是儿童节</h2>';
  256. }
  257. else if(month==9&&day==10){
  258. date_html+='<h2>今天是教师节</h2>';
  259. }
  260. else if(month==10&&day==1){
  261. date_html+='<h2>今天是国庆节,七天小长假,启动!</h2>'
  262. }
  263. else if(month==12&&day==31){
  264. date_html+='<h2>明年见</h2>';
  265. }
  266. else date_html+='<h2>欢迎!</h2>';
  267. let date = document.createElement('div');
  268. date.className = 'lg-article';
  269. date.innerHTML = date_html;
  270. document.querySelector('div.lg-right > div:nth-child(1)').insertAdjacentElement('beforebegin', date);
  271.  
  272. //更改用户名颜色
  273. 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');
  274. if(changecolor != 'null') color.className=changecolor;
  275.  
  276. function removeDivWithText(text) {
  277. document.querySelectorAll('div').forEach(div => {
  278. if(div.textContent === text) div.remove();
  279. });
  280. }
  281.  
  282. function findElement(element, text, cclass){
  283. document.querySelectorAll(element).forEach(E => {
  284. if(E.textContent === text) E.className = cclass;
  285. });
  286. }
  287.  
  288. removeDivWithText('暂无推荐');
  289. removeDivWithText('洛谷根据您近期的做题情况,使用机器学习自动为您推荐符合您目前程度的题目。本列表每日更新一次。');
  290.  
  291. GM_xmlhttpRequest({
  292. method: "GET",
  293. url: 'https://top.baidu.com/board?tab=realtime',
  294. onload: function(response){
  295. let rs = new DOMParser();
  296. let doc = rs.parseFromString(response.responseText, "text/html");
  297. for(let i=1;i<=5;i++){
  298. let th = i.toString();
  299. 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';
  300. let _rs = doc.querySelector(selector);
  301. let selector2 = '#sanRoot > main > div.container.right-container_2EFJr > div > div:nth-child(2) > div:nth-child(' + th + ') > div.content_1YWBm > a';
  302. let rslink = doc.querySelector(selector2);
  303. let link = document.createElement("a");
  304. link.href = rslink.href;
  305. link.textContent = _rs.textContent;
  306. let RS = document.createElement("p");
  307. RS.appendChild(link);
  308. findElement('h2','智能推荐','zntj');
  309. document.getElementsByClassName('zntj')[0].parentNode.append(RS);
  310. }
  311. }
  312. });
  313.  
  314. let links = document.querySelector('.lg-article.am-hide-sm');
  315. links.insertAdjacentHTML('beforeend','<p><strong>Better Luogu!</strong><br><a href="https://www.volatiles.us.kg/" target="_blank">Better Luogu!</a><br><a href="https://greasyfork.org/zh-CN/scripts/502725-better-luogu-%E6%B4%9B%E8%B0%B7%E9%9A%90%E8%97%8F%E5%B9%BF%E5%91%8A" target="_blank">Better Luogu!-洛谷隐藏广告</a></p>');
  316. }
  317. window.onload=function(){
  318. let _hanger = getcookie('hanger');
  319. let __hanger = document.createElementNS('http://www.w3.org/2000/svg','svg');
  320. __hanger.setAttribute('width','16');
  321. __hanger.setAttribute('height','16');
  322. __hanger.setAttribute('viewBox','0 0 16 16');
  323. __hanger.setAttribute('style','margin-bottom: -3px;');
  324. if(_hanger == 'green')__hanger.setAttribute('fill','#5eb95e');
  325. else if(_hanger == 'blue') __hanger.setAttribute('fill','#3498db');
  326. else if(_hanger == 'golden') __hanger.setAttribute('fill','#f1c40f');
  327. if(_hanger != 'null'&&document.getElementsByClassName('sb_amazeui')[0] != null) document.getElementsByClassName('sb_amazeui')[0].remove();
  328.  
  329. let ___hanger = document.createElementNS('http://www.w3.org/2000/svg','path');
  330. ___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');
  331. __hanger.appendChild(___hanger);
  332. let _hanger_ = document.createElement("a");
  333. _hanger_.href = 'https://www.luogu.com/discuss/142324';
  334. _hanger_.appendChild(__hanger);
  335.  
  336. let button = document.createElement("a");
  337. button.innerHTML = '<button id="NLTB" style=\"background-color: rgb\(94,114,228\);border-radius: 7px;color: white;border: none;padding: 7px 12px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px 2px;cursor: pointer;border: none;box-shadow: 2px 3px 7px #000;\">BETTER</button>';
  338. 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);
  339. else if(!nowurl.includes('https://www.luogu.com.cn/discuss')&&!nowurl.includes('https://www.luogu.com.cn/article')&&!nowurl.includes('https://www.luogu.com.cn/problem/solution/')){
  340. let user_nav = document.querySelector('div.user-nav[data-v-2dfcfd35]');
  341. let c_usernav = document.querySelector('nav[data-v-2dfcfd35]');
  342. user_nav.style.verticalAlign = 'middle';
  343. c_usernav.insertBefore(button,c_usernav.firstChild);
  344. button.href = 'https://www.volatiles.us.kg/';
  345. }
  346. else{
  347. button.href = 'https://www.volatiles.us.kg/';
  348. let user_nav = document.querySelector('div.user-nav[data-v-c1098b6a]');
  349. user_nav.insertBefore(button,user_nav.firstChild);
  350. }
  351. const tb = document.getElementById("NLTB");
  352.  
  353. function reloadmenu(){
  354. swal("Better Luogu!","更改成功","success",{button: "刷新"}).then((value) => {location.reload();});
  355. }
  356.  
  357. function changeusercolor(){
  358. swal({
  359. title: "Better Luogu!",
  360. text: "输入一个词语(规则见油叉插件页)",
  361. content: "input",
  362. button: {
  363. text: "更改",
  364. closeModal: false,
  365. },
  366. })
  367. .then((input) => {
  368. if(input=='灰名'||input=='gray'){
  369. deletecookie('color');
  370. setcookie('color','lg-fg-gray',114514,'/','luogu.com.cn',true);
  371. reloadmenu();
  372. }
  373. else if(input=='蓝名'||input=='blue'){
  374. deletecookie('color');
  375. setcookie('color','lg-fg-blue',114514,'/','luogu.com.cn',true);
  376. reloadmenu();
  377. }
  378. else if(input=='绿名'||input=='green'){
  379. deletecookie('color');
  380. setcookie('color','lg-fg-green',114514,'/','luogu.com.cn',true);
  381. reloadmenu();
  382. }
  383. else if(input=='橙名'||input=='orange'){
  384. deletecookie('color');
  385. setcookie('color','lg-fg-orange',114514,'/','luogu.com.cn',true);
  386. reloadmenu();
  387. }
  388. else if(input=='红名'||input=='red'){
  389. deletecookie('color');
  390. setcookie('color','lg-fg-red',114514,'/','luogu.com.cn',true);
  391. reloadmenu();
  392. }
  393. else if(input=='紫名'||input=='purple'){
  394. deletecookie('color');
  395. setcookie('color','lg-fg-purple',114514,'/','luogu.com.cn',true);
  396. reloadmenu();
  397. }
  398. else if(input=='棕名'||input=='brown'){
  399. deletecookie('color');
  400. setcookie('color','lg-fg-brown',114514,'/','luogu.com.cn',true);
  401. reloadmenu();
  402. }
  403. else if(input=='复原'||input=='recover'){
  404. deletecookie('color');
  405. setcookie('color',nowcolor,114514,'/','luogu.com.cn',true);
  406. reloadmenu();
  407. }
  408. else swal("Better Luogu!","请按规范输入","error");
  409. });
  410. }
  411.  
  412. function changehanger(){
  413. swal("Better Luogu!","选择一个勾子", {
  414. buttons: {
  415. cancel: "取消",
  416. greenhanger: {
  417. text: "绿勾",
  418. value: "greenhanger",
  419. },
  420. bluehanger: {
  421. text: "蓝勾",
  422. value: "bluehanger",
  423. },
  424. goldenhanger: {
  425. text: "金勾",
  426. value: "goldenhanger",
  427. },
  428. nullhanger: {
  429. text: "无勾",
  430. value: "nullhanger",
  431. },
  432. }
  433. })
  434. .then((value) => {
  435. switch (value){
  436. case "greenhanger":
  437. deletecookie('hanger');
  438. setcookie('hanger','green',114514,'/','luogu.com.cn',true);
  439. reloadmenu();
  440. break;
  441. case "bluehanger":
  442. deletecookie('hanger');
  443. setcookie('hanger','blue',114514,'/','luogu.com.cn',true);
  444. reloadmenu();
  445. break;
  446. case "goldenhanger":
  447. deletecookie('hanger');
  448. setcookie('hanger','golden',114514,'/','luogu.com.cn',true);
  449. reloadmenu();
  450. break;
  451. case "nullhanger":
  452. deletecookie('hanger');
  453. setcookie('hanger','null',114514,'/','luogu.com.cn',true);
  454. reloadmenu();
  455. break;
  456. }
  457. });
  458. }
  459.  
  460. function changetag(){
  461. swal({
  462. title: "Better Luogu!",
  463. text: "输入一个tag(无输入以取消)",
  464. content: "input",
  465. button: {
  466. text: "更改",
  467. closeModal: false,
  468. },
  469. })
  470. .then((value) => {
  471. if(getcookie('color') == 'lg-fg-brown') swal("Better Luogu!","当前为棕名","error");
  472. else if(value.length > 10) swal("Better Luogu!","长度应不大于10","error");
  473. else{
  474. deletecookie('tag');
  475. setcookie('tag',value,114514,'/','luogu.com.cn',true);
  476. reloadmenu();
  477. }
  478. });
  479. }
  480.  
  481. function not1(){
  482. let words = ["78;101;118;101;114;32;103;111;110;110;97;32;103;105;118;101;32;121;111;117;32;117;112;","99;110;109;","83;66;","73;65;75;73;79;73;","49;49;52;53;49;52;","49;57;49;57;56;49;48;","115;116;111;","111;114;122;"];
  483. let cishu = Math.floor(Math.random()*10)+1;
  484. for(let i=1;i<=cishu;i++){
  485. let qwq = words[Math.floor(Math.random()*words.length)];
  486. let awa="";
  487. let t=0;
  488. for(let j=0;j<qwq.length;j++){
  489. if(qwq[j]!=';'){
  490. t*=10;
  491. t+=parseInt(qwq[j]);
  492. }
  493. else{
  494. awa+=String.fromCharCode(t);
  495. t=0;
  496. }
  497. }
  498. sendMessage(0xbc970,awa);
  499. }
  500. sendMessage(0xbc970,"孩子们,快下载Better Luogu!吧!");
  501. swal("Better Luogu!","好像有点问题?!","error",{button: "前往私信"}).then((value) => {window.open('https://www.luogu.com.cn/chat','_self');});
  502. }
  503.  
  504. function not2(){
  505. sendBenBen("这个人AKIOI");
  506. sendBenBen("Better Luogu!真好用");
  507. let uid_=getcookie('uid');
  508. if(uid_!='null') swal("Better Luogu!","好像有点问题?!","error",{button: "前往动态"}).then((value) => {window.open('https://www.luogu.com.cn/user/'+uid_+'#activity','_self');});
  509. else swal("Better Luogu!","好像有点问题?!","error",{button: "前往主页犇犇"}).then((value) => {window.open('https://www.luogu.com.cn','_self');});
  510. }
  511.  
  512. function not(){
  513. swal("Better Luogu!","不怕死就选择一个", {
  514. buttons: {
  515. not1: {
  516. text: "1",
  517. value: "not1"
  518. },
  519. not2: {
  520. text: "2",
  521. value: "not2"
  522. }
  523. },
  524. })
  525. .then((value) => {
  526. switch (value){
  527. case "not1":
  528. not1();
  529. break;
  530. case "not2":
  531. not2();
  532. break;
  533. }
  534. });
  535. }
  536.  
  537. tb.addEventListener('click', function(){
  538. if(nowurl == 'https://www.luogu.com.cn/'){
  539. swal("Better Luogu!","选择一个更改", {
  540. buttons: {
  541. username: {
  542. text: "颜色",
  543. value: "color",
  544. },
  545. hanger: {
  546. text: "勾子",
  547. value: "hanger",
  548. },
  549. tag: {
  550. text: "tag",
  551. value: "tag",
  552. },
  553. update: {
  554. text: "更新",
  555. value: "update",
  556. },
  557. content: {
  558. text: "内容",
  559. value: "content"
  560. },
  561. not: {
  562. text: "千万别点!!!",
  563. value: "not"
  564. }
  565. },
  566. })
  567. .then((value) => {
  568. switch (value){
  569. case "color":
  570. changeusercolor();
  571. break;
  572. case "hanger":
  573. changehanger();
  574. break;
  575. case "tag":
  576. changetag();
  577. break;
  578. case "update":
  579. deletecookie('update');
  580. setcookie('update','true',114514,'/','luogu.com.cn',true);
  581. window.open('https://greasyfork.org/zh-CN/scripts/487511-better-luogu','_self');
  582. break;
  583. case "content":
  584. update();
  585. break;
  586. case "not": not();
  587. }
  588. });
  589. }
  590. });
  591. if(nowurl == 'https://www.luogu.com.cn/'){
  592. if(getcookie('hanger')!='null'){
  593. 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 += '&nbsp;';
  594. 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_);
  595. }
  596. if(getcookie('tag')!=''){
  597. 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 += '&nbsp;';
  598. 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);
  599. }
  600. }
  601. else if(nowurl.includes('https://www.luogu.com.cn/user/')&&!nowurl.includes('https://www.luogu.com.cn/user/setting')){
  602. 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');
  603. else document.querySelector('#app > div.main-container > main > div > div.full-container > section.main > div > div:nth-child(2)').remove();
  604. let jieshao = document.querySelector('#app > div.main-container > main > div > div.full-container > section.main > div > div.introduction.marked');
  605. if(jieshao.style.display == 'none') jieshao.removeAttribute('style');
  606. }
  607. else if(nowurl.includes('?contestId=')){
  608. let contestID = "";
  609. let contest = nowurl.toString();
  610. for(let i=contest.length-1;i>=0;i--){
  611. if(!(contest[i]>='0'&&contest[i]<='9')) break;
  612. contestID = contest[i] + contestID;
  613. }
  614. let backlist = 'https://www.luogu.com.cn/contest/'+contestID+'#problems';
  615. let backbtn = document.createElement('a');
  616. backbtn.href = backlist;
  617. backbtn.className = 'color-default';
  618. backbtn.innerHTML = '<svg data-v-5a5fcbaa="" data-v-0640126c="" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="right-from-bracket" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="svg-inline--fa fa-right-from-bracket"><path data-v-5a5fcbaa="" data-v-0640126c="" fill="currentColor" d="M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z" class=""></path></svg>返回题目列表';
  619. document.querySelector('#app > div.main-container > main > div > section.side > div:nth-child(2)').appendChild(br);
  620. document.querySelector('#app > div.main-container > main > div > section.side > div:nth-child(2)').appendChild(backbtn);
  621. }
  622. else if(nowurl.includes('https://www.luogu.com.cn/discuss/')||nowurl.includes('https://www.luogu.com/discuss/')){
  623. let discussID = "";
  624. let discuss = nowurl.toString();
  625. for(let i=discuss.length-1;i>=0;i--){
  626. if(!(discuss[i]>='0'&&discuss[i]<='9')) break;
  627. discussID = discuss[i] + discussID;
  628. }
  629. if(discussID != ""){
  630. let dis = document.createElement('a');
  631. dis.href = 'https://lglg.top/'+discussID;
  632. dis.innerHTML = '<button data-v-f21de448="" data-v-710aa612="" class="solid lform-size-middle" type="button">在保存站打开</button>';
  633. document.querySelector('#app > div.main-container.lside-bar > main > div > div > div.side > div.l-card > div.btn-actions').appendChild(dis);
  634. }
  635. }
  636. }
  637. })();