Better Luogu!

Luogu Expansion

当前为 2024-11-03 提交的版本,查看 最新版本

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