Утилита экспорта данных из NDF-файлов в XML и импорта из XML в NDF-файл.
Дополнительно может создать FAV-группы из указанного списка.
Пример вызова утилиты, для создания группы каналов в NDF-файле:
rem конвертация в xml
ndf 20111216-173005.cndf
rem создание FAV-групп из списка
ndf -g channels.lst 20111216-173005.xml
Создание списка каналов из NDF-файла:
ndf -l channels.lst 20111216-173005.cndf
Описание формата списка:
Название группы 1
Дескриптор канала 1
...
...
Дескриптор канала N (максимально 120 каналов в группе)
....
....
Название группы N (максимально 16 групп)
Дескриптор канала 1
...
...
Дескриптор канала N
Формат дескриптора канала:
{число};Название канала;{SVC_ID};{PMT_PID};Название спутника;{Частота};{Поляризация};{Тип}
SVC_ID,Название спутника;Частота;Поляризация берутся из XML-файла.
Тип - tv, radio.
{число};{PMT_PID} - не используются.
При использовании списка "Название канала", "Тип" для канала в NDF-файле
будут перезаписаны данными из списка.
Пример cписка:
НТВ+
6418;Первый;10106;105;W4/W7 NTV+;12322;v;tv
6448;Россия 1;10304;123;W4/W7 NTV+;12399;v;tv
6376;ТВЦ;31011;3711;W4/W7 NTV+;12265;h;tv
6239;Радио Дети FM регионы;16182;1682;W4/W7 NTV+;11900;v;radio
6238;Дети FM Москва;16181;1681;W4/W7 NTV+;11900;v;radio
6382;Радио Зенит;31102;3722;W4/W7 NTV+;12265;h;radio
6457;Relax FM;10327;137;W4/W7 NTV+;12399;v;radio
6458;Эхо Москвы;10328;138;W4/W7 NTV+;12399;v;radio
Радуга
7325;Первый канал;850;850;ABS 1;12732;v;tv
7276;Россия 1;1410;1410;ABS 1;12610;v;tv
7286;HTB;100;100;ABS 1;12640;v;tv
7279;Россия К;1440;1440;ABS 1;12610;v;tv
7288;CTC (+7);400;400;ABS 1;12640;v;tv
7314;5 канал;1710;1710;ABS 1;12707;v;tv
7291;РЕН ТВ;550;550;ABS 1;12640;v;tv
7287;Перец;200;200;ABS 1;12640;v;tv
7238;Перец (+2);504;6001;ABS 1;12518;v;tv
Примечание: УТИЛИТА НЕ ПОДДЕРЖИВАЕТ ИНФОРМАЦИЮ О DVB-T КАНАЛАХ и ЧАСТОТАХ В NDF-ФАЙЛЕ.
При экспорте в XML, DVB-T информация потеряется, будьте внимательны.
Начавший войну против Украины старый гебешный поц будет, без сомнения, гореть в аду.
Экспорт из NDF в XML
-
- Сообщения: 1
- Зарегистрирован: 28 дек 2011, 20:53
Re: Экспорт из NDF в XML
Денис, cпасибо! Замечательно!!!
А нельзя заопенсорсить? Ну или по крайней мере как-то получить описание формата NDF?
А нельзя заопенсорсить? Ну или по крайней мере как-то получить описание формата NDF?
Re: Экспорт из NDF в XML
Прикладываю черновик - свои заметки по исследованию формата NDF.vadim.bazuev писал(а):Денис, cпасибо! Замечательно!!!
А нельзя заопенсорсить? Ну или по крайней мере как-то получить описание формата NDF?
Если будут вопросы по заметкам - задавайте, постараюсь ответить.
Доп.информация по контрольной сумме - КС рассчитывается как сумма всех байт файла (кроме последнего) + 1.
В случае упакованного формата - блок CNDF не участвует в расчете суммы, сумма считается по блокам Заголовк NDF,SATS,TRANSPONDERS,CHANNELS,FAVS,END.
- Вложения
-
- ndf.zip
- (2.44 КБ) 322 скачивания
Re: Экспорт из NDF в XML
Корейцы, узнав о нашем желании создать редактор каналов лучший, чем их NDFEditor, любезно предоставили нам описание формата NDF. Про CNDF могу сказать, что "CNDF format is just a zipped NDF file. Its algorism is lha version 5."
==============================================================================================================
Network Database Format Ver 2
Last modification date: 2009. 3. 6.
1. (16) Header
(4) "NDF\0" : magic number
(4) Size : total size including header and tail
(1) Format version : = 1 (Satellite Only), = 2 (Satellite + Terrestrial)
(3) Last Modification Time
: [Valid/Y][M][D]
: MSB = valid bit
: if(valid ) Y = year (elapsed year since 2000), M = month (1 – 12), D = day(1 – 31)
else M = Offset from ‘A’ offset, D = version
(4) Config mask
bit0 = Tp name included
bit1 = Skew control inlcuded
bit2 = CASystem ID included
bit3 = TS ID included
bit4 = LCN(Logical Channel Number) included
bit5 = Compressed Block Include (CNDF)
... (reserved for future use. Should be all 0)
bit24-bit31(MSByte) = PCountry
2. Body
2.1 Antenna DB
(1) ant_cnt : IF(Format version == 1) ant_cnt = 64 , ( == 2) ant_cnt = 65
REPEAT(ant_cnt)
{
(1) config : bit 7 = skew motor
: ...[SPARE 1bit]
: bit 5 = [Echostar]Legay-SW
: bit 4 = [Optional] Antenna selected
: bit 3 = DiSEqC 1.3 on/off
: bit 2 = DiSEqC 1.2 on/off
: bit 1 = DiSEqC 1.1 on/off
: bit 0 = DiSEqC 1.0 on/off
(1) control : bit 7 - 6 = [SatCR] ant filter
: bit 5 - 4 = tuner input (for 4-tuner model)
: bit 3 = 0/12v
: bit 2 = 22khz on/off
: bit 1 - 0 = lnb power 0) off 1) 13v 2) 18v 3) auto
(1) DiSEqC switch index
(1) lnb_type : bit 7 - 6 = lnb type 0) single 1) universal 2) OCS
: bit 5 = IF [Echostar] or [SatCR] lnb type extension bit
: ...[SPARE 1bit]
: bit 3 - 0 = lnb freq
if single lnb 0 = custom freq
1 = 5150
2 = 9750
3 = 10000
4 = 10050
5 = 10600
6 = 10750
7 = 11200
8 = 11475
if universal lnb: 0 = custom freq
1 = 9750 / 10600
2 = 9750 / 10750
(2) custom lnb freq lo
(2) custom lnb freq hi
}
2.2 Net DB
(1) net_cnt : IF(Format Version == 1) net_cnt = 64 ELSE ( == 2) net_cnt = 65
: IF(Antenna Link == 64) Terrestrial Network
REPEAT(net_cnt)
{
(1) name_len
(name_len) name
(2) sat degree : refer to USALS
(1) DiSEqC positioner number
(1) antenna link
IF(skew control included)
{
(1) skew v
(1) skew h
}
}
2.3 Transponder DB
(2) tp_cnt
REPEAT(tp_cnt)
{
IF(tp name included)
{
(1) name_len
(name_len) name
}
(2) freq : MHz
(2) symbol_rate : MSps
(1) fec_polar : bit7-4 = FEC (defined as DVB-SI [EN 300 468 v1.7.1 Table35], 0=auto)
: bit3=8PSK mark
: bit2=DVB-S2 mark
: bit0=polar, bit1=linear/circ (0=v, 1=h, 2= r, 3=l)
(1) drift value
(1) net link
IF(ts id included)
{
(2) net_id : 0=invalid (according to ETR 162)
(2) ts_id
(2) org_net_id : 0=invalid (according to ETR 162)
(2) 2-digit id charactors : "xx" it is used as freq-channel number
in terrestrial network
: if DVB-S2 is set, byte1.bit0 = pilot on/off flag
}
(4) GMT error
}
2.4 Prog DB
(2) prog_cnt
REPEAT(prog_cnt)
{
(1) name_len : 1 – 15
(name_len ) name : IF (name_len > 1) AND (name[name_len-2] == ‘\0’) THEN
name[name_len-1] = char code(1)
(2) prog_id : 0xffff=user-defined prog
(2) pmt_pid : 0xffff=invalid
(2) pcr_pid : 0xffff=invalid
(1) vid_cnt
REPEAT(vid_cnt) (1) info
REPEAT(vid_cnt) (2) vid_pid
(1) aud_cnt
REPEAT(aud_cnt) (1) info : ISO language info
REPEAT(aud_cnt) (2) aud_pid : bit6 = AC3, bit5 = DTS
(1) txt_cnt
REPEAT(txt_cnt) (1) info : ISO language info
REPEAT(txt_cnt) (2) txt_pid : bit6 = subtitle
IF(CASystem ID included)
{
(4) CASystem ID mask
}
(1) attrib : bit0=scrambled
: bit1=locked
: bit2=skip
: bit4=service type (0: TV, 1: Radio)
: bit5=custom name
: bit6=custom pid
: bit7=user-defined channel (prog_id has no meaning)
(1) aud_attr : bit7 = used flag 0) track fixed 1) depends on lang set
: bit5 - 6: Stereo mode
(00: Stereo, 01: Left, 10: Right, 11: Reserved)
: bit0 - 4: Audio Track (Index of multiple pid slots)
IF(lcn included)
{
(2) lcn : 0xffff=invalid
}
(2) tp link
}
2.5 List DB
(1) list_cnt
REPEAT(list_cnt)
{
(1) name_cnt
(name_cnt) name
REPEAT(2: tv/radio)
{
(2) list_size
(2 * list_size) list
}
}
3. (4) Tail
(3) "END" : ending mark
(1) Checksum : total add sum including header and tail, seed = 1
==============================================================================
Compressed Network Database Format Ver 1 (CNDF)
1. (16) Header
- the same as NDF format
2. Body (* If compression is failed, it is the same as NDF format)
(each)
- Compressed ANT, NET DB
- Compressed TP DB
- Compressed Prog DB
- Compressed List DB
3. (4) Tail
- the same as NDF format
* Compressed Format : Header(12) + Body(Compressed data)
1.(12)Header
(4) "CNDF" : compress block magic
(4) Compressed Data Size
(4) Orignal Data Size
2. (Compressed Data Size) Body
==============================================================================================================
Network Database Format Ver 2
Last modification date: 2009. 3. 6.
1. (16) Header
(4) "NDF\0" : magic number
(4) Size : total size including header and tail
(1) Format version : = 1 (Satellite Only), = 2 (Satellite + Terrestrial)
(3) Last Modification Time
: [Valid/Y][M][D]
: MSB = valid bit
: if(valid ) Y = year (elapsed year since 2000), M = month (1 – 12), D = day(1 – 31)
else M = Offset from ‘A’ offset, D = version
(4) Config mask
bit0 = Tp name included
bit1 = Skew control inlcuded
bit2 = CASystem ID included
bit3 = TS ID included
bit4 = LCN(Logical Channel Number) included
bit5 = Compressed Block Include (CNDF)
... (reserved for future use. Should be all 0)
bit24-bit31(MSByte) = PCountry
2. Body
2.1 Antenna DB
(1) ant_cnt : IF(Format version == 1) ant_cnt = 64 , ( == 2) ant_cnt = 65
REPEAT(ant_cnt)
{
(1) config : bit 7 = skew motor
: ...[SPARE 1bit]
: bit 5 = [Echostar]Legay-SW
: bit 4 = [Optional] Antenna selected
: bit 3 = DiSEqC 1.3 on/off
: bit 2 = DiSEqC 1.2 on/off
: bit 1 = DiSEqC 1.1 on/off
: bit 0 = DiSEqC 1.0 on/off
(1) control : bit 7 - 6 = [SatCR] ant filter
: bit 5 - 4 = tuner input (for 4-tuner model)
: bit 3 = 0/12v
: bit 2 = 22khz on/off
: bit 1 - 0 = lnb power 0) off 1) 13v 2) 18v 3) auto
(1) DiSEqC switch index
(1) lnb_type : bit 7 - 6 = lnb type 0) single 1) universal 2) OCS
: bit 5 = IF [Echostar] or [SatCR] lnb type extension bit
: ...[SPARE 1bit]
: bit 3 - 0 = lnb freq
if single lnb 0 = custom freq
1 = 5150
2 = 9750
3 = 10000
4 = 10050
5 = 10600
6 = 10750
7 = 11200
8 = 11475
if universal lnb: 0 = custom freq
1 = 9750 / 10600
2 = 9750 / 10750
(2) custom lnb freq lo
(2) custom lnb freq hi
}
2.2 Net DB
(1) net_cnt : IF(Format Version == 1) net_cnt = 64 ELSE ( == 2) net_cnt = 65
: IF(Antenna Link == 64) Terrestrial Network
REPEAT(net_cnt)
{
(1) name_len
(name_len) name
(2) sat degree : refer to USALS
(1) DiSEqC positioner number
(1) antenna link
IF(skew control included)
{
(1) skew v
(1) skew h
}
}
2.3 Transponder DB
(2) tp_cnt
REPEAT(tp_cnt)
{
IF(tp name included)
{
(1) name_len
(name_len) name
}
(2) freq : MHz
(2) symbol_rate : MSps
(1) fec_polar : bit7-4 = FEC (defined as DVB-SI [EN 300 468 v1.7.1 Table35], 0=auto)
: bit3=8PSK mark
: bit2=DVB-S2 mark
: bit0=polar, bit1=linear/circ (0=v, 1=h, 2= r, 3=l)
(1) drift value
(1) net link
IF(ts id included)
{
(2) net_id : 0=invalid (according to ETR 162)
(2) ts_id
(2) org_net_id : 0=invalid (according to ETR 162)
(2) 2-digit id charactors : "xx" it is used as freq-channel number
in terrestrial network
: if DVB-S2 is set, byte1.bit0 = pilot on/off flag
}
(4) GMT error
}
2.4 Prog DB
(2) prog_cnt
REPEAT(prog_cnt)
{
(1) name_len : 1 – 15
(name_len ) name : IF (name_len > 1) AND (name[name_len-2] == ‘\0’) THEN
name[name_len-1] = char code(1)
(2) prog_id : 0xffff=user-defined prog
(2) pmt_pid : 0xffff=invalid
(2) pcr_pid : 0xffff=invalid
(1) vid_cnt
REPEAT(vid_cnt) (1) info
REPEAT(vid_cnt) (2) vid_pid
(1) aud_cnt
REPEAT(aud_cnt) (1) info : ISO language info
REPEAT(aud_cnt) (2) aud_pid : bit6 = AC3, bit5 = DTS
(1) txt_cnt
REPEAT(txt_cnt) (1) info : ISO language info
REPEAT(txt_cnt) (2) txt_pid : bit6 = subtitle
IF(CASystem ID included)
{
(4) CASystem ID mask
}
(1) attrib : bit0=scrambled
: bit1=locked
: bit2=skip
: bit4=service type (0: TV, 1: Radio)
: bit5=custom name
: bit6=custom pid
: bit7=user-defined channel (prog_id has no meaning)
(1) aud_attr : bit7 = used flag 0) track fixed 1) depends on lang set
: bit5 - 6: Stereo mode
(00: Stereo, 01: Left, 10: Right, 11: Reserved)
: bit0 - 4: Audio Track (Index of multiple pid slots)
IF(lcn included)
{
(2) lcn : 0xffff=invalid
}
(2) tp link
}
2.5 List DB
(1) list_cnt
REPEAT(list_cnt)
{
(1) name_cnt
(name_cnt) name
REPEAT(2: tv/radio)
{
(2) list_size
(2 * list_size) list
}
}
3. (4) Tail
(3) "END" : ending mark
(1) Checksum : total add sum including header and tail, seed = 1
==============================================================================
Compressed Network Database Format Ver 1 (CNDF)
1. (16) Header
- the same as NDF format
2. Body (* If compression is failed, it is the same as NDF format)
(each)
- Compressed ANT, NET DB
- Compressed TP DB
- Compressed Prog DB
- Compressed List DB
3. (4) Tail
- the same as NDF format
* Compressed Format : Header(12) + Body(Compressed data)
1.(12)Header
(4) "CNDF" : compress block magic
(4) Compressed Data Size
(4) Orignal Data Size
2. (Compressed Data Size) Body
Вернуться в «обсуждение и вопросы связанные со сменой ПО, загрузкой/выгрузкой настроек и установок»
Перейти
- Ресиверы Dr.HD D15, Dr.HD F15, Dr.HD F16, Dr.HD GRAND (общий форум)
- Обсуждение прошивок Dr.HD D15, Dr.HD F15, Dr.HD F16, Dr.HD GRAND
- Функции записи/воспроизведения, работа с внутренними и внешними носителями (SATA, eSATA, USB, SDHC)
- English Forum
- обсуждение работы и настройки спутниковой части (DVB-S/S2)
- обсуждение работы и настройки эфирной части (DVB-T)
- обсуждение работы c модулями, официальными картами и провайдерами
- обсуждение и вопросы связанные со сменой ПО, загрузкой/выгрузкой настроек и установок
- обсуждение вопросов по ремонту, тюнингу и доработке своими руками
- обсуждение работы функций пульта ДУ, спектроанализатора и метеостанции
- Флуд
- Список форумов
- Часовой пояс: UTC+02:00
- Удалить cookies
Создано на основе phpBB® Forum Software © phpBB Limited