Shu
Добрый день, коллеги!
Кто-нибудь может дать описание формата JTV для ТВ-программ (если конечно он не закрытый).
РоссияN. Novgorod
14 за 12 лет
Clever
Вот тебе генератор на С.
// Written by Dmitry <a7051999@mail.ru>
//

#include <fcntl.h>
#include <io.h>
#include <stdio.h>
#include <windows.h>
#include <sys/stat.h>

#define error(test,str) if(test){printf(str);return 1;}

int main(int argc, char* argv[])
{
FILETIME ft;
SYSTEMTIME st;
FILE *f1;
int f2,f3;
char name[5000];

printf("JTV 3.0 TVGuide generator v3 by Dmitry <a7051999@mail.ru>\n");
error(argc<2,"Usage: guidegen.exe filename_without_extension [/extract]\n");

char sf1[100];sprintf(sf1,"%s.txt",argv[1]);
char sf2[100];sprintf(sf2,"%s.ndx",argv[1]);
char sf3[100];sprintf(sf3,"%s.pdt",argv[1]);

if(argc==2){

f1=fopen(sf1,"rt");error(!f1,"Can't open file .txt!\n");
f2=open(sf2,O_RDWR|O_BINARY|O_CREAT|O_TRUNC,_S_IWRITE|_S_IREAD);
f3=open(sf3,O_RDWR|O_BINARY|O_CREAT|O_TRUNC,_S_IWRITE|_S_IREAD);
error(f2<0 || f3<0,"Can't open file .ndx or .pdt!\n");

int nelem=0;
error(write(f2,&nelem,2)<0,"Write error!\n");

char jtvsgn[]="JTV 3.x TV Program Data\x0a\x0a\x0a";
error(write(f3,jtvsgn,26)<0,"Write error!\n");

int offset=0x1a;

while(7==
fscanf(f1,"%hd %hd %hd %hd %hd %hd %[^\n]",
&st.wDay,
&st.wMonth,
&st.wYear,
&st.wHour,
&st.wMinute,
&st.wDayOfWeek,
name
)){

st.wSecond=0;
st.wMilliseconds=0;
SystemTimeToFileTime(&st,&ft);

int tmp=0;
write(f2,&tmp,2);

write(f2,&ft,8);

write(f2,&offset,2);

int len=strlen(name);
write(f3,&len,2);
write(f3,name,len);

offset+=len+2;
nelem++;

}

lseek(f2,0,SEEK_SET);
write(f2,&nelem,2);

printf(".ndx and .pdt files created success.\n");

}else{

error(stricmp(argv[2],"/extract"),"Incorrect option!\n");

f1=fopen(sf1,"wt");error(!f1,"Can't open file .txt!\n");
f2=open(sf2,_O_RDONLY|O_BINARY);
f3=open(sf3,_O_RDONLY|O_BINARY);
error(f2<0 || f3<0,"Can't open file .ndx or .pdt!\n");

int nelem=0;
error(read(f2,&nelem,2)<0,"Read error!\n");
for(int i=0;i<nelem;i++){
int tmp;
read(f2,&tmp,2);
read(f2,&ft,8);
FileTimeToSystemTime(&ft,&st);

fprintf(f1,"%d %d %d %d %d %d\n",
st.wDay,
st.wMonth,
st.wYear,
st.wHour,
st.wMinute,
st.wDayOfWeek?st.wDayOfWeek:7
);

long offset=0;
read(f2,&offset,2);
lseek(f3,offset,SEEK_SET);
int len=0;
read(f3,&len,2);
read(f3,name,len);name[len]=0;
fprintf(f1,"%s\n",name);
}

printf(".txt file created success.\n");

}

fclose(f1);
close(f2);
close(f3);

return 0;
}
РоссияУсть-Илимск
22 за 12 лет
Shu
Большое спасибо.
РоссияN. Novgorod
14 за 12 лет
cellard
А можно все таки получить именно описание формата?

