0
0
mirror of https://github.com/anthonyaxenov/iptv.git synced 2024-11-01 01:26:00 +00:00

Актуализация README

This commit is contained in:
Anthony Axenov 2022-09-01 20:48:59 +08:00
parent c43439b9cc
commit caf6ae1366
Signed by: anthony
GPG Key ID: EA9EC32FF7CCD4EC

View File

@ -35,7 +35,7 @@ I'm too lazy to translate and support the whole project in ru and en, sorry, guy
--- ---
## Содержание ## Документация
- [Как использовать этот список?](#howtouse) - [Как использовать этот список?](#howtouse)
- [Формат playlists.ini](#iniformat) - [Формат playlists.ini](#iniformat)
@ -49,7 +49,6 @@ I'm too lazy to translate and support the whole project in ru and en, sorry, guy
--- ---
<a id="howtouse"></a> <a id="howtouse"></a>
## Как использовать этот список? ## Как использовать этот список?
Чтобы подключить плейлист, нужно в настройках медиаплеера указать ссылку в следующем формате: Чтобы подключить плейлист, нужно в настройках медиаплеера указать ссылку в следующем формате:
@ -65,14 +64,10 @@ iptv.axenov.dev/?<ID> (устаревший формат)
Либо провернуть всё то же самое через браузер. Либо провернуть всё то же самое через браузер.
<a id="iniformat"></a> <a id="iniformat"></a>
## Формат `playlists.ini` ## Формат `playlists.ini`
```ini ```ini
# В квадратных скобках - ID плейлиста в рамках этого # ID плейлиста в рамках этого конфига (обязательно)
# конфига (обязателен). Для удобства ввода с пульта,
# для ID рекомендуется число или короткая строка без
# пробелов и др. спецсимволов.
[1] [1]
# Название плейлиста (необязательно) # Название плейлиста (необязательно)
@ -94,15 +89,15 @@ src = 'https://example.com/super-duper-playlist'
redirect = 1 redirect = 1
``` ```
В описании плейлиста обязательны: В описании любого плейлиста обязательны:
* ID в квадратных скобках
* любой желаемый ID в квадратных скобках; > Для удобства ввода с пульта, рекомендуется задавать числом или короткой строкой без пробелов и др. спецсимволов.
* либо `pls`, либо `redirect` (если указаны оба, то `redirect` приоритетен). * параметр `pls` или `redirect`
> Если указаны оба, то `redirect` приоритетен.
Плейлистов с редиректами может быть сколько угодно, но они не должны быть цикличными. Плейлистов с редиректами может быть сколько угодно, но они не должны быть цикличными.
<a id="api"></a> <a id="api"></a>
## API ## API
Можно получать состояние плейлистов из этого сборника при помощи метода: Можно получать состояние плейлистов из этого сборника при помощи метода:
@ -139,16 +134,16 @@ GET https://iptv.axenov.dev/<ID>/json
где: где:
* `id` -- название плейлиста * `id` -- идентификатор плейлиста
* `name` -- краткое описание из источника или от себя * `name` -- название плейлиста
* `url` -- короткая ссылка, которую можно использовать для добавления плейлиста в плеер * `url` -- короткая ссылка, которую можно использовать для добавления плейлиста в плеер
* `desc` -- подробное описание плейлиста * `desc` -- краткое описание
* `pls` -- прямая ссылка на m3u/m3u8 плейлист * `pls` -- прямая ссылка на m3u/m3u8 плейлист
* `src` -- ссылка на источник, откуда взят плейлист * `src` -- ссылка на источник, откуда взят плейлист
* `status` -- признак доступности плейлиста (`online`, `timeout`, `offline`, `unknown`) * `status` -- статус плейлиста (`"online"|"timeout"|"offline"|"error"`)
* `encoding` -- данные о кодировке файла плейлиста * `encoding` -- данные о кодировке файла плейлиста
* `name` -- название кодировки (на данный момент определяются только `UTF-8` или `Windows-1251`) * `name` -- название кодировки (`"UTF-8"|"Windows-1251"`)
* `alert` -- признак отличия кодировки от `UTF-8`, названия каналов сконвертированы в `UTF-8` * `alert` -- признак отличия кодировки от `UTF-8`, названия каналов сконвертированы в `UTF-8`, могут быть ошибки в отображении
* `channels` -- массив названий каналов * `channels` -- массив названий каналов
* `count` -- количество каналов >= 0 * `count` -- количество каналов >= 0
@ -174,27 +169,72 @@ GET https://iptv.axenov.dev/<ID>/json
где: где:
* `id` -- название плейлиста * `id` -- идентификатор плейлиста
* `name` -- краткое описание из источника или от себя * `name` -- название плейлиста
* `url` -- короткая ссылка, которую можно использовать для добавления плейлиста в плеер * `url` -- короткая ссылка, которую можно использовать для добавления плейлиста в плеер
* `desc` -- подробное описание плейлиста * `desc` -- краткое описание
* `pls` -- прямая ссылка на m3u/m3u8 плейлист * `pls` -- прямая ссылка на m3u/m3u8 плейлист
* `src` -- ссылка на источник, откуда взят плейлист * `src` -- ссылка на источник, откуда взят плейлист
* `status` -- признак доступности плейлиста (`online`, `timeout`, `offline`, `error`) * `status` -- статус плейлиста (`"online"|"timeout"|"offline"|"error"`)
* `error` -- данные о кодировке файла плейлиста * `error` -- данные об ошибке при проверке плейлиста
* `code` -- [код ошибки curl](https://curl.se/libcurl/c/libcurl-errors.html) * `code` -- [код ошибки curl](https://curl.se/libcurl/c/libcurl-errors.html)
* `message` -- текст ошибки curl * `message` -- текст ошибки curl
<a id="deploy"></a> <a id="deploy"></a>
## Развёртывание проекта ## Развёртывание проекта
1. Выполнить `cp .env.example .env`, установить необходимые параметры 1. Выполнить `cp src/.env.example src/.env`, установить необходимые параметры
2. Выполнить `docker compose up -d --build` 2. Выполнить `docker compose up -d --build`
3. Открыть `https://<APP_URL>:8080` 3. Открыть `http://<APP_URL>:8080`
Если на сервере, на котором запускаются контейнеры, стоит apache2, то его можно использовать как реверс прокси:
Для этого следует:
```
$ sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests
$ sudo nano /etc/apache2/sites-available/iptv.conf
```
```apacheconf
# example.com заменить на свой адрес
<VirtualHost example.com:80>
ServerName example.com
# обязательно без SSL:
ProxyPreserveHost On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
# обязательно для SSL:
# RewriteEngine on
# RewriteCond %{SERVER_NAME} =example.com
# RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
# обязательно для SSL:
#<IfModule mod_ssl.c>
#<VirtualHost example.com:443>
# ServerName example.com
# ProxyPreserveHost On
# ProxyPass / http://localhost:8080/
# ProxyPassReverse / http://localhost:8080/
# сертификаты можно получить через certbot
# SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
# SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
# Include /etc/letsencrypt/options-ssl-apache.conf
#</VirtualHost>
#</IfModule>
# Ctrl+O
# Enter
# Ctrl+X
```
```shell
$ sudo a2ensite iptv
$ # для подгрузки включенных модулей выполнить именно restart, а не reload
$ sudo systemctl restart apache2
```
<a id="tools"></a> <a id="tools"></a>
## Дополнительные инструменты (`./tools`) ## Дополнительные инструменты (`./tools`)
### `download-all.sh` ### `download-all.sh`
@ -349,7 +389,6 @@ http://live02-cdn.tv.ti.ru:80/dtv/id376_NBN_SG--Fox_HD/04/plst.m3u8
5. Вручную: добавить плейлист в IPTV-плеер и перепроверить результат. 5. Вручную: добавить плейлист в IPTV-плеер и перепроверить результат.
<a id="stack"></a> <a id="stack"></a>
## Использованный стек ## Использованный стек
* [docker compose](https://docs.docker.com/compose/) * [docker compose](https://docs.docker.com/compose/)
@ -360,7 +399,6 @@ http://live02-cdn.tv.ti.ru:80/dtv/id376_NBN_SG--Fox_HD/04/plst.m3u8
* bash * bash
<a id="license"></a> <a id="license"></a>
## Лицензия ## Лицензия
[The MIT License](LICENSE) [The MIT License](LICENSE)