Найти в Дзене
Spazz0n

Скрипт (LUA) для OBS, который автаматически обновляет браузерный источник (виджет донатов) каждые 10 секунд! настраиваемый

модель скрипта Вот скрипт для OBS, который будет обновлять браузерный источник (виджет донатов) каждые 10 секунд, добавляя случайный параметр к URL для принудительного обновления: копировать весь текст начиная с "local timer = nil" и заканчивая "end" ______________________________________________________
local timer = nil local source_name = "" function update_browser_source() if not source_name or source_name == "" then return end -- Получаем источник по имени local source = obs.obs_get_source_by_name(source_name) if source then -- Получаем текущие настройки local settings = obs.obs_source_get_settings(source) local current_url = obs.obs_data_get_string(settings, "url") -- Добавляем параметр для обхода кеша local random_param = "&_t=" .. tostring(os.time()) .. "_" .. tostring(math.random(1000,9999)) if not string.find(current_url, "?") then random_param = "?_t=" .. tostring(os.time()) .. "_" .. tostring(math.random(1000,9999)) end -- Обновляем URL local new_url = current_url .. rando
Оглавление
модель скрипта
модель скрипта

Вот скрипт для OBS, который будет обновлять браузерный источник (виджет донатов) каждые 10 секунд, добавляя случайный параметр к URL для принудительного обновления: копировать весь текст начиная с "local timer = nil" и заканчивая "end"

______________________________________________________

local timer = nil

local source_name = ""

function update_browser_source()

if not source_name or source_name == "" then return end

-- Получаем источник по имени

local source = obs.obs_get_source_by_name(source_name)

if source then

-- Получаем текущие настройки

local settings = obs.obs_source_get_settings(source)

local current_url = obs.obs_data_get_string(settings, "url")

-- Добавляем параметр для обхода кеша

local random_param = "&_t=" .. tostring(os.time()) .. "_" .. tostring(math.random(1000,9999))

if not string.find(current_url, "?") then

random_param = "?_t=" .. tostring(os.time()) .. "_" .. tostring(math.random(1000,9999))

end

-- Обновляем URL

local new_url = current_url .. random_param

obs.obs_data_set_string(settings, "url", new_url)

obs.obs_source_update(source, settings)

obs.obs_data_release(settings)

obs.obs_source_release(source)

end

end

function script_properties()

local props = obs.obs_properties_create()

obs.obs_properties_add_text(props, "source_name", "Имя браузерного источника", obs.OBS_TEXT_DEFAULT)

return props

end

function script_update(settings)

source_name = obs.obs_data_get_string(settings, "source_name")

end

function script_load(settings)

-- Инициализация генератора случайных чисел

math.randomseed(os.time())

-- Создаем таймер с интервалом 10 секунд (10000 мс)

timer = obs.timer_add(update_browser_source, 10000)

end

function script_unload()

if timer then

obs.timer_remove(timer)

end

end

function script_description()

return "Обновляет браузерный источник с виджетом донатов каждые 10 секунд. Укажите имя источника в настройках."

end

______________________________________________________
Особенности Lua-версии:

  1. Использует встроенный таймер OBS
  2. Добавляет уникальный параметр к URL с временной меткой и случайным числом
  3. Автоматически определяет разделитель параметров (? или &)
  4. Освобождает ресурсы после обновления

Инструкция по установке:

  1. Создайте текстовый файл с расширением .lua
  2. Вставьте этот код
  3. В OBS: Инструменты -> Скрипты
  4. Нажмите "+" и выберите созданный файл
  5. Укажите имя вашего браузерного источника
  6. Нажмите "Закрыть"

Дополнительные настройки:

  • Чтобы изменить частоту обновлений, поменяйте значение 10000 в script_load
  • Для изменения формата параметра редактируйте строку с random_param
  • Если виджет использует другие параметры, добавьте их в конец URL перед _t


    Основные исправления:
  1. Добавлен require("obslua") в начало скрипта
  2. Все вызовы API OBS теперь используют obslua. вместо obs.
  3. Исправлены константы (например obslua.OBS_TEXT_DEFAULT)

Дополнительные рекомендации:

  1. Убедитесь, что файл сохранен в кодировке UTF-8
  2. Проверьте, что имя файла не содержит кириллических символов и пробелов (лучше использовать латиницу)
  3. Убедитесь, что в OBS:
    Установлена последняя версия
    Браузерный источник действительно существует и имеет указанное имя
    Виджет донатов поддерживает обновление через URL-параметры

Если ошибка сохраняется, попробуйте:

  1. Переименовать файл скрипта на английском языке (например donate_refresh.lua)
  2. Перезапустить OBS
  3. Проверить путь к файлу (не должно быть кириллицы в пути к папке).