Разделение по отдельным репозиториям
This commit is contained in:
163
README.md
Normal file
163
README.md
Normal file
@@ -0,0 +1,163 @@
|
||||
# Основной бэкенд iptv.axenov.dev
|
||||
|
||||
> **Web-версия**: https://iptv.axenov.dev
|
||||
> **FAQ**: https://iptv.axenov.dev/faq
|
||||
> **Исходный код**: https://git.axenov.dev/IPTV
|
||||
|
||||
Проект, содержащий в себе инструменты для работы с IPTV-плейлистами:
|
||||
|
||||
* список автообновляемых плейлистов, которые найдены в открытых источниках;
|
||||
* скрипты для поиска каналов в этом списке, создания своего плейлиста;
|
||||
* веб-сервис, предоставляющий короткие ссылки на эти плейлисты и отображающий список каналов.
|
||||
|
||||
Плейлисты подбираются преимущественно для РФ и любых стран бывшего СНГ, но этими странами список не ограничивается.
|
||||
|
||||
Поддержкой этих плейлистов занимаются сервисы и ресурсы, указанные как источник.
|
||||
Вопросы работоспособности плейлистов адресуйте тем, кто несёт за них ответственность.
|
||||
|
||||
Они бесплатны для использования.
|
||||
Список проверяется и обновляется мной вручную.
|
||||
Гарантию работоспособности никто не даёт.
|
||||
|
||||
* [Как использовать этот список?](#как-использовать-этот-список)
|
||||
* [Формат `playlists.ini`](#формат-playlistsini)
|
||||
* [API](#api)
|
||||
* [Развёртывание проекта](#развёртывание-проекта)
|
||||
* [Apache](#apache)
|
||||
* [Nginx](#nginx)
|
||||
* [Расширенные возможности](#расширенные-возможности)
|
||||
* [Собственный код html/css/js](#собственный-код-htmlcssjs)
|
||||
* [Очистка кеша twig](#очистка-кеша-twig)
|
||||
* [Скачать все плейлисты](#скачать-все-плейлисты)
|
||||
* [Проверить каналы плейлиста](#проверить-каналы-плейлиста)
|
||||
* [Поиск каналов в одном плейлисте](#поиск-каналов-в-одном-плейлисте)
|
||||
* [Поиск каналов во всех плейлистах](#поиск-каналов-во-всех-плейлистах)
|
||||
* [Создать плейлист из нужных каналов](#создать-плейлист-из-нужных-каналов)
|
||||
* [Как создать свой собственный плейлист?](#как-создать-свой-собственный-плейлист)
|
||||
* [Использованный стек](#использованный-стек)
|
||||
* [Лицензия](#лицензия)
|
||||
|
||||
## API
|
||||
|
||||
Можно получать состояние плейлистов из этого сборника при помощи метода:
|
||||
|
||||
```
|
||||
GET https://iptv.axenov.dev/<ID>/json
|
||||
```
|
||||
|
||||
где `ID` -- один из идентификаторов, указанных в [`playlists.ini`](playlists.ini) в квадратных скобках.
|
||||
|
||||
В случае успеха вернётся JSON следующего содержания:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "p1",
|
||||
"url": "localhost:8080/p1",
|
||||
"name": "Каналы в SD и HD качестве (smarttvnews.ru)",
|
||||
"desc": "Рабочий и актуальный IPTV плейлист M3U — на июнь 2022 года",
|
||||
"pls": "https://smarttvnews.ru/apps/iptvchannels.m3u",
|
||||
"src": "https://smarttvnews.ru/rabochiy-i-aktualnyiy-iptv-pleylist-m3u-kanalyi-v-sd-i-hd-kachestve/",
|
||||
"status": "online",
|
||||
"encoding": {
|
||||
"name": "UTF-8",
|
||||
"alert": false
|
||||
},
|
||||
"channels": [
|
||||
"Channel1",
|
||||
"Channel2",
|
||||
"ChannelX"
|
||||
],
|
||||
"count": 3
|
||||
}
|
||||
```
|
||||
|
||||
где:
|
||||
|
||||
* `id` -- идентификатор плейлиста
|
||||
* `name` -- название плейлиста
|
||||
* `url` -- короткая ссылка, которую можно использовать для добавления плейлиста в плеер
|
||||
* `desc` -- краткое описание
|
||||
* `pls` -- прямая ссылка на m3u/m3u8 плейлист
|
||||
* `src` -- ссылка на источник, откуда взят плейлист
|
||||
* `status` -- статус плейлиста (`"online"|"timeout"|"offline"|"error"`)
|
||||
* `encoding` -- данные о кодировке файла плейлиста
|
||||
* `name` -- название кодировки (`"UTF-8"|"Windows-1251"`)
|
||||
* `alert` -- признак отличия кодировки от `UTF-8`, названия каналов сконвертированы в `UTF-8`, могут быть ошибки
|
||||
в отображении
|
||||
* `channels` -- массив названий каналов
|
||||
* `count` -- количество каналов >= 0
|
||||
|
||||
> Название кодировки `encoding.name` может определяться неточно!
|
||||
|
||||
В случае ошибки вернётся JSON в следующем формате:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "p1",
|
||||
"url": "localhost:8080/p1",
|
||||
"name": "Каналы в SD и HD качестве (smarttvnews.ru)",
|
||||
"desc": "Рабочий и актуальный IPTV плейлист M3U — на июнь 2022 года",
|
||||
"pls": "https://smarttvnews.ru/apps/iptvchannels.m3u",
|
||||
"src": "https://smarttvnews.ru/rabochiy-i-aktualnyiy-iptv-pleylist-m3u-kanalyi-v-sd-i-hd-kachestve/",
|
||||
"status": "offline",
|
||||
"error": {
|
||||
"code": 22,
|
||||
"message": "The requested URL returned error: 404 Not Found"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
где:
|
||||
|
||||
* `id` -- идентификатор плейлиста
|
||||
* `name` -- название плейлиста
|
||||
* `url` -- короткая ссылка, которую можно использовать для добавления плейлиста в плеер
|
||||
* `desc` -- краткое описание
|
||||
* `pls` -- прямая ссылка на m3u/m3u8 плейлист
|
||||
* `src` -- ссылка на источник, откуда взят плейлист
|
||||
* `status` -- статус плейлиста (`"online"|"timeout"|"offline"|"error"`)
|
||||
* `error` -- данные об ошибке при проверке плейлиста
|
||||
* `code` -- [код ошибки curl](https://curl.se/libcurl/c/libcurl-errors.html)
|
||||
* `message` -- текст ошибки curl
|
||||
|
||||
## Расширенные возможности
|
||||
|
||||
### Собственный код html/css/js
|
||||
|
||||
В проекте есть директория `src/views/custom`.
|
||||
Там можно размещать собственный код, который будет вставляться на каждой странице.
|
||||
|
||||
Для этого, в первую очередь, нужно выполнить:
|
||||
|
||||
```
|
||||
cp src/views/custom/custom.twig.example src/views/custom/custom.twig
|
||||
```
|
||||
|
||||
Между тегами `{% block ... %} сюда {% endblock %}` следует вставить желаемый код или текст.
|
||||
Можно создавать новые twig-файлы рядом и подключать их внутри `custom.twig`.
|
||||
Git будет их игнорировать, хотя можно убрать директорию из `.gitignore` и добавлять эти файлы репозиторий.
|
||||
|
||||
В общем случае, это можно выполнять на том сервере, на коем установлен и работает веб-сервис.
|
||||
|
||||
После всех правок следует очистить кеш twig (см. далее).
|
||||
|
||||
### Очистка кеша twig
|
||||
|
||||
Если в файле `./src/.env` параметр `TWIG_CACHE=1`, то макеты страниц компилируются однажды и потом переиспользуются.
|
||||
Изменённые макеты не будут перекомпилироваться пока не будет очищен кеш прежних.
|
||||
|
||||
Для этого следует выполнить:
|
||||
|
||||
```
|
||||
cd src && composer clear-views
|
||||
```
|
||||
|
||||
## Использованный стек
|
||||
|
||||
* [php8.3-fpm](https://www.php.net/releases/8.3/ru.php)
|
||||
* [SlimPHP v4](https://www.slimframework.com/docs/v4/)
|
||||
* [Bootstrap 5](https://getbootstrap.com/docs/5.0/getting-started/introduction/)
|
||||
|
||||
## Лицензия
|
||||
|
||||
[The MIT License](LICENSE)
|
||||
Reference in New Issue
Block a user