Конфигурация config.yml¶
Программа читает настройки из YAML-файла config.yml в корне проекта.
Путь к файлу можно задать через глобальный флаг --config.
Приоритет настроек¶
От низшего к высшему:
- Значения по умолчанию — встроены в код;
config.yml— YAML-файл;- Переменные окружения — переопределяют
config.yml(если заданы); - CLI-флаги — переопределяют переменные окружения и
config.yml(если заданы явно).
Файл .env загружается автоматически, переменные из него применяются как переменные окружения.
Структура файла¶
app:
timezone: GMT
debug: false
logLevel: info
playlists: ./playlists.ini
tags: ./channels.json
server:
host: ""
port: 8800
site:
baseUrl: http://localhost:8800
title: IPTV Checker
meta:
description: Самообновляемые бесплатные IPTV-плейлисты для домашнего просмотра
keywords: iptv,плейлисты,m3u
repo-url: https://git.axenov.dev/IPTV
pageSize: 0
favicon:
header:
menu:
- title: Документация
url: /docs
icon: document-text-outline
footer:
links:
- title: Исходники
url: https://git.axenov.dev/IPTV
icon: code-slash-outline
tabs:
raw:
visible: true
legal:
visible: false
text: |
<p>Юридический текст с <a href="/terms">условиями использования</a>.</p>
check:
startOnServe: false
playlists:
userAgent:
- Mozilla/5.0 WINK/1.31.1 (AndroidTV/9) HlsWinkPlayer
timeout: 10
allCooldown: 1800
oneCooldown: 2
maxRoutines: 1
perRoutine: 1
channels:
userAgent: Mozilla/5.0 WINK/1.31.1 (AndroidTV/9) HlsWinkPlayer
timeout: 10
byteRange: 512
cooldown: 0
maxRoutines: 50
perRoutine: 10
cache:
enabled: true
host: cache
port: 6379
username:
password:
db: 0
ttl: 3600
Каждый параметр ниже описан отдельной секцией с указанием значения по умолчанию, переменной окружения и соответствующего CLI-флага.
Секция app¶
app.timezone¶
GMT
APP_TIMEZONE
Часовой пояс, используемый в логах и при отображении времени проверок.
app.debug¶
false
APP_DEBUG
--debug
Режим отладки. Включает расширенное логирование и дополнительные проверки в логике приложения.
app.logLevel¶
info
APP_LOG_LEVEL
--log-level
Уровень логирования.
Допустимые значения: debug, info, warn, error.
app.playlists¶
./playlists.ini
APP_PLAYLISTS
--ini
Путь к локальному ini-файлу с описанием плейлистов.
Аргумент работает только для команд check и serve --check.
app.tags¶
./channels.json
APP_TAGS
--tags
Путь к локальному json-файлу с описанием тегов каналов.
Аргумент работает только для команд check и serve --check.
Секция server¶
server.host¶
null
SERVER_HOST
--host
Хост для привязки веб-сервера. Пустая строка — слушать на всех интерфейсах.
Аргумент работает только для команды serve.
server.port¶
8800
SERVER_PORT
-p, --port
Порт веб-сервера.
Аргумент работает только для команды serve.
Секция site¶
Настройки внешнего вида и ссылок сайта: заголовок, навигация, пагинация, иконка.
site.baseUrl¶
http://localhost:8800
SITE_BASE_URL
Базовый URL сайта. Используется при формировании абсолютных ссылок в шаблонах.
site.repo-url¶
https://git.axenov.dev/IPTV
SITE_REPO_URL
Ссылка на исходный репозиторий (отображается в подвале).
site.pageSize¶
0
SITE_PAGE_SIZE
Размер страницы пагинации.
При значении 0 пагинация отключена, на главной странице выводятся все плейлисты.
site.favicon¶
null
SITE_FAVICON
Путь к файлу иконки сайта. Пустая строка — используется встроенная.
site.meta¶
Мета-теги <meta name="description"> и <meta name="keywords"> для HTML-шаблонов.
| Поле | Переменная окружения | Описание |
|---|---|---|
description |
SITE_META_DESCRIPTION |
Описание сайта в meta-тегах |
keywords |
SITE_META_KEYWORDS |
Ключевые слова через запятую |
site.title¶
IPTV Checker
SITE_TITLE
Заголовок сайта, отображается в <title> и в navbar.
site.header.menu¶
Массив элементов Link в шапке сайта.
site.footer.links¶
Массив элементов Link в подвале сайта.
site.tabs.raw.visible¶
true
Отображать вкладку «Исходный плейлист».
site.tabs.legal.visible¶
false
Отображать вкладку «Юридическая информация».
site.tabs.legal.text¶
HTML-контент вкладки «Юридическая информация».
Предназначена для вывода информации о правообладателях и контактах для связи с администратором сайта для решения правовых вопросов.
Тип Link¶
Элемент навигации или подвала.
Если задано children, рендерится как выпадающее меню.
| Поле | Тип | Описание |
|---|---|---|
title |
string | Текст ссылки |
url |
string | URL ссылки (можно опустить, если есть children) |
icon |
string | Имя иконки |
children |
Link[] | Дочерние ссылки (выпадающее меню, один уровень вложенности) |
site:
header:
menu:
- title: Помощь
icon: help-circle-outline
children:
- title: Документация
url: https://m3u.su/docs
icon: document-text-outline
- title: Исходники
url: https://git.axenov.dev/IPTV
icon: code-slash-outline
- title: "@iptv_aggregator"
url: https://t.me/iptv_aggregator
icon: bullhorn-variant-outline
- title: Telegram
icon: bullhorn-variant-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
- title: "@iptv_aggregator"
url: https://t.me/iptv_aggregator
icon: megaphone-outline
Секция check¶
Параметры проверки плейлистов и каналов. Поддерживаются скаляры и массивы.
check.startOnServe¶
false
CHECK_START_ON_SERVE
Запустить фоновую проверку при serve без явного флага --check.
Независимый переключатель от CLI-флага --check — фоновая проверка стартует, если хотя бы один из них активен.
check.playlists¶
Параметры проверки плейлистов (загрузка m3u-файлов по URL или из ФС).
check.playlists.userAgent¶
Mozilla/5.0 WINK/1.31.1 (AndroidTV/9) HlsWinkPlayer
CHECK_PLAYLISTS_USER_AGENT_*
--playlists-user-agent
User-Agent для HTTP-запросов плейлистов.
Необычный параметр
Если значение параметра задано строкой, то в запросах к плейлистам будет использоваться только оно.
Если значение параметра задано массивом строк, то в запросах к плейлистам будет использоваться случайный из указанных.
Необычная переменная
В окружении может задаваться индексированными переменными:
CHECK_PLAYLISTS_USER_AGENT_1="value1"CHECK_PLAYLISTS_USER_AGENT_2="value2"- и т.д.; чтение останавливается на первой отсутствующей.
Аргумент работает только для команд check и serve --check.
check.playlists.timeout¶
10
CHECK_PLAYLISTS_TIMEOUT
--playlists-timeout
Таймаут HTTP-запроса плейлиста в секундах.
Аргумент работает только для команд check и serve --check.
check.playlists.allCooldown¶
1800
CHECK_PLAYLISTS_ALL_COOLDOWN
--playlists-all-cooldown
Задержка после проверки всех плейлистов в секундах.
Необычная переменная
Если значение переменной указано одним числом, то для задержки будет использоваться только оно.
Если значение переменной указано двумя числами через запятую, то будет использоваться случайная задержка в указанном диапазоне.
Аргумент работает только для команд check и serve --check.
check.playlists.oneCooldown¶
2
CHECK_PLAYLISTS_ONE_COOLDOWN
--playlists-one-cooldown
Задержка после проверки каждого плейлиста в секундах.
Необычная переменная
Если значение переменной указано одним числом, то для задержки будет использоваться только оно.
Если значение переменной указано двумя числами через запятую, то будет использоваться случайная задержка в указанном диапазоне.
Аргумент работает только для команд check и serve --check.
check.playlists.maxRoutines¶
1
CHECK_PLAYLISTS_MAX_ROUTINES
--playlists-max-routines
Максимальное количество параллельных потоков (рутин) проверки плейлистов.
Аргумент работает только для команд check и serve --check.
check.playlists.perRoutine¶
1
CHECK_PLAYLISTS_PER_ROUTINE
--playlists-per-routine
Максимальное количество плейлистов в каждом потоке (рутине) проверки.
Аргумент работает только для команд check и serve --check.
check.channels¶
Параметры проверки каналов внутри плейлиста.
check.channels.userAgent¶
Mozilla/5.0 WINK/1.31.1 (AndroidTV/9) HlsWinkPlayer
CHECK_CHANNELS_USER_AGENT_*
--channels-user-agent
User-Agent для HTTP-запроса каждого канала каждого плейлиста.
Необычный параметр
Если значение параметра задано строкой, то в запросах к каналам будет использоваться только оно.
Если значение параметра задано массивом строк, то в запросах к каналам будет использоваться случайный из указанных.
Необычная переменная
В окружении может задаваться индексированными переменными:
CHECK_CHANNELS_USER_AGENT_1="value1"CHECK_CHANNELS_USER_AGENT_2="value2"- и т.д.; чтение останавливается на первой отсутствующей.
Аргумент работает только для команд check и serve --check.
check.channels.timeout¶
10
CHECK_CHANNELS_TIMEOUT
--channels-timeout
Таймаут HTTP-запроса каждого канала каждого плейлиста в секундах.
Аргумент работает только для команд check и serve --check.
check.channels.byteRange¶
512
CHECK_CHANNELS_BYTE_RANGE
--channels-byte-range
Объём данных в байтах, запрашиваемых у сервера при проверке каждого канала каждого плейлиста.
Меньшее значение повышает риск ошибок в определении типа контента (mime-type).
Большее значение может приводить к повышенной нагрузке и увеличению времени проверки.
Аргумент работает только для команд check и serve --check.
check.channels.cooldown¶
0
CHECK_CHANNELS_COOLDOWN
--channels-cooldown
Задержка после проверки каждого канала каждого плейлиста в секундах.
Необычная переменная
Если значение переменной указано одним числом, то для задержки будет использоваться только оно.
Если значение переменной указано двумя числами через запятую, то будет использоваться случайная задержка в указанном диапазоне.
Аргумент работает только для команд check и serve --check.
check.channels.maxRoutines¶
50
CHECK_CHANNELS_MAX_ROUTINES
--channels-max-routines
Максимальное количество параллельных потоков (рутин) проверки каналов каждого плейлиста.
Аргумент работает только для команд check и serve --check.
check.channels.perRoutine¶
10
CHECK_CHANNELS_PER_ROUTINE
--channels-per-routine
Максимальное количество каналов в каждом потоке (рутине) проверки каждого плейлиста.
Аргумент работает только для команд check и serve --check.
Секция cache¶
Параметры подключения к кешу для хранения результатов проверок.
cache.enabled¶
true
CACHE_ENABLED
--cache-enabled
Включить использование внешнего кеша.
Аргумент работает только для команд check и serve --check.
cache.host¶
cache
CACHE_HOST
--cache-host
Хост кеша.
Аргумент работает только для команд check и serve --check.
cache.port¶
6379
CACHE_PORT
--cache-port
Порт кеша.
Аргумент работает только для команд check и serve --check.
cache.username¶
null
CACHE_USERNAME
--cache-username
Логин для подключения. Пустая строка — без аутентификации.
Аргумент работает только для команд check и serve --check.
cache.password¶
null
CACHE_PASSWORD
--cache-password
Пароль для подключения.
Аргумент работает только для команд check и serve --check.
cache.db¶
0
CACHE_DB
--cache-db
Номер логической базы данных в кеше.
Аргумент работает только для команд check и serve --check.
cache.ttl¶
3600
CACHE_TTL
--cache-ttl
TTL записей кеша, секунды.
Аргумент работает только для команд check и serve --check.