// ==UserScript==
// @name 壁紙変更(Feederチャット)
// @namespace http://tampermonkey.net/
// @version 0.18
// @description Feederチャットの背景画像を変更するスクリプトです。
// @author You
// @match *.x-feeder.info/*/
// @match *.x-feeder.info/*/sp/
// @exclude *.x-feeder.info/*/settings/**
// @require https://greasyfork.org/scripts/396472-yaju1919/code/yaju1919.js?version=802405
// @require https://greasyfork.org/scripts/387509-yaju1919-library/code/yaju1919_library.js?version=755144
// @require https://greasyfork.org/scripts/388005-managed-extensions/code/Managed_Extensions.js?version=720959
// @grant GM.setValue
// @grant GM.getValue
// @downloadURL https://update.greasyfork.icu/scripts/386713/%E5%A3%81%E7%B4%99%E5%A4%89%E6%9B%B4%28Feeder%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%29.user.js
// @updateURL https://update.greasyfork.icu/scripts/386713/%E5%A3%81%E7%B4%99%E5%A4%89%E6%9B%B4%28Feeder%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%29.meta.js
// ==/UserScript==
(function(unsafeWindow) {
'use strict';
unsafeWindow.Managed_Extensions["壁紙変更"] = {
config: (function() {
var $ = unsafeWindow.$;
var yaju1919 = window.yaju1919;
var old_yaju1919 = yaju1919_library;
var backgroundColor_copy = $("#wrapper").css("background-color"); // デフォルトの背景色をコピー
var intervalId, filterElement; // intervalIdはsetIntervalのidを格納する変数、filterElementはフィルタの要素を格納する変数
var h = $("
");
//////////////////////////////////////////////////
var inputChangeBool = yaju1919.addInputBool(h, { // 壁紙変更
title: "壁紙変更",
value: false,
change: (function() {
main();
})
});
h.append("
");
var inputImageUrls = yaju1919.addInputText(h, { // 画像URL
save: "inputImageUrls",
title: "画像URL",
placeholder: "背景画像のURLを改行で区切って入力",
width: "90%",
textarea: true,
change: (function() {
setTimeout((function() {
h.find("textarea").val([...new Set(inputImageUrls().split("\n").filter((function(v) {
return v.match(/^(https?|data):\/\/.+$/);
})))].join("\n"));
main();
}));
})
});
var inputInterval_text = $("
").text("変更間隔: 5秒").appendTo(h);
var inputInterval = old_yaju1919.appendInputRange(h, { // 変更間隔
save: "inputInterval",
width: "90%",
value: 5,
min: 5,
max: 300,
step: 1,
change: (function() {
loadValue();
main("keep");
})
});
// フィルタ関係の入力要素
h.append("
フィルタの色: ");
var inputColor = $("
", { // フィルタの色
type: "color",
value: "#000000"
}).change(function() {
yaju1919.save("inputColor", inputColor.val());
}).appendTo(h);
var inputOpacity_text = $("
").text("フィルタの不透明度: 0%").appendTo(h);
var inputOpacity = old_yaju1919.appendInputRange(h, { // フィルタの不透明度
save: "inputOpacity",
width: "90%",
value: 0,
min: 0,
max: 100,
step: 1,
change: (function() {
loadValue();
main("keep");
})
});
//-----------------------
h.append("
");
// 画像の加工関係の入力要素
var inputBlur_text = $("
").text("ぼかしの強度: 0%").appendTo(h);
var inputBlur = old_yaju1919.appendInputRange(h, { // ぼかしの強度
save: "inputBlur",
width: "90%",
value: 0,
min: 0,
max: 100,
step: 1,
change: (function() {
loadValue();
main("keep");
})
});
var inputBrightness_text = $("
").text("明度: 100%").appendTo(h);
var inputBrightness = old_yaju1919.appendInputRange(h, { // 明度
save: "inputBrightness",
width: "90%",
value: 100,
min: 0,
max: 200,
step: 1,
change: (function() {
loadValue();
main("keep");
})
});
var inputSaturate_text = $("
").text("彩度: 100%").appendTo(h);
var inputSaturate = old_yaju1919.appendInputRange(h, { // 彩度
save: "inputSaturate",
width: "90%",
value: 100,
min: 0,
max: 200,
step: 1,
change: (function() {
loadValue();
main("keep");
})
});
var inputSepia_text = $("
").text("セピア: 0%").appendTo(h);
var inputSepia = old_yaju1919.appendInputRange(h, { // セピア
save: "inputSepia",
width: "90%",
value: 0,
min: 0,
max: 100,
step: 1,
change: (function() {
loadValue();
main("keep");
})
});
addBtn(h, "初期値", (function() { // 初期値
if (!confirm("初期値に戻しますか?")) return;
var ranges = $("input[type='range']");
ranges.eq(2).val(0);
ranges.eq(3).val(100);
ranges.eq(4).val(100);
ranges.eq(5).val(0);
loadValue();
main("keep");
}));
//-------------------------
//////////////////////////////////////////////////
setTimeout(loadValue); // setTimeoutで遅延して値を読み込む
//////////////////////////////////////////////////
// 汎用的な関数
function timeConv(second) { // 秒数から分秒に変換する関数
var min = Math.floor(second / 60);
var sec = second % 60;
var timeText = sec + "秒";
if (min > 0) timeText = min + "分" + timeText;
return timeText;
};
function addBtn(h, title, func) { // ボタンを追加する関数
return $("