Compare commits

...

2 Commits

8 changed files with 61 additions and 23 deletions

11
Dockerfile Normal file
View File

@@ -0,0 +1,11 @@
FROM squidfunk/mkdocs-material AS m3u-su-docs-builder
COPY . /docs
RUN mkdocs build
FROM nginx:alpine AS m3u-su-docs
LABEL org.opencontainers.image.authors="Anthony Axenov <anthonyaxenov@gmail.com>"
COPY --from=m3u-su-docs-builder /docs/site /usr/share/nginx/html
WORKDIR /usr/share/nginx/html
USER root
EXPOSE 80
CMD [ "nginx", "-g", "daemon off;" ]

View File

@@ -1,3 +1,4 @@
## image: Run mkdocs with live-reloading
live:
@echo "Wait until container starts and open http://localhost:3000 to see live preview"
@docker run \
@@ -9,6 +10,7 @@ live:
-v ${PWD}:/docs \
squidfunk/mkdocs-material:9.6.20
## image: Build local static site
build:
@docker run \
--pull always \
@@ -16,4 +18,24 @@ build:
--interactive \
--tty \
-v ${PWD}:/docs \
squidfunk/mkdocs-material:9.6.20 build --verbose
squidfunk/mkdocs-material:9.6.20 build
## image: Build docker image
image:
@docker build \
--tag m3u-su-docs:latest \
--tag git.axenov.dev/iptv/m3u-su-docs:latest \
.
## push: Push docker image to registry
push:
@docker push git.axenov.dev/iptv/m3u-su-docs:latest
## push: Push docker image to registry
run:
@docker run -p 3001:80 git.axenov.dev/iptv/m3u-su-docs:latest
## help: Show this message and exit
help: Makefile
@echo "Available recipes:"
@sed -n 's/^##//p' $< | column -t -s ':' | sed -e 's/^/ /'

View File

@@ -5,7 +5,7 @@ tags: ["статусы", "плейлисты", "каналы", "iptvc"]
# :material-file-refresh-outline: Как проверяются плейлисты
Плейлисты проверяются автоматически с некоей периодичностью при помощи [iptvc](../iptvc/how-it-works.md).
Плейлисты проверяются автоматически с некоей периодичностью при помощи [iptvc](../iptvc/index.md).
Она может настраиваться мной в разное время, чтобы сбалансировать нагрузку на сервер.
!!! danger "Я не гарантирую корректность и актуальность плейлистов, которые ты увидишь на сайте, как и корректность результатов их проверки."

View File

