您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
AtCoderの問題のページから直接解説のページに行くことができます。
// ==UserScript== // @name AtCoder Traffic Light // @namespace http://tampermonkey.net/ // @version 1.0 // @description AtCoderの問題のページから直接解説のページに行くことができます。 // 問題横のボタンが赤の場合:読み込み中です待っていてください。 // 問題横のボタンが黄の場合:全体解説のみありました。 // 問題横のボタンが緑の場合:この問題の解説がありました。 // @author soraie // @match https://atcoder.jp/contests/*/tasks/* // @grant none // ==/UserScript== /* ユーザー設定項目 */ const color = { "green":"#2cf44c", //緑 "yellow":"#fff25e", //黄色 "red":"#ff5757" //赤 }; /* 設定項目終わり */ //各解説のサイト //1.各問題解説:https://atcoder.jp/contests/{contest}/editorial/{number} //2.全体解説pdf:https://img.atcoder.jp/{contest}/editorial.pdf //3.スライド:https://www.slideshare.net/{chokudai}/{contest} //ユーザー解説:他 //全体解説Youtube:https://youtube.com/{any} if(moment() < endTime)return;//コンテスト中 let btn = $(".btn.btn-default.btn-sm").eq(0); btn.css("background-color",color.red); btn.css("pointer-events","none"); (function() { 'use strict'; let now = location.href.split("/"),url = `https://1d878d9b.us-south.apigw.appdomain.cloud/proxy?url=https://atcoder.jp/contests/${now[4]}/tasks/${now[6]}/editorial?lang=ja`; $.ajax(url).done((data) => { let link = data.response.split("コンテスト全体の解説"); link[0] = link[0].match(/<a.*公式解説.*a>|<a.*ユーザ.*a>/g);link[1] = link[1].match(/<a.*公式解説.*a>|<a.*ユーザ.*a>/g); let final = "";//最終的なボタンのリンク if(link[0] !== null){ for(let i = 0;i < link[0].length;i++){ let ele = link[0][i].match(/href=".*".*target/)[0]; ele = ele.replace(/href="|".*target/g,""); if(ele.match(/\/editorial\//) !== null){ final = ele; break; } final = ele; } btn.attr("href",final);btn.attr("target","_blank");btn.css("pointer-events",""); btn.css("background-color",color.green); } else{ if(link[1] === null){ //もう何もできないので潔く負けを認める btn.text("解説無し"); } for(let i = 0;i < link[1].length;i++){ let ele = link[1][i].match(/href=".*".*target/)[0]; ele = ele.replace(/href="|".*target/g,""); if(ele.match(/editorial\.pdf/) !== null){ final = ele; break; } final = ele; } btn.attr("href",final);btn.attr("target","_blank");btn.css("pointer-events",""); btn.css("background-color",color.yellow); } }) })();