Greasy Fork

Greasy Fork is available in English.

自由帳定期作成(Feederチャット)

Feederチャットの自由帳を定期的に作り続けるスクリプトです。

当前为 2020-06-12 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         自由帳定期作成(Feederチャット)
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Feederチャットの自由帳を定期的に作り続けるスクリプトです。
// @author       You
// @match        *.x-feeder.info/*/
// @exclude      *.x-feeder.info/*/sp/
// @exclude      *.x-feeder.info/*/settings/**
// @require      http://greasyfork.icu/scripts/396472-yaju1919/code/yaju1919.js?version=798050
// @grant        GM.setValue
// @grant        GM.getValue
// ==/UserScript==

(function() {
    'use strict';
    // 自由帳を作成する関数
    const addNote = (title, text, password, folderId) => {
        if (title === "") return; // titleが空なら処理を中断
        let elm_flag = $("#folder_navi_area").length !== 0; // 既に自由帳を開いているか
        if (!elm_flag) toggleSubContents(1); // 自由帳を開く
        createNote(title, password, password, folderId);
        setTimeout(() => { // 自由帳の編集
            $("#note_contents").text(text);
            $("#note_save_button").click();
        }, 750);
        if (!elm_flag) setTimeout(() => toggleSubContents(1), 800); // 最初に自由帳を開いていなかったら閉じる
    }
    //---------------------
    const addBtn = (h, title, func) => { // ボタンを作成する関数
        return $("<button>").text(title).click(func).appendTo(h);
    }
    const getInputVal = (h) => { // 引数に渡した要素内の入力欄の値をtextarea要素とinput要素に分けて連想配列で返す関数
        let inputElmObj = {}
        let inputVal = [];
        if (h.find("textarea").length !== 0) {
            h.find("textarea").each((i, e) => inputVal.push(e.value));
            inputElmObj.textarea = inputVal;
            inputVal = [];
        }
        if (h.find("input").length !== 0) {
            h.find("input").each((i, e) => inputVal.push(e.value));
            inputElmObj.input = inputVal;
        }
        return inputElmObj;
    }
    const setInputVal = (h, inputValArr, textareaValArr) => { // 引数に渡した要素内の入力欄の値をセットする関数
        if (h.find("textarea").length !== 0 && h.find("textarea").length === textareaValArr.length) h.find("textarea").each((i, e) => e.value = textareaValArr[i]);
        if (h.find("input").length !== 0 && h.find("input").length === inputValArr.length) h.find("input").each((i, e) => e.value = inputValArr[i]);
    }
    const h = $("<div>").css({
        "background-color": "gray",
        "border": "3px solid black",
        "border-radius": "10px",
    }).prependTo("#main_right").append("<h1>自由帳定期作成</h1><br>");
    let si; // siはsetIntervalのidを格納する変数
    yaju1919.addInputBool(h, {
        title: "定期作成",
        value: false,
        change: () => {
            setTimeout(() => {
                let valObj = getInputVal(h);
                if (valObj.input.length === 1) return;
                const createInterval = valObj.input[1];
                const noteTitle = valObj.input[3];
                const noteText = valObj.textarea[0];
                const notePassword = valObj.input[4];
                const noteFolderId = valObj.input[2];
                clearInterval(si);
                if (!h.find("input").eq(0).prop("checked")) return;
                si = setInterval(() => addNote(noteTitle, noteText, notePassword, noteFolderId), createInterval * 1000);
            });
        },
    });
    addBtn(h, "作成", () => { // 自由帳を作成
        let valObj = getInputVal(h);
        const noteTitle = valObj.input[3];
        const noteText = valObj.textarea[0];
        const notePassword = valObj.input[4];
        const noteFolderId = valObj.input[2];
        addNote(noteTitle, noteText, notePassword, noteFolderId);
    });
    addBtn(h, "クリア", () => setInputVal(h, ["on", 15, 0, "Hello, World!", ""], [""])); // 入力欄をクリア
    addBtn(h, "簡単入力", () => setInputVal(h, ["on", 15, 0, "Hello, World!", ""], ["Hello, World!\nHello, World!\nHello, World!"])); // 入力欄にサンプルテキストを入力
    yaju1919.addInputNumber(h, {
        title: "作成間隔",
        placeholder: "自由帳の作成間隔を入力(単位:秒)",
        save: "AM_createInterval",
        width: "100%",
        value: 15,
        min: 15,
        max: Infinity,
    });
    yaju1919.addInputNumber(h, {
        title: "フォルダID",
        placeholder: "作成先のフォルダIDを入力(空の場合は0)",
        save: "AM_folderId",
        width: "100%",
        value: 0,
        min: 0,
        max: Infinity,
    });
    yaju1919.addInputText(h, {
        title: "タイトル",
        placeholder: "自由帳のタイトルを入力",
        save: "AM_noteTitle",
        width: "100%",
        value: "Hello, World!",
        hankaku: false,
        change: () => { // タイトルの入力欄が空なら既定値に戻す
            if (h.find("input").eq(3).val() === "") setTimeout(() => h.find("input").eq(3).val("Hello, World!"));
        },
    });
    yaju1919.addInputText(h, {
        title: "パスワード",
        placeholder: "自由帳のパスワードを入力",
        save: "AM_notePassword",
        width: "100%",
    });
    yaju1919.addInputText(h, {
        title: "本文",
        placeholder: "自由帳の本文を入力",
        save: "AM_noteText",
        width: "100%",
        textarea: true,
        hankaku: false,
    });
})();