@@ -29,7 +29,7 @@ tags: ["сайт", "статусы", "каналы"]
(всё по нулям, если плейлист <span class="badge offline">offline</span>)
* **Возможности** — наличие программы передач и перемотки каналов;
* **M3U** — [прямая ссылка](../formats/playlists.md#pls) на плейлист;
* **Проверка плейлиста** — дата и время последней [проверки](../common/checks.md) плейлиста с помощью [iptvc](../iptvc/how-it-works.md);
* **Проверка плейлиста** — дата и время последней [проверки](../common/checks.md) плейлиста с помощью [iptvc](../iptvc/index.md);
* **Ошибка проверки** — текст ошибки, которая возникла при проверке
(только если плейлист <span class="badge offline">offline</span>)
@@ -89,7 +89,7 @@ tags: ["сайт", "статусы", "каналы"]
Под строкой поиска есть [**облако тегов**](../formats/channels.md#доступные-теги).
!!! question inline end "Про теги"
Откуда они там появляются, можешь прочесть [здесь](../common/how-it-works.md) и [здесь](../iptvc/how-it-works.md).
Откуда они там появляются, можешь прочесть [здесь](../common/index.md) и [здесь](../iptvc/index.md).
На любой из них можно нажать, и тогда в списке останутся каналы только с выбранными тегами.
Выбранные теги подсвечиваются серым.

View File

@@ -8,7 +8,7 @@ tags: ["плейлисты", "каналы", "теги", "iptvc", "плееры"
1. В специальном файле [playlists.ini](../formats/playlists.md) описываются плейлисты, которые кем-то опубликованы в интернете.
Каждому плейлисту присваивается свой уникальный **короткий код**.
2. В специальном файле [channels.json](../formats/channels.md) описываются **ключевые слова** (метки, теги), которые характеризуют каналы.
3. В фоновом режиме [работает ПО](../iptvc/how-it-works.md), которое периодически [проверяет все плейлисты](checks.md) из п. 1 и **присваивает теги** каналам из п. 2.
3. В фоновом режиме [работает ПО](../iptvc/index.md), которое периодически [проверяет все плейлисты](checks.md) из п. 1 и **присваивает теги** каналам из п. 2.
4. На главной странице сайта выводится [весь список плейлистов](list.md), которые описаны в п. 1: с тегами, описаниями и короткими кодами.
5. Каждому плейлисту на сайте посвящена [своя страничка](details.md), где отображаются результаты его проверки, проверки его каналов (с присвоенными тегами) и пр.
6. Когда пользователь [обращается к плейлисту](connect.md) по короткому коду (например, `https://m3u.su/xyz`), то происходит **переадресация** на исходный плейлист.

View File

@@ -17,7 +17,7 @@ icon: material/book-cog-outline
**Каждое предложение должно быть на одной строке.**
Это даёт более наглядную разницу (diff) в тексте при работе с git.
Абзацы и списки должны отделяться 1 пустой строкой сверху и снизу.
Абзацы и списки должны отделяться 1 пустой строкой до и после.
Допустимо использовать любые стилистические возможности темы **Material for MkDocs** и самого **mkdocs**, но не следует визуально перегружать текст.
Документацию по ним см. по ссылкам ниже.
@@ -74,24 +74,30 @@ icon: material/book-cog-outline
make live
```
Перегенерирует документацию на лету сразу после изменения файлов.
Перегенерирует документацию на лету сразу после сохранения файлов.
Открывает [localhost:3000](http://localhost:3000) для просмотра изменений в реальном времени.
Документацию в реальном времени можно просматривать по адресу [localhost:3000](http://localhost:3000).
## Генерация статических файлов
## Генерация статического сайта
```
make build
```
Генерирует статические файлы, которую можно версионировать и хранить/деплоить отдельно.
Открывает [localhost:8080/docs](http://localhost:8080/docs) для просмотра сгенерированной документации.
Генерирует статические файлы, которую можно версионировать, хранить,деплоить отдельно или просматривать на ПК через браузер.
Готовый скомпилированный статический сайт с документацией находится в директории `site/`.
Он же хранится в репозитории вместе с исходными файлами, потому что:
* я посчитал это **более удобным для деплоя**: ради редких обновлений нет смысла тратить ресурсы серверов на ci/cd, actions по хукам и перманентную работу `mkdocs` в режиме `build`;
* я посчитал это **более удобным для использования**: можно в любой момент открыть актуальную документацию в браузере через `site/index.html` без необходимости `make` и `docker`.
## Генерация docker-образа
Пересборка должна происходить перед каждым коммитом.
```
make image
```
Собирает docker-образ на основе nginx, генерируя перед этим статический сайт.
Запустить контейнер из этого образа можно командой:
```
make run
```

View File

@@ -4,3 +4,7 @@ hide: [toc]
---
# :octicons-terminal-24: Доступные команды
* [Команда `help`](help.md) — получение справки о программе
* [Команда `check`](check.md) — проверка плейлистов
* [Команда `version`](version.md) — получение версии

View File

@@ -19,20 +19,15 @@ hide: [toc]
---
Коротко о главном, если не терпится
- [:material-cog-sync-outline: Как работает iptvc](how-it-works.md)
- [:octicons-terminal-24: Доступные команды](commands/index.md)
---
Механика работы программы
Как правильно с ней работать
- [:simple-dotenv: Переменные окружения](env.md)
---
Параметры конфигурации программы
- [:octicons-terminal-24: Работа в терминале](cli/index.md)
---
Доступные команды и их аргументы
</div>
## :material-cog-sync-outline: Как работает iptvc