Вы хотите, чтобы на сайте или в интерфейсе отображалась программа передач и при этом информация не «устаревала» через несколько минут? В этой статье разберём практический способ: как получить данные о текущем эфире, собрать их в понятную таблицу и обновлять программа в реальном времени, а не вручную.

Если вы смотрите 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.

Если вы сделаете именно эту связку, программа передач будет обновляться “по факту эфира”, а не по заранее нарисованному расписанию, и это обычно и является тем самым ответом на запрос “как сделать программу передач на линк тв”.