Compare commits

...

2 Commits

Author SHA1 Message Date
Anthony Axenov 6637367d43
Уточнения по README и php.ini 2022-09-02 21:24:51 +08:00
Anthony Axenov 950dfdb1b9
Скрипт ./iptv 2022-09-02 19:09:24 +08:00
4 changed files with 92 additions and 21 deletions

View File

@ -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>
## Как использовать этот список?
Чтобы подключить плейлист, нужно в настройках медиаплеера указать ссылку в следующем формате:
@ -64,6 +65,7 @@ iptv.axenov.dev/?<ID> (устаревший формат)
Либо провернуть всё то же самое через браузер.
<a id="iniformat"></a>
## Формат `playlists.ini`
```ini
@ -98,6 +100,7 @@ redirect = 1
Плейлистов с редиректами может быть сколько угодно, но они не должны быть цикличными.
<a id="api"></a>
## API
Можно получать состояние плейлистов из этого сборника при помощи метода:
@ -143,7 +146,8 @@ GET https://iptv.axenov.dev/<ID>/json
* `status` -- статус плейлиста (`"online"|"timeout"|"offline"|"error"`)
* `encoding` -- данные о кодировке файла плейлиста
* `name` -- название кодировки (`"UTF-8"|"Windows-1251"`)
* `alert` -- признак отличия кодировки от `UTF-8`, названия каналов сконвертированы в `UTF-8`, могут быть ошибки в отображении
* `alert` -- признак отличия кодировки от `UTF-8`, названия каналов сконвертированы в `UTF-8`, могут быть ошибки
в отображении
* `channels` -- массив названий каналов
* `count` -- количество каналов >= 0
@ -181,11 +185,18 @@ GET https://iptv.axenov.dev/<ID>/json
* `message` -- текст ошибки curl
<a id="deploy"></a>
## Развёртывание проекта
1. Выполнить `cp src/.env.example src/.env`, установить необходимые параметры
2. Выполнить `docker compose up -d --build`
3. Открыть `http://<APP_URL>:8080`
### Aвтоматически
Выполнить `./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, то его можно использовать как реверс прокси:
@ -235,13 +246,29 @@ $ sudo systemctl restart apache2
```
<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/`.
### `check-pls.sh`
### Проверить каналы плейлиста
Команда: `./tools/check-pls.sh`
Проверяет каждый канал в плейлисте на доступность и выводит результат проверки.
@ -280,7 +307,9 @@ Check stats
- Failed: 4/999
```
### `find-in-pls.sh`
### Поиск каналов в одном плейлисте
Команда: `./tools/find-in-pls.sh`
Находит каналы по заданному регулярному выражению в одном указанном плейлисте.
@ -306,7 +335,9 @@ Channel found: disney
Found: 2
```
### `find-in-all.sh`
### Поиск каналов во всех плейлистах
Команда: `./tools/find-in-all.sh`
Находит каналы по заданному регулярному выражению во всех плейлистах, скачанных через `download-all.sh`.
@ -340,7 +371,9 @@ Nothing found
...
```
### `make-pls.sh`
### Создать плейлист из нужных каналов
Команда: `./tools/make-pls.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>
## Как создать свой собственный плейлист?
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-плеер и перепроверить результат.
<a id="stack"></a>
## Использованный стек
* [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
<a id="license"></a>
## Лицензия
[The MIT License](LICENSE)

View File

@ -1,9 +1,8 @@
[PHP]
file_uploads = Off
; upload_max_filesize=256M
; post_max_size=256M
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.enable = 1
@ -16,12 +15,19 @@ opcache.jit = tracing
[xdebug]
; https://xdebug.org/docs/all_settings
; закомментировать для выключения
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.SESSION = *
xdebug.SERVER = *
xdebug.client_host = 172.17.0.1
;xdebug.start_with_request=yes
xdebug.start_with_request = trigger
xdebug.trigger_value = go

29
iptv 100755
View File

@ -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

View File

@ -1,5 +1,5 @@
APP_TITLE=
APP_URL=
APP_TITLE='Плейлисты IPTV'
APP_URL=http://localhost:8080
TWIG_CACHE=1
TWIG_DEBUG=0
FLIGHT_CASE_SENSITIVE=0