- Главная идея: программа передач строится из текущего эфира
- Плюсы и минусы: серверные плейлисты vs клиентские
- Шаг 1: подготовьте плейлист (.txt) для Flussonic
- Шаг 2: настройте flussonic.conf под программу передач
- Шаг 3: получаем текущую передачу и позицию через HTTP API
- Шаг 4: обрабатываем API на сервере (чтобы обойти ограничения доступа)
- Шаг 5: хранение расписания в базе (таблица media)
- Шаг 6: вычисляем “осталось до конца” и “время следующей передачи”
- Шаг 7: показываем программу передач на странице и обновляем через AJAX
- Как учитывать субтитры (closed captions)
- Что делать, если нужна именно “под ЛИНК ТВ”
- Короткая схема: что собрать в итоге
- Типичные ошибки, из‑за которых “программа передач не работает”
- Итог
Вы хотите, чтобы на сайте или в интерфейсе отображалась программа передач и при этом информация не «устаревала» через несколько минут? В этой статье разберём практический способ: как получить данные о текущем эфире, собрать их в понятную таблицу и обновлять программа в реальном времени, а не вручную.
Если вы смотрите IPTV, часто нужен именно список: что сейчас в эфире и что будет дальше, с время начала/окончания. Обычно для этого берут данные media-сервера и превращают их в удобный файл для фронтенда.
Главная идея: программа передач строится из текущего эфира
Сделать программу передач можно не «рисуя вручную», а рассчитывая её по фактическому проигрываемому передача и позиции в потоке.
В типовой схеме:
- есть IPTV-медиасервер (например, Flussonic), который отдаёт данные по HTTP API;
- веб-страница запрашивает эти данные;
- сервер/скрипт вычисляет: сколько осталось до конца и когда стартует следующая передача;
- страница обновляется через небольшой интервал (например, каждые 15 секунд).
Так программа выглядит живой, а не статичной.
Плюсы и минусы: серверные плейлисты vs клиентские
Перед тем как собирать программу передач, важно понимать базовую технологию IPTV. Серверные плейлисты исторически применялись в телевизионном оборудовании. У них есть проблема: сложно нормально учитывать рекламу, делать корректную паузу/отмотку назад и некоторые другие «эфирные» сценарии.
При этом, если ваша задача — именно программа передач и вам важнее корректное отображение «что сейчас идёт», то серверные плейлисты иногда используют, особенно если система устроена так, что интерфейс и подсчёт эфирного времени уже есть.
Шаг 1: подготовьте плейлист (.txt) для Flussonic
Обычно плейлист — это обычный текстовый файл, где в каждой строке указан путь к медиа-источнику.
Пример структуры (концептуально):
liv/i_out.mp4
liv/ss1.mp4
liv/c1g.mp4
liv/vv.mp4
liv/tr1be.mp4
liv/sg1.mp4
Важно, чтобы пути соответствовали тому, где Flussonic реально хранит media на диске и как настроены публикации/кеши.
Шаг 2: настройте flussonic.conf под программу передач
Дальше нужен блок конфигурации Flussonic, где описывается стрим на основе плейлиста и доступы к нему.
В реальных проектах обычно задают:
- http/rtsp/rtmp порты;
- правила авторизации;
- поток streams, который читает playlist из HTTP URL;
- включение плагина iptv, если используете его базу/функции.
Ключевой смысл: чтобы Flussonic мог читать плейлист и отдавать информацию о том, что сейчас играет.
Шаг 3: получаем текущую передачу и позицию через HTTP API
Самое важное: Flussonic возвращает данные о том, что проигрывается прямо сейчас.
Например, HTTP запрос возвращает JSON вида:
{"current_entry":"liv/c1g.mp4","current_type":"file","duration":null,"position":1739946.5416666667}
Из ответа нужны поля:
- current_entry — текущий медиафайл (по сути, текущая передача в вашем расписании);
- position — позиция во времени (сколько секунд/миллисекунд уже прошло).
В некоторых случаях доступ к API требует авторизации. Тогда напрямую вытащить данные с клиентской страницы нельзя, и приходится использовать серверный скрипт.
Шаг 4: обрабатываем API на сервере (чтобы обойти ограничения доступа)
Смысл простой: создаёте серверный обработчик (например, result.php), который делает запрос к Flussonic с логином/паролем и отдаёт наружу уже «чистый» JSON.
Так браузер не увидит ваши секреты, а сможет получить результат.
На практике логика такая:
- скрипт забирает JSON от media сервера;
- при необходимости нормализует значения;
- возвращает ответ веб-странице.
Шаг 5: хранение расписания в базе (таблица media)
Чтобы программа передач была не просто «что сейчас», а ещё «что дальше», нужна база с заранее известными параметрами каждой передача.
Типовая таблица (концептуально) может включать:
- имя (name);
- идентификатор/ключ (media);
- длительность (duration);
- описание (description);
- метка, нужно ли что-то показывать (например, субтитры cc);
- shedule_time или время старта по вашей логике.
Пример поля, который часто нужен: duration в формате времени и duration/время для расчётов.
Шаг 6: вычисляем “осталось до конца” и “время следующей передачи”
Когда у вас есть:
- длительность передачи (duration),
- текущая позиция (position),
можно рассчитать:
- сколько осталось до конца;
- когда начнётся следующая.
Алгоритм на пальцах:
- преобразуете position в секунды;
- duration разбиваете на часы/минуты/секунды;
- разница даёт время остатка;
- прибавляете остаток к текущему времени, чтобы получить старт следующей.
Эта часть и делает программу передач “живой”: без неё это будет просто список.
Шаг 7: показываем программу передач на странице и обновляем через AJAX
Чтобы обновление было заметно пользователю, страница должна перезагружать только блок с расписанием, а не всю страницу.
Типичная схема:
- на странице есть контейнер, например
div; - раз в 15 секунд выполняется загрузка data.php (AJAX);
- DOM обновляется новым HTML.
Если вам важны удобные визуальные элементы, используют стандартные библиотеки вроде Bootstrap и Font Awesome — это ускоряет оформление. jQuery в такой задаче подходит как инструмент для AJAX.
В результате программа передач меняется без обновления страницы: “сейчас” и “следующая” обновляются сами.
Как учитывать субтитры (closed captions)
В реальной iptv системе субтитры могут быть отдельными потоками или метками, и их тоже важно показывать в карточке передачи.
В таблице можно хранить поле вроде cc (например, “yes/no”). Тогда на фронтенде вы отображаете иконку/маркер рядом с передача и в зависимости от значения cc выводите подсказку.
Даже если фактический показ субтитров происходит на плеере, наличие информации в программе помогает пользователю понять, что “есть cc”.
Что делать, если нужна именно “под ЛИНК ТВ”
Если вы говорите про “ЛИНК ТВ” в контексте услуги IPTV, обычно шаги сводятся к тому, чтобы:
- услуга была активирована;
- вы оформили/активировали подписку на пакет tv программ;
- в личном кабинет доступны логин и пароль для приставки/приложения.
Программа передач как интерфейс может быть вашей разработкой (на сайте), а доступ к самим данным зависит от того, как организованы учетные записи и API на стороне провайдера.
В любом случае базовая логика остаётся той же: данные текущего эфира берутся из media-сервера/плеера, а “расписание” — из вашей БД и расчётов по времени.
Короткая схема: что собрать в итоге
| Блок | Что делает | Что нужно получить на выходе |
|---|---|---|
| Плейлист (.txt) | перечисляет источники | список файлов/медиа для потока |
| flussonic.conf | включает поток и доступ | работающий stream для IPTV |
| result.php (сервер) | обращается к API и возвращает JSON | current_entry и position |
| БД media | хранит длительность и описание каждой передачи | таблица для “что дальше” |
| data.php | читает БД + считает остаток времени | готовый HTML для блока “программа передач” |
| JS (AJAX) | обновляет блок каждые N секунд | обновлённая программа без перезагрузки |
Типичные ошибки, из‑за которых “программа передач не работает”
Иногда причина не в расчётах, а в организации доступа и соответствия ключей:
- Неверный ключ media:
current_entryне совпадает с тем, что лежит в БД (например, различается префикс пути). - position в неожиданных единицах: неверное преобразование секунд/миллисекунд ломает расчёт “осталось”.
- Авторизация API: браузер напрямую не должен получать данные с логином/паролем — нужен серверный прокси.
- Слишком редкое обновление: пользователь заметит “лаг” (часто выбирают 10–20 секунд; пример — 15 секунд).
Итог
Чтобы сделать программу передач на IPTV-платформе вроде ЛИНК ТВ (в смысле пользовательского сервиса) с удобным отображением, нужно:
- собрать плейлист и настроить поток;
- получить текущую передача и позицию через HTTP API;
- сопоставить текущий файл с записью в вашей базе media;
- посчитать “осталось” и “время следующей” по время;
- обновлять блок страницы автоматически через AJAX (например, раз в 15 секунд);
- при необходимости подсветить наличие closed captions.
Если вы сделаете именно эту связку, программа передач будет обновляться “по факту эфира”, а не по заранее нарисованному расписанию, и это обычно и является тем самым ответом на запрос “как сделать программу передач на линк тв”.