Nyako LIB

Common library for Tampermonkey/ViolentMonkey scripts

이 스크립트는 직접 설치하는 용도가 아닙니다. 다른 스크립트에서 메타 지시문 // @require https://update.greasyfork.org/scripts/586977/1875787/Nyako%20LIB.js을(를) 사용하여 포함하는 라이브러리입니다.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

Advertisement:

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

Advertisement:

작성자
Hell13Cat
버전
0.5.0
생성일
2026-07-14
갱신일
2026-07-14
크기
12.3KB
라이선스
Apache-2.0

Nyako LIB (v0.5.0) — Документация

Nyako LIB — это легковесная библиотека для юзерскриптов Tampermonkey / Violentmonkey, предоставляющая готовые инструменты для детекции платформ, безопасного выполнения кода, вывода уведомлений и создания адаптивного интерфейса настроек юзерскрипта.

Обратите внимание! Документация написана через ИИ!


1. Подключение библиотеки

Для подключения библиотеки добавьте директиву @require в метаданные вашего скрипта:

// ==UserScript==
// @name         My Awesome Script
// @version      1.0.0
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_registerMenuCommand
// @require      [ссылка на скрипт]
// ==/UserScript==

2. Модуль: Вспомогательные утилиты

NyakoLib.getPlatform()

Определяет текущую операционную систему / устройство пользователя на основе userAgent.

  • Возвращаемое значение: String ("pc", "android", "ios" или "unknown").

Пример использования:

var currentPlatform = NyakoLib.getPlatform();
console.log("Текущая платформа: " + currentPlatform);

if (currentPlatform === "android") {
    // Действия для Android
}

NyakoLib.safeRun(fn, name, platforms)

Безопасно запускает переданную функцию внутри блока try/catch. Позволяет ограничивать выполнение функции определенными платформами.

  • Параметры:
    • fn (Function): Функция, которую необходимо выполнить.
    • name (String): Имя функции (выводится в консоль при ошибке или пропуске).
    • platforms (Array, необязательный): Список платформ, на которых разрешен запуск (например, ["pc", "android"]). Если массив пустой или не передан, функция запустится на любой платформе.

Примеры использования:

function removeSidebar() {
    document.getElementById("sidebar").remove();
}

// Запустить только на ПК:
NyakoLib.safeRun(removeSidebar, "removeSidebar", ["pc"]);

// Запустить на ПК и iOS:
NyakoLib.safeRun(removeSidebar, "removeSidebar", ["pc", "ios"]);

// Обычный безопасный запуск на всех платформах:
NyakoLib.safeRun(removeSidebar, "removeSidebar");

3. Модуль: Уведомления (NyakoLib.Notify)

Модуль предоставляет систему всплывающих уведомлений, которые автоматически выстраиваются в вертикальный стек.

Особенности работы стека:

  • Новые уведомления появляются снизу и сдвигают старые вверх.
  • Максимальное количество одновременных уведомлений на экране — 3. При появлении 4-го уведомления, самое старое автоматически удаляется из DOM.

NyakoLib.Notify.show(message_text, duration_time, play_sound)

Создает и отображает всплывающее уведомление на экране.

  • Параметры:

    • message_text (String): Текст сообщения.
    • duration_time (Number, необязательный): Время отображения в миллисекундах до автоматического закрытия. По умолчанию 5000 (5 секунд). Передайте 0, чтобы сообщение не закрывалось автоматически.
    • play_sound (Boolean, необязательный): Воспроизводить ли звуковой сигнал (beep) при показе. По умолчанию true.
  • Возвращаемое значение: HTMLDivElement (DOM-элемент уведомления).

Примеры использования:

// Обычное уведомление на 5 секунд со звуком:
NyakoLib.Notify.show("Файл успешно загружен!");

// Уведомление без звука на 10 секунд:
NyakoLib.Notify.show("Параметры обновлены", 10000, false);

// Бесконечное уведомление (закрвыается только вручную пользователем по нажатию на "×"):
NyakoLib.Notify.show("Важное системное сообщение", 0);

NyakoLib.Notify.beep()

Воспроизводит короткий двойной звуковой сигнал треугольной формы волны с помощью Web Audio API. Не требует внешних аудиофайлов.

Пример использования:

// Воспроизвести системный звук отдельно от уведомления
NyakoLib.Notify.beep();

4. Модуль: Конфигурация и Настройки (NyakoLib.Config)

Модуль берет на себя сохранение/загрузку данных через встроенное хранилище Tampermonkey (GM_setValue / GM_getValue), а также автоматически строит интерфейс настроек в виде всплывающего модального окна.

NyakoLib.Config.prefix

Строковое значение, которое автоматически подставляется перед каждым ключом сохранения, чтобы избежать коллизий с другими скриптами. По умолчанию равно "nyako_".

Пример изменения префикса:

NyakoLib.Config.prefix = "my_script_pref_";

NyakoLib.Config.get(name, default_value)

Получает сохраненное значение настройки из хранилища.

  • Параметры:
    • name (String): Ключ настройки (без префикса).
    • default_value (any): Значение по умолчанию, если настройка еще не была сохранена.

Пример использования:

var isEnabled = NyakoLib.Config.get("auto_like", false);

