- // ==UserScript==
- // @name Cookie Editor
- // @namespace http://tampermonkey.net/
- // @version 0.3
- // @description サイト内のCookieを編集できるようになるスクリプトです。
- // @author You
- // @match *.x-feeder.info/*/
- // @match *.x-feeder.info/*/sp/
- // @exclude *.x-feeder.info/*/settings/**
- // @match http://drrrkari.com/room/
- // @match http://www.3751chat.com/ChatRoom*
- // @match https://pictsense.com/*
- // @match http://www.himachat.com/
- // @match https://discord.com/*
- // @match https://*.open2ch.net/*
- // @require https://greasyfork.org/scripts/396472-yaju1919/code/yaju1919.js?version=798050
- // @require https://greasyfork.org/scripts/388005-managed-extensions/code/Managed_Extensions.js?version=720959
- // @grant GM.setValue
- // @grant GM.getValue
- // ==/UserScript==
-
- (function() {
- 'use strict';
- // カスタマイズ領域
- const cookieInfoColor = "lightyellow"; // Cookie情報の色
- //-----------------
- // Cookieをセットする関数。「feederチャット - sidを変える」(https://greasyfork.org/ja/scripts/402949)というスクリプトからお借りしました。
- function setCookie(c_name, value, expiredays) {
- // pathの指定
- var path = location.pathname;
- // pathをフォルダ毎に指定する場合のIE対策
- var paths = new Array();
- paths = path.split("/");
- if (paths[paths.length - 1] != "") {
- paths[paths.length - 1] = "";
- path = paths.join("/");
- }
- // 有効期限の日付
- var extime = new Date().getTime();
- var cltime = new Date(extime + (60 * 60 * 24 * 1000 * expiredays));
- var exdate = cltime.toUTCString();
- // クッキーに保存する文字列を生成
- var s = "";
- s += c_name + "=" + encodeURIComponent(value); // 値はエンコードしておく
- s += "; path=" + path;
- if (expiredays) {
- s += "; expires=" + exdate + "; ";
- } else {
- s += "; ";
- }
- // クッキーに保存
- document.cookie = s;
- }
- //---------------------------------------------------------------------------------------------------------------------------------------
- const addBtn = (h, title, func) => { // ボタンを追加する関数
- return $("<button>").text(title).click(func).appendTo(h);
- };
- let inputCookieName, inputCookieValue, inputCookieExpireDays, si; // siはsetIntervalのidを格納する変数
- const setConfig = () => {
- const h = $("<div>");
- let oldCookies;
- let cookieInfo = $("<div>").css("color", cookieInfoColor).appendTo(h); // サイト内のCookieを表示する要素
- inputCookieName = yaju1919.addInputText(h, {
- title: "Cookieの名前",
- placeholder: "Cookieの名前を入力",
- save: "AM_inputCookieName",
- width: "90%",
- });
- inputCookieValue = yaju1919.addInputText(h, {
- title: "Cookieの値",
- placeholder: "Cookieの値を入力",
- save: "AM_inputCookieValue",
- width: "90%",
- });
- inputCookieExpireDays = yaju1919.addInputNumber(h, {
- title: "Cookieの有効期限",
- placeholder: "Cookieの有効期限を入力",
- save: "AM_inputCookieExpireDays",
- width: "90%",
- value: 0,
- min: Number.NEGATIVE_INFINITY,
- max: Infinity,
- });
- const cookieInfoLoad = () => { // Cookieを取得
- if (oldCookies === document.cookie) return;
- cookieInfo.empty().text(`Cookie : ${document.cookie.split(";").length}個`);
- let activeElm = document.activeElement;
- let cookies = document.cookie;
- let cookieInfoElm;
- oldCookies = cookies;
- cookies.split(";").forEach(v => {
- cookieInfoElm = yaju1919.addInputText(cookieInfo, {
- readonly: true,
- textarea: true,
- value: v === "" ? "Cookieが見つかりませんでした。" : v,
- width: "100%",
- });
- let elm = h.find("textarea").last();
- elm.focus(() => { // フォーカスされた要素に表示されているCookieの名前と値を入力欄に入力
- if (elm.val() === "Cookieが見つかりませんでした。") return;
- elm.val().split("=").forEach((v, i) => {
- h.find("input").eq(i).val(decodeURIComponent(v));
- });
- });
- });
- activeElm.focus();
- }
- addBtn(h, "編集", () => {
- const cookieName = inputCookieName();
- const cookieValue = inputCookieValue();
- const cookieExpireDays = inputCookieExpireDays();
- setCookie(cookieName, cookieValue, cookieExpireDays);
- cookieInfoLoad();
- });
- addBtn(h, "Cookie全削除", () => {
- let cookies = document.cookie;
- cookies.split("; ").forEach(v => {
- setCookie(v.replace(/=.*/, ""), "", -1);
- cookieInfoLoad();
- });
- });
- addBtn(h, "ページリロード", () => {
- location.reload();
- });
- // Cookieを1秒間隔で取得
- clearInterval(si);
- si = setInterval(() => {
- cookieInfoLoad();
- }, 1000);
- //----------------------
- cookieInfoLoad(); // 起動時にCookieを取得
- return h;
- }
- win.Managed_Extensions["Cookie Editor"] = {
- config: setConfig,
- tag: "実用的",
- }
- })();