Compare commits
2 Commits
7b913b5099
...
6637367d43
Author | SHA1 | Date |
---|---|---|
Anthony Axenov | 6637367d43 | |
Anthony Axenov | 950dfdb1b9 |
56
README.md
56
README.md
|
@ -49,6 +49,7 @@ 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>
|
||||||
|
|
||||||
## Как использовать этот список?
|
## Как использовать этот список?
|
||||||
|
|
||||||
Чтобы подключить плейлист, нужно в настройках медиаплеера указать ссылку в следующем формате:
|
Чтобы подключить плейлист, нужно в настройках медиаплеера указать ссылку в следующем формате:
|
||||||
|
@ -64,6 +65,7 @@ iptv.axenov.dev/?<ID> (устаревший формат)
|
||||||
Либо провернуть всё то же самое через браузер.
|
Либо провернуть всё то же самое через браузер.
|
||||||
|
|
||||||
<a id="iniformat"></a>
|
<a id="iniformat"></a>
|
||||||
|
|
||||||
## Формат `playlists.ini`
|
## Формат `playlists.ini`
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
|
@ -98,6 +100,7 @@ redirect = 1
|
||||||
Плейлистов с редиректами может быть сколько угодно, но они не должны быть цикличными.
|
Плейлистов с редиректами может быть сколько угодно, но они не должны быть цикличными.
|
||||||
|
|
||||||
<a id="api"></a>
|
<a id="api"></a>
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
|
||||||
Можно получать состояние плейлистов из этого сборника при помощи метода:
|
Можно получать состояние плейлистов из этого сборника при помощи метода:
|
||||||
|
@ -143,7 +146,8 @@ GET https://iptv.axenov.dev/<ID>/json
|
||||||
* `status` -- статус плейлиста (`"online"|"timeout"|"offline"|"error"`)
|
* `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
|
||||||
|
|
||||||
|
@ -181,11 +185,18 @@ GET https://iptv.axenov.dev/<ID>/json
|
||||||
* `message` -- текст ошибки curl
|
* `message` -- текст ошибки curl
|
||||||
|
|
||||||
<a id="deploy"></a>
|
<a id="deploy"></a>
|
||||||
|
|
||||||
## Развёртывание проекта
|
## Развёртывание проекта
|
||||||
|
|
||||||
1. Выполнить `cp src/.env.example src/.env`, установить необходимые параметры
|
### Aвтоматически
|
||||||
2. Выполнить `docker compose up -d --build`
|
|
||||||
3. Открыть `http://<APP_URL>:8080`
|
Выполнить `./iptv init`
|
||||||
|
|
||||||
|
### Вручную
|
||||||
|
|
||||||
|
1. Выполнить `cp ./src/.env.example ./src/.env`, установить необходимые параметры в файле `./src/.env`
|
||||||
|
2. Выполнить `docker compose up -d --build` (или `./iptv up`)
|
||||||
|
3. Открыть `http://<APP_URL>:8080` в браузере (или `./iptv open`)
|
||||||
|
|
||||||
Если на сервере, на котором запускаются контейнеры, стоит apache2, то его можно использовать как реверс прокси:
|
Если на сервере, на котором запускаются контейнеры, стоит apache2, то его можно использовать как реверс прокси:
|
||||||
|
|
||||||
|
@ -235,13 +246,29 @@ $ sudo systemctl restart apache2
|
||||||
```
|
```
|
||||||
|
|
||||||
<a id="tools"></a>
|
<a id="tools"></a>
|
||||||
## Дополнительные инструменты (`./tools`)
|
|
||||||
|
|
||||||
### `download-all.sh`
|
## Дополнительные инструменты
|
||||||
|
|
||||||
|
### Очистка кеша Twig
|
||||||
|
|
||||||
|
Если в файле `./src/.env` параметр `TWIG_CACHE=1`, то макеты страниц компилируются однажды и потом переиспользуются.
|
||||||
|
Изменённые макеты не будут перекомпилироваться пока не будет очищен кеш прежних.
|
||||||
|
|
||||||
|
Для этого следует выполнить:
|
||||||
|
|
||||||
|
```
|
||||||
|
./iptv composer clear-views
|
||||||
|
```
|
||||||
|
|
||||||
|
### Скачать все плейлисты
|
||||||
|
|
||||||
|
Команда: `./tools/download-all.sh`
|
||||||
|
|
||||||
Скачивает все плейлисты из [`playlists.ini`](playlists.ini) в локальную директорию `./downloaded/`.
|
Скачивает все плейлисты из [`playlists.ini`](playlists.ini) в локальную директорию `./downloaded/`.
|
||||||
|
|
||||||
### `check-pls.sh`
|
### Проверить каналы плейлиста
|
||||||
|
|
||||||
|
Команда: `./tools/check-pls.sh`
|
||||||
|
|
||||||
Проверяет каждый канал в плейлисте на доступность и выводит результат проверки.
|
Проверяет каждый канал в плейлисте на доступность и выводит результат проверки.
|
||||||
|
|
||||||
|
@ -280,7 +307,9 @@ Check stats
|
||||||
- Failed: 4/999
|
- Failed: 4/999
|
||||||
```
|
```
|
||||||
|
|
||||||
### `find-in-pls.sh`
|
### Поиск каналов в одном плейлисте
|
||||||
|
|
||||||
|
Команда: `./tools/find-in-pls.sh`
|
||||||
|
|
||||||
Находит каналы по заданному регулярному выражению в одном указанном плейлисте.
|
Находит каналы по заданному регулярному выражению в одном указанном плейлисте.
|
||||||
|
|
||||||
|
@ -306,7 +335,9 @@ Channel found: disney
|
||||||
Found: 2
|
Found: 2
|
||||||
```
|
```
|
||||||
|
|
||||||
### `find-in-all.sh`
|
### Поиск каналов во всех плейлистах
|
||||||
|
|
||||||
|
Команда: `./tools/find-in-all.sh`
|
||||||
|
|
||||||
Находит каналы по заданному регулярному выражению во всех плейлистах, скачанных через `download-all.sh`.
|
Находит каналы по заданному регулярному выражению во всех плейлистах, скачанных через `download-all.sh`.
|
||||||
|
|
||||||
|
@ -340,7 +371,9 @@ Nothing found
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
### `make-pls.sh`
|
### Создать плейлист из нужных каналов
|
||||||
|
|
||||||
|
Команда: `./tools/make-pls.sh`
|
||||||
|
|
||||||
Находит каналы по заданному регулярному выражению во всех плейлистах, скачанных через `download-all.sh`.
|
Находит каналы по заданному регулярному выражению во всех плейлистах, скачанных через `download-all.sh`.
|
||||||
|
|
||||||
|
@ -367,6 +400,7 @@ http://live02-cdn.tv.ti.ru:80/dtv/id376_NBN_SG--Fox_HD/04/plst.m3u8
|
||||||
```
|
```
|
||||||
|
|
||||||
<a id="howtomake"></a>
|
<a id="howtomake"></a>
|
||||||
|
|
||||||
## Как создать свой собственный плейлист?
|
## Как создать свой собственный плейлист?
|
||||||
|
|
||||||
1. Скачать все плейлисты, указанные в [`playlists.ini`](playlists.ini):
|
1. Скачать все плейлисты, указанные в [`playlists.ini`](playlists.ini):
|
||||||
|
@ -389,6 +423,7 @@ 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/)
|
||||||
|
@ -399,6 +434,7 @@ 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)
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
[PHP]
|
[PHP]
|
||||||
file_uploads = Off
|
|
||||||
; upload_max_filesize=256M
|
|
||||||
; post_max_size=256M
|
|
||||||
error_reporting = E_ALL
|
error_reporting = E_ALL
|
||||||
;& ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE & ~E_WARNING
|
file_uploads = Off
|
||||||
|
; upload_max_filesize=10M
|
||||||
|
; post_max_size=10M
|
||||||
|
|
||||||
[opcache]
|
[opcache]
|
||||||
opcache.enable = 1
|
opcache.enable = 1
|
||||||
|
@ -16,12 +15,19 @@ opcache.jit = tracing
|
||||||
|
|
||||||
[xdebug]
|
[xdebug]
|
||||||
; https://xdebug.org/docs/all_settings
|
; https://xdebug.org/docs/all_settings
|
||||||
|
|
||||||
|
; закомментировать для выключения
|
||||||
zend_extension = xdebug.so
|
zend_extension = xdebug.so
|
||||||
xdebug.mode = develop,debug
|
|
||||||
|
; для отладки установить значение 'develop,debug'
|
||||||
|
xdebug.mode = develop
|
||||||
|
|
||||||
|
; для отладки при каждом запросе поменять 'trigger' на 'yes'
|
||||||
|
; иначе -- отправлять заголовок 'Cookie: XDEBUG_TRIGGER=go'
|
||||||
|
xdebug.start_with_request = trigger
|
||||||
|
xdebug.trigger_value = go
|
||||||
|
|
||||||
|
xdebug.client_host = 172.17.0.1
|
||||||
xdebug.REQUEST = *
|
xdebug.REQUEST = *
|
||||||
xdebug.SESSION = *
|
xdebug.SESSION = *
|
||||||
xdebug.SERVER = *
|
xdebug.SERVER = *
|
||||||
xdebug.client_host = 172.17.0.1
|
|
||||||
;xdebug.start_with_request=yes
|
|
||||||
xdebug.start_with_request = trigger
|
|
||||||
xdebug.trigger_value = go
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# https://gist.github.com/anthonyaxenov/89c99e09ddb195985707e2b24a57257d
|
||||||
|
|
||||||
|
CONTAINER="iptv-php" # the name of the container in which to 'exec' something
|
||||||
|
CONFIG="$(dirname $([ -L $0 ] && readlink -f $0 || echo $0))/docker-compose.yml" # path to compose yml file
|
||||||
|
CMD="docker-compose -f $CONFIG" # docker-compose command
|
||||||
|
APP_URL='http://localhost:8080/'
|
||||||
|
|
||||||
|
open_browser() {
|
||||||
|
if which xdg-open > /dev/null; then
|
||||||
|
xdg-open "$1" </dev/null >/dev/null 2>&1 & disown
|
||||||
|
elif which gnome-open > /dev/null; then
|
||||||
|
gnome-open "$1" </dev/null >/dev/null 2>&1 & disown
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
'' | 'help' ) echo -e "Provide one of operations: \t init, start, stop, up, down, restart, rebuild, open";
|
||||||
|
echo "Otherwise all args will passed to 'docker exec -ti $CONTAINER ...'" ;;
|
||||||
|
'init' ) cp src/.env.example src/.env && nano src/.env && ./iptv up && ./iptv composer i && ./iptv open && echo -e "\nYou're welcome!\n\t$APP_URL";;
|
||||||
|
'up' ) $CMD up -d --build && ./iptv open ;; # build and start containers
|
||||||
|
'down' ) $CMD down --remove-orphans ;; # stop and remove containers
|
||||||
|
'start' ) $CMD start && ./iptv open ;; # start containers
|
||||||
|
'stop' ) $CMD stop ;; # stop containers
|
||||||
|
'restart' ) $CMD stop && $CMD start ;; # restart containers
|
||||||
|
'rebuild' ) $CMD down --remove-orphans && $CMD up -d --build ;; # rebuild containers
|
||||||
|
'open' ) open_browser $APP_URL ;;
|
||||||
|
* ) docker exec -ti $CONTAINER $@ # exec anything else in container
|
||||||
|
esac
|
|
@ -1,5 +1,5 @@
|
||||||
APP_TITLE=
|
APP_TITLE='Плейлисты IPTV'
|
||||||
APP_URL=
|
APP_URL=http://localhost:8080
|
||||||
TWIG_CACHE=1
|
TWIG_CACHE=1
|
||||||
TWIG_DEBUG=0
|
TWIG_DEBUG=0
|
||||||
FLIGHT_CASE_SENSITIVE=0
|
FLIGHT_CASE_SENSITIVE=0
|
||||||
|
|
Loading…
Reference in New Issue