diff --git a/.kodarules b/.kodarules index 9eecc2d..c5e194a 100644 --- a/.kodarules +++ b/.kodarules @@ -23,3 +23,10 @@ - При изменениях структуры проекта и только при корректной сборке (без предупреждений и ошибок) всегда актуализируй `./AGENTS.md` - При доработке или расширении функционала этого проекта или синтаксиса всегда актуализируй скилл `./.agents/skills/koda-zensical` +- Аргументы `iptvc` должны быть в lower-kebab-case с префиксом `--` (`--playlists-all-cooldown`) +- Параметры конфига `iptvc`, состоящие из нескольких слов, должны быть в camelCase (check.playlists.allCooldown) +- Переменные окружения `iptvc` должны быть в UPPER_SNAKE_CASE (`CHECK_PLAYLISTS_ALL_COOLDOWN`) +- Заголовки документации и шорткоды `` должны содержать описываемые сущности как есть +- ID заголовоков должны быть в lower-kebab-case, точки и `_` заменяются на `-` (## `check.playlists.all-cooldown` { id=check-playlists-all-cooldown }) +- Обязательно используй шорткоды `` для ссылок на документацию параметров конфига + diff --git a/content/aggregator/faq.md b/content/aggregator/faq.md index 19b0792..b3e570c 100644 --- a/content/aggregator/faq.md +++ b/content/aggregator/faq.md @@ -46,8 +46,8 @@ tags: ["сайт", "каналы", "плейлисты", "epg", "плееры", ## Откуда берутся логотипы каналов и программы передач? -Всё это (не) [указывается](../ref/formats/m3u.md#tvg-logo) внутри плейлиста его авторами. -Но в некоторых [плеерах](../ref/players.md) можно вручную указывать программу передач (см. ниже). +Всё это (не) [указывается](../reference/formats/m3u.md#tvg-logo) внутри плейлиста его авторами. +Но в некоторых [плеерах](../reference/players.md) можно вручную указывать программу передач (см. ниже). ## У канала нет логотипа! @@ -55,7 +55,7 @@ tags: ["сайт", "каналы", "плейлисты", "epg", "плееры", ## У **канала** нет программы передач (EPG), что делать? -Фига в том, что EPG может быть и [указан](../ref/formats/m3u.md#url-tvg) в плейлисте, но у конкретного канала могут быть указаны некорректные [`tvg-id`](../ref/formats/m3u.md#tvg-id) или [`tvg-name`](../ref/formats/m3u.md#tvg-name). +Фига в том, что EPG может быть и [указан](../reference/formats/m3u.md#url-tvg) в плейлисте, но у конкретного канала могут быть указаны некорректные [`tvg-id`](../reference/formats/m3u.md#tvg-id) или [`tvg-name`](../reference/formats/m3u.md#tvg-name). Может, его дёрнули из другого листа и не подогнали под другую EPG. Так что вариантов масса: @@ -74,17 +74,17 @@ tags: ["сайт", "каналы", "плейлисты", "epg", "плееры", * не все плееры вообще поддерживают работу с телепрограммой; * в плейлисте она просто может не быть указана. -Но если [плеер](../ref/players.md) позволяет, можно указать ссылку на сторонную телепрограмму. +Но если [плеер](../reference/players.md) позволяет, можно указать ссылку на сторонную телепрограмму. И это целое дело. -Надо чтобы совпадали [`tvg-id`](../ref/formats/m3u.md#tvg-id) или [`tvg-name`](../ref/formats/m3u.md#tvg-name) каналов с теми, которые указываются в EPG. +Надо чтобы совпадали [`tvg-id`](../reference/formats/m3u.md#tvg-id) или [`tvg-name`](../reference/formats/m3u.md#tvg-name) каналов с теми, которые указываются в EPG. Так что не всякая телепрограмма подойдёт, не ко всякому плейлисту и не ко всем каналам. Надо подбирать и то, и то. ## А где взять программу передач (EPG)? { id="epg" } 1. Из самого плейлиста. - Часто в атрибут [`url-tvg`](../ref/formats/m3u.md#url-tvg) тега `#EXTM3U` указывают одну или две ссылки на EPG, разделяя их `;`. + Часто в атрибут [`url-tvg`](../reference/formats/m3u.md#url-tvg) тега `#EXTM3U` указывают одну или две ссылки на EPG, разделяя их `;`. Их можно использовать отдельно, например, если плеер не может корректно обработать такое значение. 2. Взять одну из этих ссылок: @@ -133,7 +133,7 @@ tags: ["сайт", "каналы", "плейлисты", "epg", "плееры", Но вообще, это зависит от: * автора плейлиста (дохлые каналы почти всегда есть даже в свежайших листах, но если лист не обновлялся год, что ты вряд-ли узнаешь, то рабочих каналов там не ищи); -* твоего [плеера](../ref/players.md) (видеотрансляции могут использовать кодек, который просто не поддерживается плеером); +* твоего [плеера](../reference/players.md) (видеотрансляции могут использовать кодек, который просто не поддерживается плеером); * ширины твоего интернет-канала (не надо пытаться врубать FHD/4K трансляции с мобильного интернета на самом дешёвом тарифе в лесу); * ретроградности Меркурия и магнитных бурь (а вдруг); * настроек твоей сети, твоего интернет-провайдера, VPN (подумай хорошенько, хочешь ли ты смотреть российские каналы из РФ через Уганду или США); @@ -190,7 +190,7 @@ tags: ["сайт", "каналы", "плейлисты", "epg", "плееры", Например, ты на своём компе: * открываешь любой текстовый редактор; -* оформляешь текст в формате [m3u](../ref/formats/m3u.md); +* оформляешь текст в формате [m3u](../reference/formats/m3u.md); * сохраняешь в файл `pls.m3u`. Получился плейлист `pls.m3u`. @@ -251,7 +251,7 @@ tags: ["сайт", "каналы", "плейлисты", "epg", "плееры", Нет, и не планируется. -Ищи [плеер](../ref/players.md) и добавляй плейлист туда по ссылке. +Ищи [плеер](../reference/players.md) и добавляй плейлист туда по ссылке. ## На канале отображается заглушка { id="заглушка" } @@ -308,7 +308,7 @@ tags: ["сайт", "каналы", "плейлисты", "epg", "плееры", **Решение 3:** если IP не российский, то сделать его российским (любыми способами). -**Решение 4:** использовать [плеер](../ref/players.md), который позволяет указать **User-Agent**, и вставить туда какой-нибудь из этих: +**Решение 4:** использовать [плеер](../reference/players.md), который позволяет указать **User-Agent**, и вставить туда какой-нибудь из этих: ``` Mozilla/5.0 WINK/1.28.2 (AndroidTV/9) HlsWinkPlayer diff --git a/content/common/index.md b/content/common/index.md index fee5965..023be2d 100644 --- a/content/common/index.md +++ b/content/common/index.md @@ -12,5 +12,5 @@ hide: [toc] - [:fontawesome-solid-list-check: Список плейлистов](../iptvc/site/list.md) - [:material-table-eye: Страница плейлиста](../iptvc/site/details.md) - [:material-television-play: Как подключить плейлист](../iptvc/site/connect.md) -- [:material-multimedia: IPTV плееры](../ref/players.md) +- [:material-multimedia: IPTV плееры](../reference/players.md) diff --git a/content/index.md b/content/index.md index 34c93eb..b4e8381 100644 --- a/content/index.md +++ b/content/index.md @@ -50,7 +50,7 @@ hero: Полное описание `config.yml`, переменных окружения и CLI-флагов - [Подробнее :octicons-arrow-right-24:](ref/config.md){ .md-button .md-button--primary } + [Подробнее :octicons-arrow-right-24:](reference/config.md){ .md-button .md-button--primary } - :material-book-open-page-variant-outline:{ .lg .middle } **Об этой документации** @@ -58,7 +58,7 @@ hero: Подборка плееров для всех платформ — найдите и настройте плеер для себя - [Подробнее :octicons-arrow-right-24:](ref/players.md){ .md-button .md-button--primary } + [Подробнее :octicons-arrow-right-24:](reference/players.md){ .md-button .md-button--primary } - :material-hand-heart:{ .lg .middle } **Поддержка проекта** diff --git a/content/iptvc/commands/check.md b/content/iptvc/commands/check.md index f97f7b5..093bb16 100644 --- a/content/iptvc/commands/check.md +++ b/content/iptvc/commands/check.md @@ -13,7 +13,7 @@ tags: [iptvc] ## `-i`, `--ini` { id=ini } -Указывает путь к локальному [ini-файлу](../../ref/formats/playlists.md) с описанием плейлистов. +Указывает путь к локальному [ini-файлу](../../reference/formats/playlists.md) с описанием плейлистов. Можно указать только однажды. @@ -27,7 +27,7 @@ tags: [iptvc] ## `-t`, `--tags` { id=tags } -Указывает путь к локальному [json-файлу](../../ref/formats/channels.md) с описанием тегов каналов. +Указывает путь к локальному [json-файлу](../../reference/formats/channels.md) с описанием тегов каналов. Можно указать только однажды. @@ -64,7 +64,7 @@ tags: [iptvc] ## `-c`, `--code` { id=code } -Указывает код плейлиста из файла [playlists.ini](../../ref/formats/playlists.md). +Указывает код плейлиста из файла [playlists.ini](../../reference/formats/playlists.md). Можно указать несколько разных. @@ -104,11 +104,11 @@ tags: [iptvc] ## `--playlists-all-cooldown` { id=playlists-all-cooldown } -Указывает паузу между полными циклами проверки в секундах. Параметр переопределяет `check.playlists.all-cooldown` из конфигурации. +Указывает паузу между полными циклами проверки в секундах. Параметр переопределяет `check.playlists.allCooldown` из конфигурации. -Пауза применяется после завершения полного цикла и перед началом следующего. Внутри цикла этот параметр не используется: для задержки между плейлистами применяется [`check.playlists.one-cooldown`](#playlists-one-cooldown). +Пауза применяется после завершения полного цикла и перед началом следующего. Внутри цикла этот параметр не используется: для задержки между плейлистами применяется [`check.playlists.oneCooldown`](#playlists-one-cooldown). -Значение по умолчанию: значение `check.playlists.all-cooldown` из конфигурации, обычно `1800` (30 минут). +Значение по умолчанию: значение `check.playlists.allCooldown` из конфигурации, обычно `1800` (30 минут). ```shell title="Пример" # проверить 5 раз с паузой 5 секунд между циклами @@ -175,7 +175,7 @@ tags: [iptvc] ### `--log-level` { id=log-level } -Устанавливает уровень логирования. Переопределяет `app.log_level` из `config.yml`. +Устанавливает уровень логирования. Переопределяет `app.logLevel` из `config.yml`. Доступные значения: `debug`, `info`, `warn`, `error`. @@ -209,7 +209,7 @@ tags: [iptvc] Задержка в секундах после проверки всех плейлистов. -Переопределяет `check.playlists.all-cooldown` (по умолчанию `1800`). +Переопределяет `check.playlists.allCooldown` (по умолчанию `1800`). ```shell title="Пример" ./iptvc check -i ~/my.ini --playlists-all-cooldown 10 @@ -219,7 +219,7 @@ tags: [iptvc] Задержка в секундах после проверки каждого плейлиста. -Переопределяет `check.playlists.one-cooldown` (по умолчанию `2`). +Переопределяет `check.playlists.oneCooldown` (по умолчанию `2`). ```shell title="Пример" ./iptvc check -i ~/my.ini --playlists-one-cooldown 2 @@ -229,7 +229,7 @@ tags: [iptvc] Максимум одновременно проверяемых плейлистов. -Переопределяет `check.playlists.max-routines` (по умолчанию `1`). +Переопределяет `check.playlists.maxRoutines` (по умолчанию `1`). ```shell title="Пример" ./iptvc check -i ~/my.ini --playlists-max-routines 10 @@ -239,7 +239,7 @@ tags: [iptvc] Количество плейлистов на одну процедуру проверки. -Переопределяет `check.playlists.per-routine` (по умолчанию `1`). +Переопределяет `check.playlists.perRoutine` (по умолчанию `1`). ```shell title="Пример" ./iptvc check -i ~/my.ini --playlists-per-routine 3 @@ -249,7 +249,7 @@ tags: [iptvc] User-Agent для HTTP-запросов плейлистов. Можно указать несколько — будет выбран случайный при каждом запросе. -Переопределяет `check.playlists.user-agent`. +Переопределяет `check.playlists.userAgent`. ```shell title="Пример" ./iptvc check -i ~/my.ini --playlists-user-agent "Mozilla/5.0" "curl/8.0" @@ -273,7 +273,7 @@ User-Agent для HTTP-запросов плейлистов. Можно ука Объём данных в байтах для загрузки от сервера при проверке канала. -Переопределяет `check.channels.byte-range` (по умолчанию `512`). +Переопределяет `check.channels.byteRange` (по умолчанию `512`). ```shell title="Пример" ./iptvc check -i ~/my.ini --channels-byte-range 1024 @@ -293,7 +293,7 @@ User-Agent для HTTP-запросов плейлистов. Можно ука Максимум одновременно проверяемых каналов. -Переопределяет `check.channels.max-routines` (по умолчанию `50`). +Переопределяет `check.channels.maxRoutines` (по умолчанию `50`). ```shell title="Пример" ./iptvc check -i ~/my.ini --channels-max-routines 100 @@ -303,7 +303,7 @@ User-Agent для HTTP-запросов плейлистов. Можно ука Количество каналов на одну процедуру проверки. -Переопределяет `check.channels.per-routine` (по умолчанию `10`). +Переопределяет `check.channels.perRoutine` (по умолчанию `10`). ```shell title="Пример" ./iptvc check -i ~/my.ini --channels-per-routine 20 @@ -313,7 +313,7 @@ User-Agent для HTTP-запросов плейлистов. Можно ука User-Agent для HTTP-запросов каналов. Можно указать несколько — будет выбран случайный при каждом запросе. -Переопределяет `check.channels.user-agent`. +Переопределяет `check.channels.userAgent`. ```shell title="Пример" ./iptvc check -i ~/my.ini --channels-user-agent "Mozilla/5.0" "VLC/3.0" @@ -325,9 +325,9 @@ User-Agent для HTTP-запросов каналов. Можно указат ### `--cache-enabled` { id=cache-enabled } -Включает кеширование результатов в KeyDB/Redis. +Включает кеширование результатов. -Переопределяет `cache.enabled` (по умолчанию `false`). +Переопределяет `cache.enabled` (по умолчанию `true`). ```shell title="Пример" ./iptvc check -i ~/my.ini --cache-enabled @@ -335,9 +335,9 @@ User-Agent для HTTP-запросов каналов. Можно указат ### `--cache-host` { id=cache-host } -Хост KeyDB/Redis. +Хост кеша. -Переопределяет `cache.host` (по умолчанию `localhost`). +Переопределяет `cache.host` (по умолчанию `cache`). ```shell title="Пример" ./iptvc check -i ~/my.ini --cache-enabled --cache-host 192.168.1.10 @@ -345,7 +345,7 @@ User-Agent для HTTP-запросов каналов. Можно указат ### `--cache-port` { id=cache-port } -Порт KeyDB/Redis. +Порт кеша. Переопределяет `cache.port` (по умолчанию `6379`). @@ -355,7 +355,7 @@ User-Agent для HTTP-запросов каналов. Можно указат ### `--cache-username` { id=cache-username } -Логин для подключения к KeyDB/Redis. +Логин для подключения к кешу. Переопределяет `cache.username`. @@ -365,7 +365,7 @@ User-Agent для HTTP-запросов каналов. Можно указат ### `--cache-password` { id=cache-password } -Пароль для подключения к KeyDB/Redis. +Пароль для подключения к кешу. Переопределяет `cache.password`. @@ -375,7 +375,7 @@ User-Agent для HTTP-запросов каналов. Можно указат ### `--cache-db` { id=cache-db } -Номер базы данных KeyDB/Redis. +Номер базы данных кеша. Переопределяет `cache.db` (по умолчанию `0`). @@ -387,7 +387,7 @@ User-Agent для HTTP-запросов каналов. Можно указат TTL записей кеша в секундах. -Переопределяет `cache.ttl` (по умолчанию `30`). +Переопределяет `cache.ttl` (по умолчанию `3600`). ```shell title="Пример" ./iptvc check -i ~/my.ini --cache-enabled --cache-ttl 3600 diff --git a/content/iptvc/commands/index.md b/content/iptvc/commands/index.md index bf71864..6bb0bd2 100644 --- a/content/iptvc/commands/index.md +++ b/content/iptvc/commands/index.md @@ -18,6 +18,6 @@ hide: [toc] | ----------------- | ------ | ---------------------------- | ----------------------------------------------------- | | `--config` | string | — | Путь к файлу конфигурации (по умолчанию `config.yml`) | | `--debug` | bool | `app.debug` | Включить режим отладки | -| `--log-level` | string | `app.log_level` | Уровень логирования: `debug`, `info`, `warn`, `error` | +| `--log-level` | string | `app.logLevel` | Уровень логирования: `debug`, `info`, `warn`, `error` | | `-v`, `--verbose` | bool | — | Подробное логирование | diff --git a/content/iptvc/commands/serve.md b/content/iptvc/commands/serve.md index 07d57cc..28491fe 100644 --- a/content/iptvc/commands/serve.md +++ b/content/iptvc/commands/serve.md @@ -53,7 +53,7 @@ iptvc serve --check ### `-i`, `--ini` { id="ini" } -Путь к локальному [ini-файлу](../../ref/formats/playlists.md) с описанием плейлистов. +Путь к локальному [ini-файлу](../../reference/formats/playlists.md) с описанием плейлистов. Значение по умолчанию: `./playlists.ini` @@ -63,7 +63,7 @@ iptvc serve --check -i ~/my.ini ### `-t`, `--tags` { id="tags" } -Путь к [json-файлу](../../ref/formats/channels.md) с описанием тегов каналов. +Путь к [json-файлу](../../reference/formats/channels.md) с описанием тегов каналов. Значение по умолчанию: `./channels.json` @@ -73,9 +73,9 @@ iptvc serve --check -t ~/tags.json ### `--playlists-all-cooldown` { id=playlists-all-cooldown } -Пауза между полными циклами фоновой проверки в секундах. Параметр переопределяет `check.playlists.all-cooldown` из конфигурации. +Пауза между полными циклами фоновой проверки в секундах. Параметр переопределяет `check.playlists.allCooldown` из конфигурации. -Значение по умолчанию: значение `check.playlists.all-cooldown` из конфигурации, обычно `1800` (30 минут). +Значение по умолчанию: значение `check.playlists.allCooldown` из конфигурации, обычно `1800` (30 минут). ```bash # пауза 2 минуты между циклами @@ -115,7 +115,9 @@ iptvc serve --config /etc/iptvc/config.yml ### `--debug` { id="debug" } -Включает режим отладки. Переопределяет `app.debug` из `config.yml` и переменную `APP_DEBUG`. +Включает режим отладки. + +Переопределяет из `config.yml` и переменную `APP_DEBUG`. ```bash iptvc serve --debug @@ -123,7 +125,9 @@ iptvc serve --debug ### `--log-level` { id="log-level" } -Устанавливает уровень логирования. Переопределяет `app.log_level` из `config.yml`. +Устанавливает уровень логирования. + +Переопределяет из `config.yml`. Доступные значения: `debug`, `info`, `warn`, `error`. @@ -137,13 +141,13 @@ iptvc serve --log-level debug ## Флаги проверки плейлистов -Эти флаги переопределяют параметры секции `check.playlists` из `config.yml`. Доступны для команд `check` и `serve`. Имеют смысл только при включённой фоновой проверке (`--check` или `check.start-on-serve: true`). +Эти флаги переопределяют параметры секции `check.playlists` из `config.yml`. Доступны для команд `check` и `serve`. Имеют смысл только при включённой фоновой проверке (`--check` или `check.startOnServe: true`). ### `--playlists-timeout` { id="playlists-timeout" } Таймаут HTTP-запроса плейлиста в секундах. -Переопределяет `check.playlists.timeout` (по умолчанию `10`). +Переопределяет (по умолчанию `10`). ```bash iptvc serve --check --playlists-timeout 5 @@ -153,7 +157,7 @@ iptvc serve --check --playlists-timeout 5 Задержка в секундах после проверки всех плейлистов. -Переопределяет `check.playlists.all-cooldown` (по умолчанию `1800`). +Переопределяет (по умолчанию `1800`). ```bash iptvc serve --check --playlists-all-cooldown 10 @@ -163,7 +167,7 @@ iptvc serve --check --playlists-all-cooldown 10 Задержка в секундах после проверки каждого плейлиста. -Переопределяет `check.playlists.one-cooldown` (по умолчанию `2`). +Переопределяет (по умолчанию `2`). ```bash iptvc serve --check --playlists-one-cooldown 2 @@ -173,7 +177,7 @@ iptvc serve --check --playlists-one-cooldown 2 Максимум одновременно проверяемых плейлистов. -Переопределяет `check.playlists.max-routines` (по умолчанию `1`). +Переопределяет (по умолчанию `1`). ```bash iptvc serve --check --playlists-max-routines 10 @@ -183,7 +187,7 @@ iptvc serve --check --playlists-max-routines 10 Количество плейлистов на одну процедуру проверки. -Переопределяет `check.playlists.per-routine` (по умолчанию `1`). +Переопределяет (по умолчанию `1`). ```bash iptvc serve --check --playlists-per-routine 3 @@ -193,7 +197,7 @@ iptvc serve --check --playlists-per-routine 3 User-Agent для HTTP-запросов плейлистов. Можно указать несколько — будет выбран случайный при каждом запросе. -Переопределяет `check.playlists.user-agent`. +Переопределяет . ```bash iptvc serve --check --playlists-user-agent "Mozilla/5.0" "curl/8.0" @@ -207,7 +211,7 @@ iptvc serve --check --playlists-user-agent "Mozilla/5.0" "curl/8.0" Таймаут HTTP-запроса канала в секундах. -Переопределяет `check.channels.timeout` (по умолчанию `10`). +Переопределяет (по умолчанию `10`). ```bash iptvc serve --check --channels-timeout 8 @@ -217,7 +221,7 @@ iptvc serve --check --channels-timeout 8 Объём данных в байтах для загрузки от сервера при проверке канала. -Переопределяет `check.channels.byte-range` (по умолчанию `512`). +Переопределяет (по умолчанию `512`). ```bash iptvc serve --check --channels-byte-range 1024 @@ -227,7 +231,7 @@ iptvc serve --check --channels-byte-range 1024 Задержка в секундах после проверки каждого канала. -Переопределяет `check.channels.cooldown` (по умолчанию `0`). +Переопределяет (по умолчанию `0`). ```bash iptvc serve --check --channels-cooldown 1 @@ -237,7 +241,7 @@ iptvc serve --check --channels-cooldown 1 Максимум одновременно проверяемых каналов. -Переопределяет `check.channels.max-routines` (по умолчанию `50`). +Переопределяет (по умолчанию `50`). ```bash iptvc serve --check --channels-max-routines 100 @@ -247,7 +251,7 @@ iptvc serve --check --channels-max-routines 100 Количество каналов на одну процедуру проверки. -Переопределяет `check.channels.per-routine` (по умолчанию `10`). +Переопределяет (по умолчанию `10`). ```bash iptvc serve --check --channels-per-routine 20 @@ -257,7 +261,7 @@ iptvc serve --check --channels-per-routine 20 User-Agent для HTTP-запросов каналов. Можно указать несколько — будет выбран случайный при каждом запросе. -Переопределяет `check.channels.user-agent`. +Переопределяет . ```bash iptvc serve --check --channels-user-agent "Mozilla/5.0" "VLC/3.0" @@ -269,9 +273,9 @@ iptvc serve --check --channels-user-agent "Mozilla/5.0" "VLC/3.0" ### `--cache-enabled` { id="cache-enabled" } -Включает кеширование результатов в KeyDB/Redis. +Включает кеширование результатов redis-совместимым сервисом. -Переопределяет `cache.enabled` (по умолчанию `false`). +Переопределяет (по умолчанию `true`). ```bash iptvc serve --cache-enabled @@ -279,9 +283,9 @@ iptvc serve --cache-enabled ### `--cache-host` { id="cache-host" } -Хост KeyDB/Redis. +Хост сервиса кеша. -Переопределяет `cache.host` (по умолчанию `localhost`). +Переопределяет (по умолчанию `cache`). ```bash iptvc serve --cache-enabled --cache-host 192.168.1.10 @@ -289,9 +293,9 @@ iptvc serve --cache-enabled --cache-host 192.168.1.10 ### `--cache-port` { id="cache-port" } -Порт KeyDB/Redis. +Порт сервиса кеша. -Переопределяет `cache.port` (по умолчанию `6379`). +Переопределяет (по умолчанию `6379`). ```bash iptvc serve --cache-enabled --cache-port 6380 @@ -299,9 +303,9 @@ iptvc serve --cache-enabled --cache-port 6380 ### `--cache-username` { id="cache-username" } -Логин для подключения к KeyDB/Redis. +Логин для подключения к сервису кеша. -Переопределяет `cache.username`. +Переопределяет . ```bash iptvc serve --cache-enabled --cache-username myuser @@ -309,9 +313,9 @@ iptvc serve --cache-enabled --cache-username myuser ### `--cache-password` { id="cache-password" } -Пароль для подключения к KeyDB/Redis. +Пароль для подключения к сервису кеша. -Переопределяет `cache.password`. +Переопределяет . ```bash iptvc serve --cache-enabled --cache-password secret @@ -319,9 +323,9 @@ iptvc serve --cache-enabled --cache-password secret ### `--cache-db` { id="cache-db" } -Номер базы данных KeyDB/Redis. +Номер базы данных кеша. -Переопределяет `cache.db` (по умолчанию `0`). +Переопределяет (по умолчанию `0`). ```bash iptvc serve --cache-enabled --cache-db 2 @@ -331,7 +335,7 @@ iptvc serve --cache-enabled --cache-db 2 TTL записей кеша в секундах. -Переопределяет `cache.ttl` (по умолчанию `30`). +Переопределяет (по умолчанию `3600`). ```bash iptvc serve --cache-enabled --cache-ttl 3600 diff --git a/content/iptvc/dev/arch.md b/content/iptvc/dev/arch.md index 7093e9d..5aaff88 100644 --- a/content/iptvc/dev/arch.md +++ b/content/iptvc/dev/arch.md @@ -16,7 +16,7 @@ tags: ["iptvc", "разработка", "архитектура"] - `github.com/spf13/cobra` — CLI-фреймворк; - `gopkg.in/yaml.v3` — парсинг `config.yml`; - `github.com/joho/godotenv` — загрузка `.env`; -- `github.com/redis/go-redis/v9` — клиент KeyDB/Redis. +- `github.com/redis/go-redis/v9` — клиент кеша. ## Структура проекта @@ -46,7 +46,7 @@ iptvc/ │ ├── tagfile/ │ │ └── tagfile.go # чтение channels.json, назначение тегов │ ├── cache/ -│ │ └── cache.go # подключение к KeyDB/Redis +│ │ └── cache.go # подключение к кешу │ ├── logger/ │ │ └── logger.go # настройка логирования │ ├── utils/ @@ -76,9 +76,9 @@ iptvc/ ### `app` -Глобальный контейнер: `Args` (CLI-флаги), `Config` (конфигурация), `Cache` (Redis-клиент). +Глобальный контейнер: `Args` (CLI-флаги), `Config` (конфигурация), `Cache` (кеш-клиент). `Init()` загружает конфигурацию и инициализирует логгер. -`InitCache()` подключается к KeyDB/Redis, если кеш включён. +`InitCache()` подключается к кешу, если кеш включён. ### `app.config` @@ -98,10 +98,10 @@ iptvc/ Содержит логику проверки: - **`PrepareListsToCheck(files, urls, codes)`** — формирует список плейлистов из файлов, URL и кодов ini-файла. -- **`CheckPlaylists(lists)`** — параллельная проверка плейлистов (семфор `max-routines`), загрузка, парсинг, вызов `CheckChannels` для каждого. -- **`CheckChannels(pls)`** — параллельная проверка каналов (семфор `max-routines`), HTTP-запрос с `Range` header. +- **`CheckPlaylists(lists)`** — параллельная проверка плейлистов (семфор `maxRoutines`), загрузка, парсинг, вызов `CheckChannels` для каждого. +- **`CheckChannels(pls)`** — параллельная проверка каналов (семфор `maxRoutines`), HTTP-запрос с `Range` header. - **`OnPlaylistChecked`** — глобальный callback, вызывается после проверки каждого плейлиста. Используется веб-сервером для обновления in-memory кеша. -- **`cachePlaylist(pls)`** — сохранение результата в Redis (если включён). +- **`cachePlaylist(pls)`** — сохранение результата в кеш (если включён). Параметры проверки берутся из `app.Config.Check.Playlists` и `app.Config.Check.Channels`. @@ -141,7 +141,7 @@ GET /{path...} — все остальные маршру Catch-all `/{path...}` используется для избежания конфликтов паттернов в Go 1.22 mux. In-memory кеш (`memCache`) обновляется через `OnPlaylistChecked` callback. -Это позволяет отображать результаты проверки в реальном времени без ожидания завершения цикла и без Redis. +Это позволяет отображать результаты проверки в реальном времени без ожидания завершения цикла и без внешнего кеша. ini-файл кешируется на 30 секунд, кеш сбрасывается при каждом обновлении `memCache`. @@ -155,16 +155,16 @@ StartBackgroundChecker: runCheckerOnce() → checker.PrepareListsToCheck() → checker.CheckPlaylists() - → for each playlist (parallel, per-routine): + → for each playlist (parallel, perRoutine): → Download() / ReadFromFs() → Parse() → CheckChannels() - → for each channel (parallel, per-routine): + → for each channel (parallel, perRoutine): → HTTP GET with Range header → check status + content type → OnPlaylistChecked(pls) → memCache update - → one-cooldown sleep - → all-cooldown sleep + → oneCooldown sleep + → allCooldown sleep if repeat > 0 && iteration >= repeat: stop ``` @@ -211,7 +211,7 @@ StartBackgroundChecker: ## Конфигурация -Подробное описание параметров — в разделе [config.yml](../../ref/config.md). +Подробное описание параметров — в разделе [config.yml](../../reference/config.md). Приоритет: Defaults < `config.yml` < Env < CLI-флаги. @@ -235,7 +235,7 @@ SVG-логотипы каналов передаются через `encodeURICo Два уровня кеша: -1. **Redis/KeyDB** (опционально) — постоянный кеш результатов проверки. TTL из `cache.ttl`. -2. **In-memory** (`memCache`) — только при `serve --check`. Обновляется в реальном времени через callback. Не требует Redis. +1. **Внешний кеш** (опционально) — постоянный кеш результатов проверки. TTL из `cache.ttl`. +2. **In-memory** (`memCache`) — только при `serve --check`. Обновляется в реальном времени через callback. Не требует внешнего кеша. -In-memory кеш приоритетнее Redis при отображении в веб-интерфейсе. +In-memory кеш приоритетнее внешнего кеша при отображении в веб-интерфейсе. diff --git a/content/iptvc/dev/local-dev.md b/content/iptvc/dev/local-dev.md index e3b987d..cc05851 100644 --- a/content/iptvc/dev/local-dev.md +++ b/content/iptvc/dev/local-dev.md @@ -53,13 +53,13 @@ make release Для работы `iptvc` нужны два файла рядом с бинарником: -- `playlists.ini` — список плейлистов. Формат описан в [справочнике форматов](../../ref/formats/playlists.md). -- `channels.json` — правила тегов каналов. Формат описан в [справочнике форматов](../../ref/formats/channels.md). -- `config.yml` — конфигурация программы. Описание — в [разделе config.yml](../../ref/config.md). +- `playlists.ini` — список плейлистов. Формат описан в [справочнике форматов](../../reference/formats/playlists.md). +- `channels.json` — правила тегов каналов. Формат описан в [справочнике форматов](../../reference/formats/channels.md). +- `config.yml` — конфигурация программы. Описание — в [разделе config.yml](../../reference/config.md). ## Полное Docker-окружение -Полная инфраструктура проекта (nginx, KeyDB, checker, docs) развёртывается через Docker. +Полная инфраструктура проекта (nginx, кеш, checker, docs) развёртывается через Docker. Подробнее — в разделе [Развёртывание](../site/deploy.md). diff --git a/content/iptvc/overview.md b/content/iptvc/overview.md index 6d0c9c2..ca98f03 100644 --- a/content/iptvc/overview.md +++ b/content/iptvc/overview.md @@ -49,7 +49,7 @@ hide: [toc] [start]: quickstart.md "Перейти к разделу" [site]: site/first-steps.md "Перейти к разделу" [cli]: commands/index.md "Перейти к разделу" -[cfg]: ../ref/config.md "Перейти к разделу" +[cfg]: ../reference/config.md "Перейти к разделу" @@ -104,7 +104,7 @@ cache: --- -### `app.debug` { id=app-debug } +### `app.debug` { id="app-debug" } @@ -115,7 +115,7 @@ cache: --- -### `app.log_level` { id=app-log-level } +### `app.logLevel` { id="app-log-level" } @@ -126,7 +126,7 @@ cache: --- -### `app.playlists` { id=app-playlists } +### `app.playlists` { id="app-playlists" } @@ -138,7 +138,7 @@ cache: --- -### `app.tags` { id=app-tags } +### `app.tags` { id="app-tags" } @@ -150,9 +150,9 @@ cache: --- -## Секция `server` { id=server } +## Секция `server` { id="server" } -### `server.host` { id=server-host } +### `server.host` { id="server-host" } @@ -165,7 +165,7 @@ cache: --- -### `server.port` { id=server-port } +### `server.port` { id="server-port" } @@ -177,11 +177,11 @@ cache: --- -## Секция `site` { id=site } +## Секция `site` { id="site" } Настройки внешнего вида и ссылок сайта: заголовок, навигация, пагинация, иконка. -### `site.base-url` { id=site-base-url } +### `site.baseUrl` { id="site-base-url" } @@ -191,7 +191,7 @@ cache: --- -### `site.repo-url` { id=site-repo-url } +### `site.repo-url` { id="site-repo-url" } @@ -200,7 +200,7 @@ cache: --- -### `site.page-size` { id=site-page-size } +### `site.pageSize` { id="site-page-size" } @@ -210,7 +210,7 @@ cache: --- -### `site.favicon` { id=site-favicon } +### `site.favicon` { id="site-favicon" } @@ -219,7 +219,7 @@ cache: --- -### `site.meta` { id=site-meta } +### `site.meta` { id="site-meta" } Мета-теги `` и `` для HTML-шаблонов. @@ -230,7 +230,7 @@ cache: --- -### `site.title` { id=site-title } +### `site.title` { id="site-title" } @@ -239,19 +239,19 @@ cache: --- -### `site.header.menu` { id=site-header-menu } +### `site.header.menu` { id="site-header-menu" } Массив элементов [`Link`](#link) в шапке сайта. --- -### `site.footer.links` { id=site-footer-links } +### `site.footer.links` { id="site-footer-links" } Массив элементов [`Link`](#link) в подвале сайта. --- -### `site.tabs.raw.visible` { id=site-tabs-raw-visible } +### `site.tabs.raw.visible` { id="site-tabs-raw-visible" } @@ -259,15 +259,15 @@ cache: --- -### `site.tabs.legal.visible` { id=site-tabs-legal-visible } +### `site.tabs.legal.visible` { id="site-tabs-legal-visible" } - + Отображать вкладку «Юридическая информация». --- -### `site.tabs.legal.text` { id=site-tabs-legal-text } +### `site.tabs.legal.text` { id="site-tabs-legal-text" } HTML-контент вкладки «Юридическая информация». @@ -275,7 +275,7 @@ HTML-контент вкладки «Юридическая информация --- -### Тип `Link` { id=link } +### Тип `Link` { id="link" } Элемент навигации или подвала. Если задано `children`, рендерится как выпадающее меню. @@ -329,13 +329,13 @@ site: --- -## Секция `check` { id=check } +## Секция `check` { id="check" } Параметры проверки плейлистов и каналов. Поддерживаются скаляры и массивы. --- -### `check.start-on-serve` { id=check-start-on-serve } +### `check.startOnServe` { id="check-start-on-serve" } @@ -346,13 +346,13 @@ site: --- -### `check.playlists` { id=check-playlists } +### `check.playlists` { id="check-playlists" } Параметры проверки плейлистов (загрузка m3u-файлов по URL или из ФС). --- -#### `check.playlists.user-agent` { id=check-playlists-user-agent } +#### `check.playlists.userAgent` { id="check-playlists-user-agent" } @@ -377,7 +377,7 @@ User-Agent для HTTP-запросов плейлистов. --- -#### `check.playlists.timeout` { id=check-playlists-timeout } +#### `check.playlists.timeout` { id="check-playlists-timeout" } @@ -389,7 +389,7 @@ User-Agent для HTTP-запросов плейлистов. --- -#### `check.playlists.all-cooldown` { id=check-playlists-all-cooldown } +#### `check.playlists.allCooldown` { id="check-playlists-all-cooldown" } @@ -406,7 +406,7 @@ User-Agent для HTTP-запросов плейлистов. --- -#### `check.playlists.one-cooldown` { id=check-playlists-one-cooldown } +#### `check.playlists.oneCooldown` { id="check-playlists-one-cooldown" } @@ -423,7 +423,7 @@ User-Agent для HTTP-запросов плейлистов. --- -#### `check.playlists.max-routines` { id=check-playlists-max-routines } +#### `check.playlists.maxRoutines` { id="check-playlists-max-routines" } @@ -435,7 +435,7 @@ User-Agent для HTTP-запросов плейлистов. --- -#### `check.playlists.per-routine` { id=check-playlists-per-routine } +#### `check.playlists.perRoutine` { id="check-playlists-per-routine" } @@ -447,13 +447,13 @@ User-Agent для HTTP-запросов плейлистов. --- -### `check.channels` { id=check-channels } +### `check.channels` { id="check-channels" } Параметры проверки каналов внутри плейлиста. --- -#### `check.channels.user-agent` { id=check-channels-user-agent } +#### `check.channels.userAgent` { id="check-channels-user-agent" } @@ -478,7 +478,7 @@ User-Agent для HTTP-запроса каждого канала каждого --- -#### `check.channels.timeout` { id=check-channels-timeout } +#### `check.channels.timeout` { id="check-channels-timeout" } @@ -490,7 +490,7 @@ User-Agent для HTTP-запроса каждого канала каждого --- -#### `check.channels.byte-range` { id=check-channels-byte-range } +#### `check.channels.byteRange` { id="check-channels-byte-range" } @@ -506,7 +506,7 @@ User-Agent для HTTP-запроса каждого канала каждого --- -#### `check.channels.cooldown` { id=check-channels-cooldown } +#### `check.channels.cooldown` { id="check-channels-cooldown" } @@ -523,7 +523,7 @@ User-Agent для HTTP-запроса каждого канала каждого --- -#### `check.channels.max-routines` { id=check-channels-max-routines } +#### `check.channels.maxRoutines` { id="check-channels-max-routines" } @@ -535,7 +535,7 @@ User-Agent для HTTP-запроса каждого канала каждого --- -#### `check.channels.per-routine` { id=check-channels-per-routine } +#### `check.channels.perRoutine` { id="check-channels-per-routine" } @@ -547,15 +547,15 @@ User-Agent для HTTP-запроса каждого канала каждого --- -## Секция `cache` { id=cache } +## Секция `cache` { id="cache" } -Параметры подключения к KeyDB/Redis для хранения результатов проверок. +Параметры подключения к кешу для хранения результатов проверок. --- -### `cache.enabled` { id=cache-enabled } +### `cache.enabled` { id="cache-enabled" } - + @@ -565,31 +565,31 @@ User-Agent для HTTP-запроса каждого канала каждого --- -### `cache.host` { id=cache-host } +### `cache.host` { id="cache-host" } - + -Хост KeyDB/Redis. +Хост кеша. !!! info "Аргумент работает только для команд `check` и `serve --check`." --- -### `cache.port` { id=cache-port } +### `cache.port` { id="cache-port" } -Порт KeyDB/Redis. +Порт кеша. !!! info "Аргумент работает только для команд `check` и `serve --check`." --- -### `cache.username` { id=cache-username } +### `cache.username` { id="cache-username" } @@ -601,7 +601,7 @@ User-Agent для HTTP-запроса каждого канала каждого --- -### `cache.password` { id=cache-password } +### `cache.password` { id="cache-password" } @@ -613,21 +613,21 @@ User-Agent для HTTP-запроса каждого канала каждого --- -### `cache.db` { id=cache-db } +### `cache.db` { id="cache-db" } -Номер логической базы данных в KeyDB/Redis. +Номер логической базы данных в кеше. !!! info "Аргумент работает только для команд `check` и `serve --check`." --- -### `cache.ttl` { id=cache-ttl } +### `cache.ttl` { id="cache-ttl" } - + diff --git a/content/ref/formats/channels.md b/content/reference/formats/channels.md similarity index 100% rename from content/ref/formats/channels.md rename to content/reference/formats/channels.md diff --git a/content/ref/formats/m3u.md b/content/reference/formats/m3u.md similarity index 100% rename from content/ref/formats/m3u.md rename to content/reference/formats/m3u.md diff --git a/content/ref/formats/overview.md b/content/reference/formats/overview.md similarity index 100% rename from content/ref/formats/overview.md rename to content/reference/formats/overview.md diff --git a/content/ref/formats/playlists.md b/content/reference/formats/playlists.md similarity index 100% rename from content/ref/formats/playlists.md rename to content/reference/formats/playlists.md diff --git a/content/ref/players.md b/content/reference/players.md similarity index 100% rename from content/ref/players.md rename to content/reference/players.md diff --git a/inline_badges.py b/inline_badges.py index 9af0945..e0d74ea 100644 --- a/inline_badges.py +++ b/inline_badges.py @@ -15,7 +15,7 @@ SHORTCODE_RE = re.compile(r"