# Основной бэкенд 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//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)