Greasy Fork

Greasy Fork is available in English.

壁紙変更(Feederチャット)

Feederチャットの背景画像を変更するスクリプトです。

当前为 2020-09-27 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         壁紙変更(Feederチャット)
// @namespace    http://tampermonkey.net/
// @version      0.17
// @description  Feederチャットの背景画像を変更するスクリプトです。
// @author       You
// @match        *.x-feeder.info/*/
// @match        *.x-feeder.info/*/sp/
// @exclude      *.x-feeder.info/*/settings/**
// @require      http://greasyfork.icu/scripts/396472-yaju1919/code/yaju1919.js?version=802405
// @require      http://greasyfork.icu/scripts/387509-yaju1919-library/code/yaju1919_library.js?version=755144
// @require      http://greasyfork.icu/scripts/388005-managed-extensions/code/Managed_Extensions.js?version=720959
// @grant        GM.setValue
// @grant        GM.getValue
// ==/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 = $("<div>");
            //////////////////////////////////////////////////
            var inputChangeBool = yaju1919.addInputBool(h, { // 壁紙変更
                title: "壁紙変更",
                value: false,
                change: (function() {
                    main();
                })
            });
            h.append("<hr>");
            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 = $("<div>").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("<br>フィルタの色: ");
            var inputColor = $("<input>", { // フィルタの色
                type: "color",
                value: "#000000"
            }).change(function() {
                yaju1919.save("inputColor", inputColor.val());
            }).appendTo(h);
            var inputOpacity_text = $("<div>").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("<hr>");
            // 画像の加工関係の入力要素
            var inputBlur_text = $("<div>").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 = $("<div>").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 = $("<div>").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 = $("<div>").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 $("<button>").text(title).click(func).appendTo(h);
            };
            //-------------
            // 処理的な関数
            function loadValue() { // 値を読み込む関数
                inputInterval_text.text("変更間隔: " + timeConv(inputInterval()));
                inputOpacity_text.text("フィルタの不透明度: " + inputOpacity() + "%");
                inputBlur_text.text("ぼかしの強度: " + inputBlur() + "%");
                inputBrightness_text.text("明度: " + inputBrightness() + "%");
                inputSaturate_text.text("彩度: " + inputSaturate() + "%");
                inputSepia_text.text("セピア: " + inputSepia() + "%");
                yaju1919.load("inputColor", (function(r) {
                    inputColor.val(r);
                }));
            };

            function setImage(data) { // 壁紙を設定する関数
                var imageIdx = inputImageUrls().split("\n").indexOf($("body").css("background-image").match(/^url\("((https?|data):\/\/.+)"\)$/)[1]);
                if (data === "keep") {
                    yaju1919.load("imageIdx", (function(r) {
                        imageIdx = r;
                    }));
                } else {
                    if (!inputImageUrls().split("\n")[imageIdx + 1]) imageIdx = 0;
                    else imageIdx++;
                    yaju1919.save("imageIdx", imageIdx);
                };
                $("#wrapper").css("background-color", "transparent");
                setTimeout((function() {
                    yaju1919.setBgImg(inputImageUrls().split("\n")[imageIdx], {
                        color: inputColor.val(),
                        opacity: inputOpacity() / 100
                    });
                }));
            };

            function removeImage() { // 壁紙を削除する関数
                if (filterElement) filterElement.remove();
                $("#wrapper").css("background-color", backgroundColor_copy);
                $("body").removeAttr("style");
                yaju1919.setBgImg(null, {
                    opacity: 0
                });
            };

            function setFilter() { // フィルタを設定する関数
                return $("<div>").css({
                    zIndex: "-114515",
                    background: "inherit",
                    filter: "blur(" + inputBlur() / 10 + "px) brightness(" + inputBrightness() + "%) saturate(" + inputSaturate() + "%) sepia(" + inputSepia() + "%)",
                    position: "fixed",
                    top: "0px",
                    left: "0px",
                    right: "0px",
                    bottom: "0px"
                }).appendTo("body");
            };

            function main(data) { // 設定用
                setTimeout((function() {
                    removeImage();
                    clearInterval(intervalId);
                    if (!inputChangeBool() || inputImageUrls() === "") return;
                    setImage(data);
                    filterElement = setFilter();
                    if (inputImageUrls().split("\n").length === 1) return;
                    intervalId = setInterval((function() {
                        setImage();
                    }), inputInterval() * 1000);
                }));
            };
            //-------------
            //////////////////////////////////////////////////
            return h;
        }),
        tag: "装飾"
    };
})(this.unsafeWindow || window);