Современный IPTV-плеер на FastAPI и HLS.js. Просмотр телеканалов из m3u-плейлистов в удобном веб-интерфейсе с поиском, фильтрацией, адаптацией под мобильные устройства и только тёмной темой.
- 📺 Воспроизведение IPTV-каналов в браузере
- 📱 Полностью адаптивный дизайн для мобильных устройств
- 🌑 Только тёмная тема (ночной режим)
- 🔍 Поиск каналов по названию
- 📂 Фильтрация по категориям
- 🔄 Проксирование потоков для обхода CORS-ограничений
- 🎮 Переключение качества для HD-каналов
- 🚀 Поддержка HLS-потоков
- 🎞️ Улучшенная буферизация и автоматическое восстановление при зависании потока
- 📊 Логотипы каналов и информационная панель
- 🌐 Автоматическая загрузка и обновление плейлиста с удалённого URL
- 🕒 Кэширование плейлиста и потоков для ускорения работы
- 🛠️ Эндпоинты для ручного обновления плейлиста и очистки кэша
- 🔢 Отображение количества каналов и времени последнего обновления плейлиста
- 🆕 Кнопка "Обновить" с анимацией и подсветкой изменений
- 🆕 Удобные кнопки вызова бокового меню на мобильных устройствах
- 🆕 Нет автовоспроизведения последнего канала при загрузке (только ручной выбор)
iptv_fastapi/
│
├── main.py # FastAPI сервер с проксированием и API
├── requirements.txt # Зависимости
├── product.md # Инструкция по развертыванию в production
├── templates/
│ └── index.html # HTML + JavaScript клиент
└── static/
└── style.css # Стили интерфейса
- Python 3.7+
- Доступ к интернету (для загрузки плейлиста)
- Клонируйте репозиторий:
git clone <ссылка-на-репозиторий>
cd iptv_fastapi
- Установите зависимости:
pip install -r requirements.txt
- Запустите сервер:
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8080
или для разработки:
uvicorn main:app --reload
-
Откройте в браузере:
http://localhost:8080 -
Для развертывания в production среде на Ubuntu с Apache2, обратитесь к инструкции в файле
product.md.
- Выбор канала: Найдите канал в списке слева или воспользуйтесь поиском. На мобильных используйте плавающую кнопку меню или кнопку в шапке для вызова списка каналов.
- Фильтр по категориям: Выберите категорию из выпадающего списка
- Управление плеером:
- Кнопка "Выкл. звук" — отключает звук
- Кнопка "Полный экран" — разворачивает плеер на весь экран (на мобильных — отдельная кнопка выхода)
- Кнопка "Качество" — позволяет выбрать разрешение для HD-каналов
- Статистика:
- В шапке отображается количество каналов и время последнего обновления плейлиста
- Для ручного обновления используйте кнопку "Обновить" — она покажет анимацию и подсветит изменения
- Плейлист загружается автоматически с URL: https://gitlab.com/iptv135435/iptvshared/raw/main/IPTV_SHARED.m3u
- Кэшируется на 6 часов для ускорения работы.
- Для принудительного обновления используйте кнопку "Обновить" или эндпоинт
/refresh-playlist(локально)
/channels— получить список каналов, категорий и время последнего обновления/proxy?url=...— проксирование потоков и плейлистов (с добавлением параметра_nocache)/clear-cache— очистить кэш потоков (локально)/refresh-playlist— обновить плейлист вручную (локально)/health— проверка работоспособности
- Только тёмная тема (цвета интерфейса не зависят от настроек системы)
- Мобильный интерфейс: крупные кнопки, плавающее меню, быстрый доступ к списку каналов
- Нет автовоспроизведения: канал начинает играть только после клика
- Кнопка "Обновить" всегда даёт обратную связь (анимация, подсветка, сообщение)
- Быстрый выход из полноэкранного режима на мобильных (отдельная кнопка)
Проект распространяется под MIT-лицензией. Подробности в файле LICENSE.
При возникновении проблем или для получения дополнительной информации, пожалуйста, создайте Issue в репозитории проекта.