Files
docs/content/common/config/config.md
T
2026-07-16 12:07:22 +08:00

19 KiB

title, icon, tags
title icon tags
config.yml material/file-cog
iptvc
конфигурация

:material-file-cog: Конфигурация config.yml

Программа читает настройки из YAML-файла config.yml в корне проекта. Путь к файлу можно задать через глобальный флаг --config.

Приоритет настроек

От низшего к высшему:

  1. Значения по умолчанию — встроены в код;
  2. config.yml — YAML-файл;
  3. Переменные окружения — переопределяют config.yml (если заданы);
  4. CLI-флаги — переопределяют переменные окружения и config.yml (если заданы явно).

Файл .env загружается автоматически, переменные из него применяются как переменные окружения.

Структура файла

app:
  timezone: GMT
  debug: false
  log_level: info
  playlists: ./playlists.ini
  tags: ./channels.json

server:
  host: localhost
  port: 8080

site:
  base-url: http://localhost:8080
  repo-url: https://git.axenov.dev/IPTV
  page-size: 0
  favicon:
  header:
    title: IPTV Checker
    navigation:
      - title: Документация
        url: /docs
        icon: document-text-outline
  footer-links:
    - title: Исходники
      url: https://git.axenov.dev/IPTV
      icon: code-slash-outline

check:
  start-on-serve: false
  playlists:
    user-agent:
      - Mozilla/5.0 WINK/1.31.1 (AndroidTV/9) HlsWinkPlayer
    timeout: 10000
    all-cooldown: 0
    one-cooldown: 0
    max-routines: 5
    per-routine: 1
  channels:
    user-agent: Mozilla/5.0 WINK/1.31.1 (AndroidTV/9) HlsWinkPlayer
    timeout: 10000
    byte-range: 512
    cooldown: 0
    max-routines: 50
    per-routine: 10

cache:
  enabled: false
  host: localhost
  port: 6379
  username:
  password:
  db: 0
  ttl: 1800

Каждый параметр ниже описан отдельной секцией с указанием значения по умолчанию, переменной окружения и соответствующего CLI-флага.


Секция app

app.timezone

Часовой пояс, используемый в логах и при отображении времени проверок.


app.debug

Режим отладки. Включает расширенное логирование и дополнительные проверки в логике приложения.


app.log_level

Уровень логирования. Допустимые значения: debug, info, warn, error.


app.playlists

Путь к локальному ini-файлу с описанием плейлистов.

!!! info "Аргумент работает только для команд check и serve --check."


app.tags

Путь к локальному json-файлу с описанием тегов каналов.

!!! info "Аргумент работает только для команд check и serve --check."


Секция server

server.host

Хост для привязки веб-сервера. Пустая строка — слушать на всех интерфейсах.

!!! info "Аргумент работает только для команды serve."


server.port

Порт веб-сервера.

!!! info "Аргумент работает только для команды serve."


Секция site

Настройки внешнего вида и ссылок сайта: заголовок, навигация, пагинация, иконка.

site.base-url

Базовый URL сайта. Используется при формировании абсолютных ссылок в шаблонах.


site.repo-url

Ссылка на исходный репозиторий (отображается в подвале).


site.page-size

Размер страницы пагинации. При значении 0 пагинация отключена, на главной странице выводятся все плейлисты.


site.favicon

Путь к файлу иконки сайта. Пустая строка — используется встроенная.


site.header.title

Заголовок сайта, отображается в <title> и в navbar.


site.header.navigation

Массив элементов Link в шапке сайта.


Массив элементов Link в подвале сайта.


Элемент навигации или подвала. Если задано children, рендерится как выпадающее меню.

Поле Тип Описание
title string Текст ссылки
url string URL ссылки (можно опустить, если есть children)
icon string Имя иконки
children Link[] Дочерние ссылки (выпадающее меню, один уровень вложенности)

--8<-- "ionicons-name.md"

site:
  header:
    navigation:
      - title: Документация
        url: /docs
        icon: document-text-outline
      - title: Telegram
        icon: paper-plane-outline
        children:
          - title: Канал
            url: https://t.me/iptv_aggregator
            icon: megaphone-outline
          - title: Чат
            url: https://t.me/iptv_aggregator_chat
            icon: chatbubbles-outline
  footer-links:
    - title: Исходники
      url: https://git.axenov.dev/IPTV
      icon: code-slash-outline
    - title: axenov.dev
      url: https://axenov.dev
      icon: person-outline

Секция check

Параметры проверки плейлистов и каналов. Поддерживаются скаляры и массивы.


check.start-on-serve

Запустить фоновую проверку при serve без явного флага --check.

Независимый переключатель от CLI-флага --check — фоновая проверка стартует, если хотя бы один из них активен.


check.playlists