NyakoLib.Config.set(name, value)

Принудительно записывает значение настройки в хранилище.

  • Параметры:
    • name (String): Ключ настройки.
    • value (any): Записываемое значение.

Пример использования:

NyakoLib.Config.set("auto_like", true);

NyakoLib.Config.setup(configs_list)

Основной метод инициализации конфигурации. Регистрирует команду в меню Tampermonkey «⚙️ Настройки скрипта» и подготавливает структуру для генерации модального окна.

  • Поддерживаемые типы полей (type):

    • "checkbox" — Логический переключатель да/нет (значение по умолчанию).
    • "text" — Обычное текстовое поле.
    • "number" — Поле ввода числового значения.
    • "select" — Выпадающий список. Требует наличия объекта options.
  • Параметры параметров настройки:

    • title (String): Понятное пользователю название в окне.
    • type (String): Тип инпута ("checkbox", "text", "number", "select").
    • defaultValue (any): Значение по умолчанию.
    • reload (Boolean): Требуется ли перезагрузка страницы после изменения этого параметра. Перезагрузка произойдет только после закрытия модального окна пользователем. По умолчанию true.
    • onText / offText (String, только для checkbox): Текст статуса во всплывающем уведомлении при переключении.
    • options (Object, только для select): Пары {"Название в списке": "значение"}.

Вариант 1: Обычный плоский список настроек (без категорий)

NyakoLib.Config.setup({
    "comments": {
        title: "Включить комментарии",
        type: "checkbox",
        defaultValue: false
    },
    "max_items": {
        title: "Лимит записей",
        type: "number",
        defaultValue: 10
    }
});

Вариант 2: С разделением на Категории

Категории оформляются как вложенные объекты. Названия верхних ключей станут заголовками категорий в интерфейсе.

NyakoLib.Config.setup({
    "Интерфейс": {
        "footer_enable": {
            title: "Показывать подвал сайта",
            type: "checkbox",
            defaultValue: true
        },
        "theme_select": {
            title: "Цветовая схема",
            type: "select",
            defaultValue: "dark",
            options: {
                "Тёмная тема": "dark",
                "Светлая тема": "light"
            }
        }
    },
    "Работа скрипта": {
        "api_key": {
            title: "Ключ авторизации API",
            type: "text",
            defaultValue: "default_token",
            reload: false // не требует перезагрузки страницы
        }
    }
});

5. Модуль: Кнопка вызова настроек (NyakoLib.injectButton)

NyakoLib.injectButton()

Создает на странице HTML-кнопку вызова настроек с фиксированным позиционированием в левом нижнем углу экрана. Позволяет пользователям открывать окно настроек без необходимости лезть в меню расширения Tampermonkey.

При нажатии на эту кнопку срабатывает функция NyakoLib.Config.showWindow().

Пример использования:

// Отрисовать кнопку на странице (например, только для ПК)
NyakoLib.safeRun(NyakoLib.injectButton, "injectButton", ["pc"]);

6. Полный практический пример юзерскрипта

Ниже представлен пример того, как лаконично выглядит готовый юзерскрипт при использовании Nyako LIB:

// ==UserScript==
// @name         AnimeJoy Helper
// @namespace    nyako_helper
// @match        https://animejoy.ru/*
// @version      1.0.0
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_registerMenuCommand
// @require      https://update.greasyfork.org/scripts/586977/1875676/Nyako%20LIB.js
// ==/UserScript==

// 1. Инициализируем настройки (Категории, типы данных, дефолтные значения)
function initSettings() {
    NyakoLib.Config.prefix = "aj_helper_"; // индивидуальный префикс для хранения ключей

    NyakoLib.Config.setup({
        "Внешний вид": {
            "hide_footer": {
                title: "Скрывать подвал сайта",
                type: "checkbox",
                defaultValue: true
            },
            "bg_color": {
                title: "Цвет фона",
                type: "select",
                defaultValue: "#121212",
                options: {
                    "Тёмно-серый": "#121212",
                    "Глубокий чёрный": "#000000",
                    "Светло-серый": "#f5f5f5"
                }
            }
        },
        "Настройки парсера": {
            "thread_limit": {
                title: "Потоков загрузки",
                type: "number",
                defaultValue: 3,
                reload: false // изменение значения применяется «на лету» без перезагрузки
            }
        }
    });
}

// 2. Логика обработки страницы
function applyDesign() {
    // Получение настроек из библиотеки
    var hideFooter = NyakoLib.Config.get("hide_footer", true);
    var bgColor = NyakoLib.Config.get("bg_color", "#121212");

    if (hideFooter) {
        var footer = document.getElementById("footer");
        if (footer) { footer.remove(); }
    }

    document.body.style.backgroundColor = bgColor;
    NyakoLib.Notify.show("Скрипт успешно применил настройки оформления", 3000);
}

// 3. Безопасный запуск сценариев в зависимости от условий
NyakoLib.safeRun(initSettings, "initSettings");
NyakoLib.safeRun(applyDesign, "applyDesign");

// Создаем физическую кнопку настроек только на ПК версии сайта
NyakoLib.safeRun(NyakoLib.injectButton, "injectButton", ["pc"]);