Nyako LIB

Common library for Tampermonkey/ViolentMonkey scripts

Bu script direkt olarak kurulamaz. Başka scriptler için bir kütüphanedir ve meta yönergeleri içerir // @require https://update.greasyfork.org/scripts/586977/1875787/Nyako%20LIB.js

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği yüklemek için Tampermonkey gibi bir uzantı yüklemeniz gerekir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği indirebilmeniz için ayrıca Tampermonkey gibi bir eklenti kurmanız gerekmektedir.

Bu betiği yüklemek için bir betik yöneticisi eklentisi yüklemeniz gerekecektir.

(Zaten bir betik yöneticim var, hadi yükleyelim!)

Advertisement:

Bu stili yüklemek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için Stylus gibi bir uzantı kurmanız gerekir.

Bu stili yükleyebilmek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı kurmanız gerekir.

Bu stili yükleyebilmek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

(Zateb bir user-style yöneticim var, yükleyeyim!)

Advertisement:

Yazar
Hell13Cat
Versiyon
0.5.0
Oluşturulma
14.07.2026
Güncellenme
14.07.2026
Boyut
12,3 KB
Lisans
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"]);