JTV формат появился благодаря польскому программисту Ярославу Ковальскому, изначально использовалась в составе одноименного программного обеспечения для просмотра ТВ с тв-тюнеров. Представляет из себя zip архив с набором файлов. Каждому каналу соответствует 2 файла - <имя_канала>.ndx и <имя_канала>.pdt.
В них и содержится вся информация о времени начала, продолжительности и описании тв-программы. Файл с расширением PDT содержит в себе сведения о названии телепрограмм, а файл с расширением NDX – сведения о времени начала этих телепередач.
Программа в таком формате получила меньшее распространение чем XMLTV из-за сложной структуры и неудобства обработки (в сравнении с XML-форматом). Используется некоторыми медиаустройствами поддерживающими воспроизведение IPTV и проигрывателями IPTV для ПК.
Пример генерации JTV файла для канала на PHP
<?php
$channel_info = array(
'name' => 'Title1', 'time' => time(),
'name' => 'Title2', 'time' => time(),
);
$pdt_file = fopen("Channel1.pdt", "wb");
$ndx_file = fopen("Channel1.ndx", "wb");
fwrite($pdt_file, "JTV 3.x TV Program Datax0Ax0Ax0A", 26);
fwrite($ndx_file, pack("v",count($channel_info)),2);
$time = $channel_info[0]['time'];
fwrite($ndx_file, pack ("v", 0), 2);
$filetime = bcmul(bcadd($time, "11644473600"), "10000000");
for ($i = 0; $i < 8; $i++) {
$byte = (int) bcmod ($filetime, "256");
fwrite($ndx_file, pack("c", $byte), 1);
$filetime = bcdiv($filetime, "256");
}
fwrite($ndx_file, pack("v",26), 2);
$programm_name = iconv ("UTF-8", "windows-1251", $channel_info[0]['name']);
$programm_name_length = strlen($programm_name);
fwrite($pdt_file, pack("v", $programm_name_length), 2);
fwrite($pdt_file, $programm_name, $programm_name_length); // Записали название передачи
$offset += $programm_name_length + 2;
?>