# Веб-сервис iptv.axenov.dev Содержит исходный код веб-сервиса и консольные инструменты проверки плейлистов и каналов. Использует [playlists.ini](https://git.axenov.dev/IPTV/playlists) с описанием плейлистов для своей работы. > **Веб-сайт:** [iptv.axenov.dev](https://iptv.axenov.dev) > **Зеркало:** [m3u.su](https://m3u.su) > Исходный код: [git.axenov.dev/IPTV/web](https://git.axenov.dev/IPTV/web) > Telegram-канал: [@iptv_aggregator](https://t.me/iptv_aggregator) > Обсуждение: [@iptv_aggregator_chat](https://t.me/iptv_aggregator_chat) > Дополнительные сведения: [git.axenov.dev/IPTV/.profile](https://git.axenov.dev/IPTV/.profile) ## О веб-сервисе Решает две задачи: * отображение списка плейлистов, которые можно использовать в своём плеере; * сокращение длинных ссылок для удобства ввода с пульта на ТВ и лёгкого запоминания. ## Установка и настройка 1. Развернуть [docker-среду](https://git.axenov.dev/IPTV/docker) 2. `cd iptv-docker; cp .env.example .env` 3. В файле `.env` поменять необходимые значения 4. `cd ..; docker compose up -d --build` ### Описание переменных окружения * `APP_URL` -- адрес, на котором расположен сервис: используется для генерации ссылок на плейлисты; * `APP_DEBUG` -- признак отладки сервиса (включает служебный вывод в некоторых местах); * `APP_ENV` -- окружение (см. ниже); * `APP_TITLE` -- название сервиса: используется для вывода на страницах сайта и в их заголовках; * `APP_TIMEZONE` -- часовой пояс, в котором расположен сервер; * `PAGE_SIZE` -- размер страницы для постраничной навигации на главной странице; * `USER_AGENT` -- user-agent для http-клиента, котоырй будет использоваться при подключении к внешним ресурсам; * `CACHE_HOST`, `CACHE_PORT`, `CACHE_PASSWORD`, `CACHE_DB` -- реквизиты подключения к cache/keydb; * `CACHE_TTL` -- количество часов для кэширования информации; * `TWIG_USE_CACHE` -- признак использования кэша компиляции шаблонов Twig. У каждой переменной есть умолчание на случай отсутствия файла `.env` или её отсутствия в нём. Но некорректные значения некоторых переменных могут привести к фатальным ошибкам. ### Перегрузка переменных окружения В разных средах можно использовать разные env-файлы для своего удобства. Для этого следует: 1. в файле `.env` переменной `APP_ENV` указать значение, например, `custom` или любое другое; 2. скопировать файл `.env` в файл `.env.custom`; 3. в файле `.env.custom` указать все или только необходимые переменные со произвольными значениями. Отсутствие файла `.env.custom` не вызовет ошибку. При подгрузке файла `.env.custom` будут перегружены только те переменные окружения, которые в нём объявлены. ## Использованный стек * [php8.4-fpm](https://www.php.net/releases/8.4/ru.php) * [SlimPHP v4](https://www.slimframework.com/docs/v4/) * [Guzzle v7](https://docs.guzzlephp.org/en/latest/) * [Twig v3](https://twig.symfony.com/doc/3.x/) * [symfony/console](https://symfony.com/doc/current/components/console.html) * [focusim/php-qrcode](https://github.com/Focusim/php-qrcode) * [Bootstrap v5.2](https://getbootstrap.com/docs/5.2/getting-started/introduction/) * [Ionicons](https://ionic.io/ionicons) * [List.js](https://listjs.com) * [telegram-bot/api](https://packagist.org/packages/telegram-bot/api) ## Лицензия Исходный код распространяется на условиях лицензии MIT. См. файл [LICENSE](LICENSE) для подробностей.