И еще вопрос - давно меня тревожит:
В формате JTV похоже только братья славяне программки распространяют. Буржуйские же программы поддерживают часто только XMLTV.
Никак не могу понять:
1. Почему в XMLTV нет поддержки Росии. Формат зело удобный, не в пример JTV. Никому не надо?
1.1. Почему, на худой конец, нет просто генераторов в формат файлов XMLTV.
2. Почему отечественные программы не имеют поддержки формата XMLTV.

Вопросы, конечно, из серии, что было раньше - курица или яйцо... :-(

PS Если кто изучал XMLTV, подтвердит, у него (у формата самого) и возможности побогаче будут, чем у JTV.
РоссияСанкт-Петербург
4 за 12 лет
rod20
cellard : 1. Почему в XMLTV нет поддержки Росии. Формат зело удобный, не в пример JTV. Никому не надо?
1.1. Почему, на худой конец, нет просто генераторов в формат файлов XMLTV.
2. Почему отечественные программы не имеют поддержки формата XMLTV.

Обрати внимание на TVXB (www.tvxb.com) и TVGuru (www.tvguru.ru).
Обе делают экспорт в XMLTV
РоссияMoscow
1 за 11 лет
Lazy caT
Салют, Народ...

Кто может разъяснить поподробнее внутреннюю структуру базы данных JTV... Кто конверторы писал, помогите... Я, конечно, смогу попробовать разобраться в выше приведенном коде но, я уверен если кто-нибудь "ткнет пальцем" что, где и как, будет на много лучше и более нагляднее...
РоссияМосква
21 за 11 лет
Vlafy
Lazy caT
Имхо, лучше как раз разбираться самому ;-)
РоссияСосновый Бор
6083 за 11 лет
Lazy caT
Vlafy :
Спасибо огромное за совет, я уже разобрался... Потратил пару часов и таки разобрался... Оказывается ничего сложно там нет.... :-)
РоссияМосква
21 за 11 лет
Rumlin
Отсюда
В архиве ссылка есть исходник на С++, с помощью которого некто Oleg Antoshkiv разобрал следующее:
PDT:
Вначале файла всегда находится текст "JTV 3.x TV Program Data" за ним три символа с кодом 0Ah, дальше, начиная со смещения 01Ah повторяются записи
переменной длины:
* 2 байта на количество символов в названии
* Hазвание телепередачи

NDX:
первые два байта в файле - количество записей, дальше идут записи, каждая размером 12 байт:
* первые 2 байта в записи всегда равны 0
* восемь байт структуры FILETIME (дата и время начала телепередачи)
* два байта - смещение-указатель в файле PDT на количество символов вназвании телепередачи

Описания структуры FILETIME я не нашел, наверное это количество секунд, начиная с какой-то даты, но можно просто конвертировать эту структуру в
SYSTEMTIME функцией FileTimeToSystemTime и наоборот функцией
SystemTimeToFileTime (Win32 API).

---

Feci quod potui, faciant meliora potente

КубаSimferopol
8036 за 12 лет
linl
The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601.

typedef struct _FILETIME { // ft

DWORD dwLowDateTime;

DWORD dwHighDateTime;

} FILETIME;



Members

dwLowDateTime
Specifies the low-order 32 bits of the file time.
dwHighDateTime
Specifies the high-order 32 bits of the file time.

Remarks

It is not recommended that you add and subtract values from the FILETIME structure to obtain relative times. Instead, you should

* Copy the resulting FILETIME structure to a LARGE_INTEGER structure.

* Use normal 64-bit arithmetic on the LARGE_INTEGER value.

нашел тут
ссылка
---Неизвестно
1 за 8 лет
RA Pafnuteus
Апну тему, с вашего позволения...
Что-то не могу найти в этом формате названий каналов.
Предусматривается ли форматом такая в общем то логичная функциональность?

добавлено спустя 1 час 20 минут

По ходу никаких названий. Если только имя файла может содержать название. Но это на усмотрение того, кто генерит эти файлы.
РоссияНеизвестно
16 за 11 лет
Авторизуйтесь пожалуйста.
Если впервые у нас, то зарегистрируйтесь.
-- ИЛИ --
Авторизация через:
Страница создана за 0.092 секунды
© 1999-2017 PcTuner.ru · Дизайн Alex Dovby · Хостинг Vscale