Common library for Tampermonkey/ViolentMonkey scripts
Este script no debería instalarse directamente. Es una biblioteca que utilizan otros scripts mediante la meta-directiva de inclusión // @require https://update.greasyfork.org/scripts/586977/1875787/Nyako%20LIB.js
Nyako LIB — это легковесная библиотека для юзерскриптов Tampermonkey / Violentmonkey, предоставляющая готовые инструменты для детекции платформ, безопасного выполнения кода, вывода уведомлений и создания адаптивного интерфейса настроек юзерскрипта.
Обратите внимание! Документация написана через ИИ!
Для подключения библиотеки добавьте директиву @require в метаданные вашего скрипта:
// ==UserScript==
// @name My Awesome Script
// @version 1.0.0
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// @require [ссылка на скрипт]
// ==/UserScript==
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");
NyakoLib.Notify)Модуль предоставляет систему всплывающих уведомлений, которые автоматически выстраиваются в вертикальный стек.
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();
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): Пары {"Название в списке": "значение"}.NyakoLib.Config.setup({
"comments": {
title: "Включить комментарии",
type: "checkbox",
defaultValue: false
},
"max_items": {
title: "Лимит записей",
type: "number",
defaultValue: 10
}
});
Категории оформляются как вложенные объекты. Названия верхних ключей станут заголовками категорий в интерфейсе.
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 // не требует перезагрузки страницы
}
}
});
NyakoLib.injectButton)NyakoLib.injectButton()Создает на странице HTML-кнопку вызова настроек с фиксированным позиционированием в левом нижнем углу экрана. Позволяет пользователям открывать окно настроек без необходимости лезть в меню расширения Tampermonkey.
При нажатии на эту кнопку срабатывает функция NyakoLib.Config.showWindow().
Пример использования:
// Отрисовать кнопку на странице (например, только для ПК)
NyakoLib.safeRun(NyakoLib.injectButton, "injectButton", ["pc"]);
Ниже представлен пример того, как лаконично выглядит готовый юзерскрипт при использовании 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"]);