Параметры проверки плейлистов (загрузка m3u-файлов по URL или из ФС).


check.playlists.user-agent

User-Agent для HTTP-запросов плейлистов.

!!! info "Необычный параметр" Если значение параметра задано строкой, то в запросах к плейлистам будет использоваться только оно.

Если значение параметра задано массивом строк, то в запросах к плейлистам будет использоваться случайный из указанных.

!!! info "Необычная переменная" В окружении может задаваться индексированными переменными:

- `CHECK_PLAYLISTS_USER_AGENT_1="value1"`
- `CHECK_PLAYLISTS_USER_AGENT_2="value2"` 
- и т.д.; чтение останавливается на первой отсутствующей.

!!! info "Аргумент работает только для команд check и serve --check."


check.playlists.timeout

Таймаут HTTP-запроса плейлиста в миллисекундах.

!!! info "Аргумент работает только для команд check и serve --check."


check.playlists.all-cooldown

Задержка после проверки всех плейлистов в миллисекундах.

!!! info "Необычная переменная" Если значение переменной указано одним числом, то для задержки будет использоваться только оно.

Если значение переменной указано двумя числами через запятую, то будет использоваться случайная задержка в указанном диапазоне.

!!! info "Аргумент работает только для команд check и serve --check."


check.playlists.one-cooldown

Задержка после проверки каждого плейлиста в миллисекундах.

!!! info "Необычная переменная" Если значение переменной указано одним числом, то для задержки будет использоваться только оно.

Если значение переменной указано двумя числами через запятую, то будет использоваться случайная задержка в указанном диапазоне.

!!! info "Аргумент работает только для команд check и serve --check."


check.playlists.max-routines

Максимальное количество параллельных потоков (рутин) проверки плейлистов.

!!! info "Аргумент работает только для команд check и serve --check."


check.playlists.per-routine

Максимальное количество плейлистов в каждом потоке (рутине) проверки.

!!! info "Аргумент работает только для команд check и serve --check."


check.channels

Параметры проверки каналов внутри плейлиста.


check.channels.user-agent

User-Agent для HTTP-запроса каждого канала каждого плейлиста.

!!! info "Необычный параметр" Если значение параметра задано строкой, то в запросах к каналам будет использоваться только оно.

Если значение параметра задано массивом строк, то в запросах к каналам будет использоваться случайный из указанных.

!!! info "Необычная переменная" В окружении может задаваться индексированными переменными:

- `CHECK_CHANNELS_USER_AGENT_1="value1"`
- `CHECK_CHANNELS_USER_AGENT_2="value2"` 
- и т.д.; чтение останавливается на первой отсутствующей.

!!! info "Аргумент работает только для команд check и serve --check."


check.channels.timeout

Таймаут HTTP-запроса каждого канала каждого плейлиста в миллисекундах.

!!! info "Аргумент работает только для команд check и serve --check."


check.channels.byte-range

Объём данных в байтах, запрашиваемых у сервера при проверке каждого канала каждого плейлиста.

Меньшее значение повышает риск ошибок в определении типа контента (mime-type).

Большее значение может приводить к повышенной нагрузке и увеличению времени проверки.

!!! info "Аргумент работает только для команд check и serve --check."


check.channels.cooldown

Задержка после проверки каждого канала каждого плейлиста в миллисекундах.

!!! info "Необычная переменная" Если значение переменной указано одним числом, то для задержки будет использоваться только оно.

Если значение переменной указано двумя числами через запятую, то будет использоваться случайная задержка в указанном диапазоне.

!!! info "Аргумент работает только для команд check и serve --check."


check.channels.max-routines

Максимальное количество параллельных потоков (рутин) проверки каналов каждого плейлиста.

!!! info "Аргумент работает только для команд check и serve --check."


check.channels.per-routine

Максимальное количество каналов в каждом потоке (рутине) проверки каждого плейлиста.

!!! info "Аргумент работает только для команд check и serve --check."


Секция cache

Параметры подключения к KeyDB/Redis для хранения результатов проверок.


cache.enabled

Включить использование внешнего кеша.

!!! info "Аргумент работает только для команд check и serve --check."


cache.host

Хост KeyDB/Redis.

!!! info "Аргумент работает только для команд check и serve --check."


cache.port

Порт KeyDB/Redis.

!!! info "Аргумент работает только для команд check и serve --check."


cache.username

Логин для подключения. Пустая строка — без аутентификации.

!!! info "Аргумент работает только для команд check и serve --check."


cache.password

Пароль для подключения.

!!! info "Аргумент работает только для команд check и serve --check."


cache.db

Номер логической базы данных в KeyDB/Redis.

!!! info "Аргумент работает только для команд check и serve --check."


cache.ttl

TTL записей кеша, секунды.

!!! info "Аргумент работает только для команд check и serve --check."