Greasy Fork

Greasy Fork is available in English.

AniList - Activity Templates

Script that gives you the possibility to create Activity Templates on AniList

当前为 2023-09-17 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         AniList - Activity Templates
// @namespace    https://www.youtube.com/c/NurarihyonMaou/
// @version      1.1
// @description  Script that gives you the possibility to create Activity Templates on AniList
// @author       NurarihyonMaou
// @match        https://anilist.co/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=anilist.co
// @grant        GM_setValue
// @grant        GM_getValue
// @require      http://code.jquery.com/jquery-3.5.1.min.js
// ==/UserScript==

const $ = window.jQuery;

let currentText = '', templateName = '';
let templates = [], templateID, templatesList;
let markdown_editor, textArea, inputTemplateName, templateSelector;

let plus = '<svg class="svg-inline--fa fa-plus fa-w-14" aria-hidden="true" data-fa-processed="" data-prefix="fa" data-icon="plus" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M448 294.2v-76.4c0-13.3-10.7-24-24-24H286.2V56c0-13.3-10.7-24-24-24h-76.4c-13.3 0-24 10.7-24 24v137.8H24c-13.3 0-24 10.7-24 24v76.4c0 13.3 10.7 24 24 24h137.8V456c0 13.3 10.7 24 24 24h76.4c13.3 0 24-10.7 24-24V318.2H424c13.3 0 24-10.7 24-24z"></path></svg>';
let minus = '<svg class="svg-inline--fa fa-minus fa-w-14" aria-hidden="true" data-fa-processed="" data-prefix="fa" data-icon="minus" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M424 318.2c13.3 0 24-10.7 24-24v-76.4c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v76.4c0 13.3 10.7 24 24 24h400z"></path></svg>';
let save = '<svg class="svg-inline--fa fa-save fa-w-14" aria-hidden="true" data-fa-processed="" data-prefix="fas" data-icon="save" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"></path></svg>';

let backspace = jQuery.Event("keypress");
backspace.which = 8;

let enter = jQuery.Event("keypress");
backspace.which = 13;

(function init() {
    markdown_editor = document.getElementsByClassName("markdown-editor");

    if (markdown_editor.length > 0) {
        textArea = document.getElementsByClassName("el-textarea__inner")
        $(textArea).after("<input type='text' id='templateName' placeholder='Name Your Template' class='input el-textarea'>");
        
        inputTemplateName = document.getElementById("templateName");
        
        $(markdown_editor).append("<div id='addT' title='Add Template'>" + plus + "</div><div id='removeT' title='Remove Template'>" + minus + "</div><div id='updateT' title='Update Template'>" + save + "</div>");
        $(markdown_editor).append("<select id='templatesList'></select>");

        templateSelector = $("body select#templatesList");

        function loadTemplatesList() {
            if (GM_getValue('templates') != undefined)
                templates = GM_getValue('templates');

            templatesList = "<option value='-1'>Template</option>";

            for (let template = 0; template < templates.length; template++) {
                if (template == templateID) templatesList += "<option value='" + template + "' selected>" + templates[template][0] + "</option>";
                else templatesList += "<option value='" + template + "'>" + templates[template][0] + "</option>";
            }

            $(templateSelector).html(templatesList);
            templatesList = null;
        }

        loadTemplatesList();

        $(inputTemplateName).on('input', function () {
            templateName = $(this).val();
        });

        $(textArea).on('input', function () {
            currentText = $(this).val();
        });

        function loadTemplate(id) {
            templateID = id;
            currentText = templates[id][1];
            templateName = templates[id][0];

            $(textArea).val(templates[id][1]);
            $(inputTemplateName).val(templates[id][0]);
        }

        $(templateSelector).on('click', function () {
            if ($(this).val() == undefined)
                return;

            if ($(this).val() == -1) {
                templateID = null;
                $(textArea).val('');
                $(inputTemplateName).val('');
            }

            else loadTemplate($(this).val());
        });

        $("body div#addT").click(function () {
            if (templateName == '' || currentText == '')
                return;

            templates.push([[templateName], [currentText]]);
            templateID = templates.length - 1;

            GM_setValue("templates", templates);
            loadTemplatesList();
        });

        $("body div#removeT").click(function () {
            if (templateID == null)
                return;

            let deleteConfirmation;
            deleteConfirmation = confirm("Are You sure that You want to delete - " + templates[templateID][0]);

            if (deleteConfirmation == false)
                return;

            templates.splice(templateID, 1);
            templateID = null;
            $(textArea).val('');
            $(inputTemplateName).val('');

            GM_setValue("templates", templates);
            loadTemplatesList();
        });

        $("body div#updateT").click(function () {
            templates[templateID][0] = templateName;
            templates[templateID][1] = currentText;

            GM_setValue("templates", templates);
            loadTemplatesList();
        });

    } else {
        setTimeout(init, 0);
    }
})();