try to take over the world!
当前为
// ==UserScript==
// @name AtCoder Bookmarks
// @namespace http://tampermonkey.net/
// @version 0.1.2
// @description try to take over the world!
// @author You
// @match https://atcoder.jp/contests/*/tasks/*
// @match https://atcoder-bookmarks.oxyshower.xyz
// @match http://localhost:3000/
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant GM.setValue
// @grant GM.getValue
// @grant GM_listValues
// @grant GM.deleteValue
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
// ==/UserScript==
(function () {
"use strict";
const URL = location.href;
if (URL.match("https://atcoder-bookmarks.oxyshower.xyz")) {
let id = 0;
let datalist = [];
for (const key of GM_listValues()) {
let username = "",
problemname = "",
problemurl,
idx = 8;
while (key[idx] != "$") username += key[idx++];
idx++;
while (key[idx] != "$") problemname += key[idx++];
idx++;
problemurl = key.substr(idx);
datalist[id++] = {
userName: username,
problemName: problemname,
problemUrl: problemurl,
};
}
localStorage.removeItem("atcoder");
// objectは保存できない -> 文字列で保存
localStorage.setItem("atcoder", JSON.stringify(datalist));
// console.log(JSON.stringify(datalist));
} else {
const userName = document
.getElementsByClassName("dropdown-toggle")[1]
.textContent.slice(10, -17);
const problemUrl = location.href;
const problemName = document
.getElementsByClassName("h2")[0]
.textContent.slice(4, -9);
const value =
"atcoder" + "$" + userName + "$" + problemName + "$" + problemUrl;
let html = '<button type="button" tag="HEAD" class="Bookmark">☆</button>';
const newStyle = document.createElement("style");
newStyle.type = "text/css";
newStyle.innerText =
"* { border: none; outline: none; * background: transparent;}";
document.getElementsByTagName("HEAD").item(0).appendChild(newStyle);
$(".h2").append(html);
let onoff = "off";
for (const key of GM_listValues()) {
if (key == value) {
onoff = "on";
$(".Bookmark").text("★");
}
}
$(".Bookmark").click(function () {
switch (onoff) {
case "off":
onoff = "on";
$(".Bookmark").text("★");
GM.setValue(value);
break;
case "on":
onoff = "off";
$(".Bookmark").text("☆");
GM.deleteValue(value);
break;
}
});
}
})();