diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2002-01-27 18:00:00 +0100 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2002-01-27 18:00:00 +0100 |
commit | 27919ee969866b68fc95b327a047a9989e4b4153 (patch) | |
tree | 1857862abf169ff6e9287152cd6fec6a1d9dbc41 | |
parent | b420457467ad0c8ae71f8b985914e85b7a0ff5aa (diff) | |
download | vdr-patch-lnbsharing-27919ee969866b68fc95b327a047a9989e4b4153.tar.gz vdr-patch-lnbsharing-27919ee969866b68fc95b327a047a9989e4b4153.tar.bz2 |
Version 0.99pre2vdr-0.99pre2
- Fixed setting the OSD size in the 'Confirm' interface call (thanks to
Deti Fliegl).
- Removed the 'read incomplete section...' error message in the EIT processor.
- Fixed channel data for "DW TV" (thanks to Axel Gruber).
- Added DPID to "PREMIERE MOVIE 1" in channels.conf.cable (thanks to Stephan
Schreiber).
- Prepared the OSD functions for multiple overlapping windows.
- Removed the check to see whether the system time is running linearly.
- Improved performance of SVDRP command entry.
- Removed EPGBugfixLevel '3' - after more than a year Pro-7 finally managed to
broadcast the correct timestamps for EPG events between 0:00 and 6:00!
- Fixed failing watchdog timer if program hangs in OSD activities (thanks to
Carsten Koch).
- No longer requiring 'libncurses' if compiling without DEBUG_OSD=1 and
REMOTE=KBD (thanks to Lauri Pesonen).
- The "Recordings" menu now displays a hierarchical structure if there are
subdirectories for the recordings. This can be controlled through the
"RecordingDirs" parameter in the "Setup" menu.
See "MANUAL/Replaying a Recording" for details.
- Improved speed of setting the Help button texts.
- Fixed handling file names that contain single quotes (') or dollar signs ($)
in the call to the shutdown command (option '-s') and the recording command
(option '-r').
- Improved error handling in the editing process; the resulting file will be
deleted if an error occured.
- A message is now prompted at the end of the editing process, indicating
whether the process succeeded or failed.
- Fixed setting the LastActivity timestamp after a shutdown prompt (thanks to
Sergei Haller).
- A message is now prompted if free disk space becomes low during recording.
- The editing process now calls AssertFreeDiskSpace() to remove deleted
recordings if the disk becomes full.
- The "Main" menu now displays in its title the used disk space (in percent)
and the estimated free disk space (in hh:mm), assuming a data rate of 30 MB
per minute.
- Activating the "Recordings" menu now displays "scanning recordings..." to
give the user some feedback in case this takes longer.
- Status messages are now displayed centered.
- Removed the 'Tools' subdirectory from the VDR archive. All contributed tools
can now be found at ftp://ftp.cadsoft.de/pub/people/kls/vdr/Tools.
91 files changed, 875 insertions, 9325 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 12154c8..073e927 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -8,6 +8,7 @@ Carsten Koch <Carsten.Koch@icem.de> for his idea of using multiple disks (and for testing this feature) for implementing the 'new recording' indicator for suggesting that the "Back" button in replay mode should bring up the "Recordings" menu + for fixing the watchdog timer if the program hangs in OSD activities Plamen Ganev <pganev@com-it.net> for fixing the frequency offset for Hotbird channels @@ -55,6 +56,7 @@ Alberto Carraro <bertocar@tin.it> Deti Fliegl <deti@fliegl.de> for implementing the 'CurrentChannel' setup parameter + for fixing setting the OSD size in the 'Confirm' interface call Dave Chapman <dave@dchapman.com> for implementing support for the teletext PID @@ -166,3 +168,13 @@ Norbert Schmidt <nschmidt-nrw@t-online.de> Thilo Wunderlich <tw@ubcom.net> for his help in keeping 'channels.conf' up to date + +Stephan Schreiber <stephan@sschreiber.de> + for his support in keeping the Premiere World channels up to date in 'channels.conf.cable' + +Lauri Pesonen <lauri.pesonen@firsthop.com> + for avoiding linking in 'libncurses' if compiling without DEBUG_OSD=1 and + REMOTE=KBD + +Sergei Haller <Sergei.Haller@math.uni-giessen.de> + for fixing the LastActivity timestamp after a shutdown prompt @@ -866,7 +866,7 @@ Video Disk Recorder Revision History - The device /dev/video is now opened only if necessary (to GRAB an image), allowing other programs (like 'kvdr', for instance) to use that device. -2001-11-25: Version 0.99 +2001-11-25: Version 0.99pre1 - Fixed several channel definitions in 'channels.conf' (thanks to Thilo Wunderlich). @@ -878,3 +878,46 @@ Video Disk Recorder Revision History - Changed the maximum value for PIDs in channels.conf from 0xFFFE to 0x1FFF. - Fixed DVD audio sync problems (thanks to Andreas Schultz). - Fixed external AC3 replay for DVDs (thanks to Andreas Schultz). + +2002-01-27: Version 0.99pre2 + +- Fixed setting the OSD size in the 'Confirm' interface call (thanks to + Deti Fliegl). +- Removed the 'read incomplete section...' error message in the EIT processor. +- Fixed channel data for "DW TV" (thanks to Axel Gruber). +- Added DPID to "PREMIERE MOVIE 1" in channels.conf.cable (thanks to Stephan + Schreiber). +- Prepared the OSD functions for multiple overlapping windows. +- Removed the check to see whether the system time is running linearly. +- Improved performance of SVDRP command entry. +- Removed EPGBugfixLevel '3' - after more than a year Pro-7 finally managed to + broadcast the correct timestamps for EPG events between 0:00 and 6:00! +- Fixed failing watchdog timer if program hangs in OSD activities (thanks to + Carsten Koch). +- No longer requiring 'libncurses' if compiling without DEBUG_OSD=1 and + REMOTE=KBD (thanks to Lauri Pesonen). +- The "Recordings" menu now displays a hierarchical structure if there are + subdirectories for the recordings. This can be controlled through the + "RecordingDirs" parameter in the "Setup" menu. + See "MANUAL/Replaying a Recording" for details. +- Improved speed of setting the Help button texts. +- Fixed handling file names that contain single quotes (') or dollar signs ($) + in the call to the shutdown command (option '-s') and the recording command + (option '-r'). +- Improved error handling in the editing process; the resulting file will be + deleted if an error occured. +- A message is now prompted at the end of the editing process, indicating + whether the process succeeded or failed. +- Fixed setting the LastActivity timestamp after a shutdown prompt (thanks to + Sergei Haller). +- A message is now prompted if free disk space becomes low during recording. +- The editing process now calls AssertFreeDiskSpace() to remove deleted + recordings if the disk becomes full. +- The "Main" menu now displays in its title the used disk space (in percent) + and the estimated free disk space (in hh:mm), assuming a data rate of 30 MB + per minute. +- Activating the "Recordings" menu now displays "scanning recordings..." to + give the user some feedback in case this takes longer. +- Status messages are now displayed centered. +- Removed the 'Tools' subdirectory from the VDR archive. All contributed tools + can now be found at ftp://ftp.cadsoft.de/pub/people/kls/vdr/Tools. @@ -349,7 +349,7 @@ the "Frequency" is in kHz in case of DVB-T). You can even use a mixture of DVB-S, DVB-C and DVB-T cards in the same system. All you need to do is to put all the channel definitions into one big -'channel.conf' file and set the 'Ca' parameter of each channel to the number +'channels.conf' file and set the 'Ca' parameter of each channel to the number of the card that can receive it. Learning the remote control keys: @@ -159,6 +159,13 @@ Video Disk Recorder User's Manual All recordings are listed in the "Recordings" menu. Browse through the list with the "Up" and "Down" button and press "Ok" (or the "Red" button) to start playback. New recordings are marked with an '*'. + If the Setup parameter RecordingDirs has been set and there are recordings + from periodic timers organized in a subdirectory structure, only the + directory is displayed and it can be opened by pressing "Ok" (or the "Red" + button). A directory entry displays the total number of recordings within + that directory (and any possible subdirectory thereof) as well as the total + number of new recordings (as opposed to a recording's entry, which displays + the date and time of the recording). Playback can be stopped via the "Main" menu by selecting "Stop replaying", or by pressing the "Blue" button outside the menu. A previously stopped playback session can be resumed by pressing the "Blue" @@ -402,12 +409,7 @@ Video Disk Recorder User's Manual Extended Description) 2 = removal of excess whitespace and hyphens, mapping of wrongly used characters - 3 = fixing the date in timestamps between 00:00 and 06:00 - (use with care - hopefully one day Pro7 and Kabel1 - will learn how to read the clock/calender) - Default is '2', which will do all textual fixes, but - leaves out the timestamp fixes, since these might cause - recordings to fail. Use '3' at your own risk. + Default is '2'. Note that after changing the setting of this parameter any EPG data that has already been received will remain in its existing format - only newly received data will @@ -444,6 +446,9 @@ Video Disk Recorder User's Manual 0 = don't use the 'Subtitle' 1 = use it (and create subdirectories) + RecordingDirs = 1 Turns displaying the Recordings menu as a hierarchical + directory structure on or off. + VideoFormat = 0 The video format (or aspect ratio) of the tv set in use. 0 = 4:3 1 = 16:9 @@ -4,7 +4,7 @@ # See the main source file 'vdr.c' for copyright information and # how to reach the author. # -# $Id: Makefile 1.28 2001/10/07 15:14:50 kls Exp $ +# $Id: Makefile 1.29 2002/01/13 16:57:27 kls Exp $ .DELETE_ON_ERROR: @@ -37,12 +37,17 @@ ifndef REMOTE REMOTE = KBD endif +ifeq ($(REMOTE), KBD) +NCURSESLIB = -lncurses +endif + DEFINES += -DREMOTE_$(REMOTE) DEFINES += -D_GNU_SOURCE ifdef DEBUG_OSD DEFINES += -DDEBUG_OSD +NCURSESLIB = -lncurses endif ifdef VFAT @@ -71,7 +76,7 @@ include $(DEPFILE) # The main program: vdr: $(OBJS) $(AC3LIB) $(DTVLIB) - g++ -g -O2 $(OBJS) -lncurses -ljpeg -lpthread $(LIBDIRS) $(DVDLIB) $(AC3LIB) $(DTVLIB) -o vdr + g++ -g -O2 $(OBJS) $(NCURSESLIB) -ljpeg -lpthread $(LIBDIRS) $(DVDLIB) $(AC3LIB) $(DTVLIB) -o vdr # The font files: diff --git a/Tools/dvbrc2vdr/Makefile b/Tools/dvbrc2vdr/Makefile deleted file mode 100644 index 196f50b..0000000 --- a/Tools/dvbrc2vdr/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Makefile for dvbrc2vdr utility -# - -OBJS = dvbrc2vdr.o - -%.o: %.c - gcc -g -O2 -Wall -c $(DEFINES) $< - -all: dvbrc2vdr - -dvbrc2vdr: $(OBJS) - gcc -g -O2 $(OBJS) -o dvbrc2vdr - -clean: - -rm -f $(OBJS) dvbrc2vdr diff --git a/Tools/dvbrc2vdr/channels.conf b/Tools/dvbrc2vdr/channels.conf deleted file mode 100644 index d26699c..0000000 --- a/Tools/dvbrc2vdr/channels.conf +++ /dev/null @@ -1,282 +0,0 @@ -RAI Uno:11766:v:1:27500:160:80:0:0 -RAI Due:11766:v:1:27500:161:84:0:0 -RAI Tre:11766:v:1:27500:162:88:0:0 -Rete 4:11919:v:1:27500:514:670:0:0 -Canale 5:11919:v:1:27500:513:660:0:0 -Italia 1 :11919:v:1:27500:512:650:0:0 -Video Italia:12610:v:0:22000:121:122:0:0 -Grand Tour.:12670:v:0:22000:289:290:0:0 -AB Sat Passion promo:12266:h:0:27500:160:80:0:0 -Nuvolari Promo:12149:v:1:27500:176:177:0:0 -DigItaly:12673:v:1:27500:220:221:0:0 -NBC Europe:11054:h:1:27500:550:551:0:0 -Bloomberg TV UK:11642:h:1:27500:1560:1520:0:0 -Game Network:12673:v:1:27500:291:292:0:0 -Bulgaria TV:12540:h:1:27500:4612:4613:0:0 -Video Italia :12673:v:1:27500:340:341:0:0 -Racing Channel Test:11623:v:1:27500:223:243:0:0 -Fashion TV:12402:v:0:27500:163:92:0:0 -Palco Promo:12073:v:1:27500:161:84:0:0 -Coming Soon TV:12111:v:1:27500:310:311:0:0 -Alice:12149:v:1:27500:160:161:0:0 -RAI Mosaico:11766:v:1:27500:518:8191:0:0 -RAI SportSat:11804:v:1:27500:512:650:0:0 -Satisfaction TV:12092:h:1:27500:4192:4193:0:0 -RAI Nettuno Sat 2:11804:v:1:27500:513:651:0:0 -RAI Educational:11804:v:1:27500:514:652:0:0 -TelePace :11804:v:1:27500:515:653:0:0 -RAI News24:11804:v:1:27500:516:654:0:0 -AB Channel 1:12266:h:0:27500:161:84:0:0 -Studio Europa:12673:v:1:27500:230:231:0:0 -AB Passion:12692:h:1:27500:160:80:0:0 -Camera dei Deputati:11804:v:1:27500:517:655:0:0 -SAT 2000:11804:v:1:27500:518:656:0:0 -RAI NettunoSat 1:11804:v:1:27500:519:657:0:0 -Ante Prima:11881:v:1:27500:2435:2436:0:0 -Vetrina D+:12034:v:1:27500:166:105:0:0 -D+ Info:12073:v:1:27500:160:80:0:0 -SNAI:11881:v:1:27500:2561:2562:0:0 -RTL:12188:h:0:27500:163:104:0:0 -Sat.1:12480:v:0:27500:1791:1792:0:0 -Pro-7:12480:v:0:27500:255:256:0:0 -RTL2:12188:h:0:27500:166:128:0:0 -VOX:12188:h:0:27500:167:136:0:0 -ARD:11837:h:0:27500:101:102:0:0 -BR3:11837:h:0:27500:201:202:0:0 -INTV:11843:v:1:27500:2324:2325:0:0 -MC Sat Monte Carlo:12540:h:1:27500:5126:5122:0:0 -Hessen-3:11837:h:0:27500:301:302:0:0 -N3:11837:h:0:27500:401:402:0:0 -SR3:11837:h:0:27500:501:502:0:0 -WDR:11837:h:0:27500:601:602:0:0 -BR-alpha:11837:h:0:27500:701:702:0:0 -SWR BW:11837:h:0:27500:801:802:0:0 -Phoenix:11837:h:0:27500:901:902:0:0 -ZDF:11954:h:0:27500:110:120:0:0 -Test 3sat:11954:h:0:27500:210:220:0:0 -Kinderkanal:11954:h:0:27500:310:320:0:0 -arte:11954:h:0:27500:360:370:0:0 -Eurosport:11954:h:0:27500:410:420:0:0 -ZDF Infobox:11954:h:0:27500:610:620:0:0 -CNN:12168:v:0:27500:165:100:0:0 -Super RTL:12188:h:0:27500:165:120:0:0 -VOX:12188:h:0:27500:167:136:0:0 -ORF Sat:11954:h:0:27500:506:507:0:0 -DW TV:12363:v:0:27500:305:306:0:0 -Kabel 1:12480:v:0:27500:511:512:0:0 -TM3:12480:v:0:27500:767:768:0:0 -DSF:12480:v:0:27500:1023:1024:0:0 -HOT:12480:v:0:27500:1279:1280:0:0 -BloombergTV:12552:v:0:22000:162:99:0:0 -Sky News:12552:v:0:22000:305:306:0:0 -KinderNet:12574:h:0:22000:163:92:0:0 -Alice:12610:v:0:22000:162:96:0:0 -n-tv:12670:v:0:22000:162:96:0:0 -RAI Uno:12363:v:0:27500:289:290:0:0 -TW1:12692:h:0:22000:166:167:0:0 -Eins Extra:12722:h:0:22000:101:102:0:0 -Eins Festival:12722:h:0:22000:201:202:0:0 -Eins MuXx:12722:h:0:22000:301:302:0:0 -MDR:12722:h:0:22000:401:402:0:0 -ORB:12722:h:0:22000:501:502:0:0 -B1:12722:h:0:22000:601:602:0:0 -ARD Online-Kanal:12722:h:0:22000:8191:701:0:0 -Premiere World Promo:11798:h:0:27500:255:256:0:0 -Premiere:11798:h:0:27500:511:512:1:10 -Star Kino:11798:h:0:27500:767:768:1:9 -Cine Action:11798:h:0:27500:1023:1024:1:20 -Cine Comedy:11798:h:0:27500:1279:1280:1:29 -Sci Fantasy:11798:h:0:27500:1535:1536:1:41 -Romantic Movies:11798:h:0:27500:1791:1792:1:11 -Studio Universal:11798:h:0:27500:2047:2048:1:21 -TV Niepokalanow:11876:h:0:27500:305:321:0:0 -Mosaico:11934:v:0:27500:165:100:0:0 -Andalucia TV:11934:v:0:27500:166:104:0:0 -TVC Internacional:11934:v:0:27500:167:108:0:0 -Nasza TV:11992:h:0:27500:165:98:0:0 -WishLine test:12012:v:0:27500:163:92:0:0 -Pro 7 Austria:12051:v:0:27500:161:84:0:0 -Kabel 1 Schweiz:12051:v:0:27500:162:163:0:0 -Kabel 1 Austria:12051:v:0:27500:166:167:0:0 -Pro 7 Schweiz:12051:v:0:27500:289:290:0:0 -Kiosque:12129:v:0:27500:160:80:0:0 -KTO:12129:v:0:27500:170:120:0:0 -TCM:12168:v:0:27500:160:80:0:0 -Cartoon Network France & Spain:12168:v:0:27500:161:84:0:0 -TVBS Europe:12168:v:0:27500:162:88:0:0 -TVBS Europe:12168:v:0:27500:162:89:0:0 -Travel:12168:v:0:27500:163:92:0:0 -TCM Espania:12168:v:0:27500:164:96:0:0 -MTV Spain:12168:v:0:27500:167:112:0:0 -TCM France:12168:v:0:27500:169:64:0:0 -RTL2 CH:12188:h:0:27500:164:112:0:0 -La Cinquieme:12207:v:0:27500:160:80:0:0 -ARTE:12207:v:0:27500:165:100:0:0 -Post Filial TV:12226:h:0:27500:255:256:0:0 -Canal Canaris:12246:v:0:27500:160:80:0:0 -Canal Canaris:12246:v:0:27500:160:81:0:0 -Canal Canaris:12246:v:0:27500:160:82:0:0 -Canal Canaris:12246:v:0:27500:160:83:0:0 -Taquilla 0:12285:v:0:27500:165:100:0:0 -CSAT:12324:v:0:27500:160:80:0:0 -Mosaique:12324:v:0:27500:162:88:0:0 -Mosaique 2:12324:v:0:27500:163:92:0:0 -Mosaique 3:12324:v:0:27500:164:96:0:0 -Le Sesame C+:12324:v:0:27500:165:1965:0:0 -FEED:12344:h:0:27500:163:92:0:0 -RTM 1:12363:v:0:27500:162:96:0:0 -ESC 1:12363:v:0:27500:163:104:0:0 -TV5 Europe:12363:v:0:27500:164:112:0:0 -TV7 Tunisia:12363:v:0:27500:166:128:0:0 -ARTE:12363:v:0:27500:167:137:0:0 -RTP International:12363:v:0:27500:300:301:0:0 -VideoService:12422:h:0:27500:255:256:0:0 -Beta Research promo:12422:h:0:27500:1023:1024:0:0 -Canal Canarias:12441:v:0:27500:160:80:0:0 -TVC International:12441:v:0:27500:512:660:0:0 -Fitur:12441:v:0:27500:514:662:0:0 -Astra Info 1:12552:v:0:22000:164:112:0:0 -Astra Info 2:12552:v:0:22000:165:120:0:0 -Astra Vision 1:12552:v:0:22000:168:144:0:0 -Astra Vision 1:12552:v:0:22000:168:145:0:0 -Astra Vision 1:12552:v:0:22000:168:146:0:0 -Astra Vision 1:12552:v:0:22000:168:147:0:0 -Astra Vision 1:12552:v:0:22000:168:148:0:0 -Astra Vision 1:12552:v:0:22000:168:149:0:0 -Astra Vision 1:12552:v:0:22000:168:150:0:0 -RTL Tele Letzebuerg:12552:v:0:22000:168:144:0:0 -Astra Mosaic:12552:v:0:22000:175:176:0:0 -MHP test:12604:h:0:22000:5632:8191:0:0 -Bloomberg TV Spain:12610:v:0:22000:45:49:0:0 -AC 3 promo:12670:v:0:22000:308:256:0:0 -TV Polonia:10719:v:1:27500:163:92:0:0 -Credit Agricole:10834:v:1:27500:5321:5333:0:0 -La Chaine Parlementaire:10873:v:1:27500:1020:1030:0:0 -TMT:10892:v:1:27500:163:92:0:0 -Multivision Accueil:10911:v:1:27500:320:330:0:0 -RTL:11054:h:1:27500:160:80:0:0 -VOX:11054:h:1:27500:500:501:0:0 -Sat 1 A:11054:h:1:27500:511:512:0:0 -RTL II Austria:11054:h:1:27500:520:521:0:0 -ZDF:11054:h:1:27500:570:571:0:0 -K-TV:11054:h:1:27500:580:581:0:0 -Sat 1 Schweiz:11604:v:1:27500:101:102:0:0 -MKTV:11623:v:1:27500:222:242:0:0 -Olisat TV Promo:11623:v:1:27500:226:246:0:0 -Bloomberg TV Germany:11642:v:1:27500:1460:1420:0:0 -Bloomberg TV UK:11642:v:1:27500:1560:1520:0:0 -SAT 7:11642:v:1:27500:1660:1620:0:0 -Multivision 1:11662:v:1:27500:120:130:0:0 -Dubai EDTV:11746:v:1:27500:4130:4131:0:0 -Dubai Sport Channel:11746:v:1:27500:4386:4387:0:0 -Dubai Business Channel:11746:v:1:27500:4642:4643:0:0 -Dubai EDTV:11746:v:1:27500:4898:4899:0:0 -ERT Sat:11823:v:1:27500:521:740:0:0 -TVL:11843:v:1:27500:2441:2442:0:0 -Team TV :11881:v:1:27500:2305:2306:0:0 -ART Europe:12015:v:1:27500:164:96:0:0 -ESC 2:12015:v:1:27500:166:104:0:0 -ART Iqra:12015:v:1:27500:168:112:0:0 -Vacaciones TV:12092:v:1:27500:4112:4113:0:0 -TvL - TV Locale:12092:v:1:27500:4160:4161:0:0 -TVE Internacional:12092:v:1:27500:4208:4209:0:0 -TVG - TV de Galicia :12092:v:1:27500:4224:4225:0:0 -La Cadena Del Milagro:12092:v:1:27500:4368:4369:0:0 -Fiesta:12092:v:1:27500:4432:4433:0:0 -Visions Europe:12092:v:1:27500:4416:4417:0:0 -SateliTV/TV Sex Channel:12092:v:1:27500:4480:4481:0:0 -Krisma:12111:v:1:27500:200:201:0:0 -NTV:12111:v:1:27500:210:211:0:0 -Armenia TV 1:12111:v:1:27500:240:241:0:0 -SMAU Channel :12111:v:1:27500:260:261:0:0 -JSC - Al Jazeera Satellite Ch :12111:v:1:27500:270:271:0:0 -Il Tirreno Sat:12111:v:1:27500:280:301:0:0 -CCTV 4:12169:h:1:27500:516:690:0:0 -Kanali Vuolis:12169:v:1:27500:517:700:0:0 -Nova Promo:12169:v:1:27500:521:740:0:0 -ERT Sat :12188:v:1:27500:514:652:0:0 -Kanali Voulis:12188:v:1:27500:515:653:0:0 -OTE Promo:12188:v:1:27500:517:655:0:0 -TV 5 Europe:12245:v:1:27500:121:131:0:0 -Fashion TV:12245:h:1:27500:123:133:0:0 -TV Ajara:12245:v:1:27500:127:137:0:0 -Telekom TV:12265:v:1:27500:1460:1420:0:0 -SLO-TV1:12303:v:1:27500:200:201:0:0 -Polonia 1:12303:v:1:27500:205:206:0:0 -Super 1:12303:v:1:27500:207:208:0:0 -Sicilia Internacional:12303:v:1:27500:210:211:0:0 -SicilSat:12303:v:1:27500:225:226:0:0 -TBNE Italy:12303:v:1:27500:230:231:0:0 -Countdown TV:12303:v:1:27500:235:236:0:0 -Napoli International:12303:v:1:27500:240:241:0:0 -Magic TV:12303:v:1:27500:245:246:0:0 -TEST:12341:v:1:27500:165:108:0:0 -Colour Bars:12380:v:1:27500:3022:3032:0:0 -Tele 24 :12380:v:1:27500:3023:3033:0:0 -Abu Dhabi TV :12380:v:1:27500:3024:3034:0:0 -LCA:12380:v:1:27500:3025:3035:0:0 -RTV Montenegro:12380:v:1:27500:3026:3036:0:0 -SRG SSR Sat Access :12399:v:1:27500:165:98:0:0 -Jam-e-Jam Network 1 (IRIB 1):12437:v:1:27500:160:80:0:0 -Jam-e-Jam Network 2 (IRIB 2):12437:v:1:27500:161:82:0:0 -Sahar University Network:12437:v:1:27500:162:84:0:0 -Maharishi Open University:12476:v:1:27500:42:43:0:0 -Europe by Satellite:12476:h:1:27500:101:201:0:0 -Pink Backup:12476:v:1:27500:308:256:0:0 -Mizik Tropical:12476:h:1:27500:435:436:0:0 -TLI info card:12476:h:1:27500:771:768:0:0 -Liberty TV:12476:h:1:27500:941:942:0:0 -HRT TV 1:12520:v:1:27500:100:101:0:0 -HRT National:12520:v:1:27500:107:108:0:0 -BVN TV:12520:v:1:27500:210:211:0:0 -Sicilia International:12520:v:1:27500:501:502:0:0 -Sardegna Uno:12520:v:1:27500:503:504:0:0 -TGRT:12520:v:1:27500:505:506:0:0 -Euro Mediterraneo:12520:v:1:27500:510:511:0:0 -WWWTravel TV:12540:v:1:27500:1180:1183:0:0 -WWWTravel TV:12540:v:1:27500:1180:1184:0:0 -WWWTravel TV:12540:v:1:27500:1180:1185:0:0 -MBC:12597:v:1:27500:160:80:0:0 -SIMA-YEH-MOGHAVEMENT:12597:v:1:27500:161:84:0:0 -NITV (National Iran TV ):12597:v:1:27500:163:92:0:0 -BET International:12597:v:1:27500:167:108:0:0 -JSTV 2 Info Card:12597:v:1:27500:2011:2012:0:0 -EuroNews French:12597:v:1:27500:2221:2231:0:0 -EuroNews English:12597:v:1:27500:2221:2232:0:0 -EuroNews German:12597:v:1:27500:2221:2233:0:0 -EuroNews Italian:12597:v:1:27500:2221:2234:0:0 -EuroNews Spanish:12597:v:1:27500:2221:2235:0:0 -EuroNews Portuguese:12597:v:1:27500:2221:2236:0:0 -EuroNews English:12597:v:1:27500:2221:2237:0:0 -Canal Agro Rual:12597:v:1:27500:2321:2331:0:0 -MMO9:12616:v:1:27500:2561:2562:0:0 -Dubai Sport Channel:12654:v:1:27500:1060:1020:0:0 -Sharjah TV :12654:v:1:27500:1160:1120:0:0 -Qatar TV:12654:v:1:27500:1260:1220:0:0 -Saudi Channel 1 :12654:v:1:27500:1360:1320:0:0 -Kuwait Space Channel :12654:v:1:27500:1460:1420:0:0 -Libya TV:12654:v:1:27500:1560:1520:0:0 -Sudan TV:12654:v:1:27500:1660:1620:0:0 -Oman TV:12654:v:1:27500:1760:1720:0:0 -Jordan Satellite Channel:12654:v:1:27500:1860:1820:0:0 -Iraq Satellite Channel:12654:v:1:27500:1960:1920:0:0 -Thai TV 5 Global Network :12673:v:1:27500:200:201:0:0 -Telemarket:12673:v:1:27500:350:351:0:0 -Evision:12673:v:1:27500:360:361:0:0 -Onyx TV:12692:v:1:27500:161:84:0:0 -EWTN:10723:v:1:29900:1001:1201:0:0 -Test (Newslynx):10723:v:1:29900:1002:1202:0:0 -MTA International:10723:v:1:29900:1004:1204:0:0 -J TV Test:10992:v:1:27500:2436:2437:0:0 -Bloomberg UK Test Card:11242:v:1:27500:162:88:0:0 -Channel SUN TV:11604:h:1:27500:111:112:0:0 -Olisat TLC test card:11623:v:1:27500:225:245:0:0 -Channel SUN Test (KBT):11623:v:1:27500:229:249:0:0 -Rai way 3 test card:11766:v:1:27500:164:96:0:0 -Rai way 1 test card:11766:v:1:27500:515:653:0:0 -Rai way 2 test card:11766:v:1:27500:516:654:0:0 -Test (Local Satellite):12092:v:1:27500:4176:4177:0:0 -Retelsat Test:12092:v:1:27500:4464:4465:0:0 -AIT Test Card:12111:v:1:27500:220:221:0:0 -Fucino Test Card:12111:v:1:27500:230:231:0:0 -PGM1:12230:v:1:13396:1160:1121:0:0 diff --git a/Tools/dvbrc2vdr/dvbrc.hotbird b/Tools/dvbrc2vdr/dvbrc.hotbird deleted file mode 100644 index 8717fdb..0000000 --- a/Tools/dvbrc2vdr/dvbrc.hotbird +++ /dev/null @@ -1,63 +0,0 @@ -LNB ID 1 TYPE 1 LOF1 9750000 LOF2 10600000 SLOF 11800000 DISEQCNR 1 - SAT ID 1 NAME "Hotbird" LNBID 1 FMIN 12015000 FMAX 12100000 - TRANSPONDER ID 119c8 SATID 0001 TYPE 1 FREQ 12341001 POL V SRATE 27500000 FEC 8 - CHANNEL ID 0 NAME "T+ BIANCO" SATID ffffff TPID 119c8 SID 2b5d TYPE 1 VPID a0 APID 50 APID 51 TTPID 2c PCRPID a0 - CHANNEL ID 1 NAME "T+ NERO" SATID ffffff TPID 119c8 SID 2b5f TYPE 1 VPID a1 APID 54 APID 55 TTPID 2d PCRPID a1 - CHANNEL ID 2 NAME "T+ GRIGIO" SATID ffffff TPID 119c8 SID 2b61 TYPE 1 VPID a2 APID 58 APID 59 PCRPID a2 - CHANNEL ID 3 NAME "R4" SATID ffffff TPID 119c8 SID 18 TYPE 1 VPID a3 PCRPID a3 - CHANNEL ID 4 NAME "16:9 TELE+" SATID ffffff TPID 119c8 SID 2b63 TYPE 1 VPID a4 APID 60 APID 61 PCRPID a4 - CHANNEL ID 5 NAME "VETRINA D+" SATID ffffff TPID 119c8 SID 2b65 TYPE 1 PCRPID a5 - CHANNEL ID 6 NAME "R/RAGAZZI RAISAT" SATID ffffff TPID 119c8 SID 2b67 TYPE 1 PCRPID a6 - TRANSPONDER ID 11a90 SATID 0001 TYPE 1 FREQ 12341001 POL V SRATE 27500000 FEC 8 - CHANNEL ID 7 NAME "PALCO" SATID ffffff TPID 11a90 SID 2bc1 TYPE 1 PCRPID af - CHANNEL ID 8 NAME "INFO" SATID ffffff TPID 11a90 SID 2bc3 TYPE 1 VPID a1 PCRPID af - CHANNEL ID 9 NAME "P1" SATID ffffff TPID 11a90 SID 2bc5 TYPE 1 VPID a2 APID 58 APID 59 PCRPID af - CHANNEL ID a NAME "P2" SATID ffffff TPID 11a90 SID 2bc7 TYPE 1 VPID a3 APID 5c APID 5d PCRPID af - CHANNEL ID b NAME "P3" SATID ffffff TPID 11a90 SID 2bc9 TYPE 1 VPID a4 APID 60 APID 61 PCRPID af - CHANNEL ID c NAME "P4" SATID ffffff TPID 11a90 SID 2bcb TYPE 1 VPID a5 APID 64 APID 65 PCRPID af - CHANNEL ID d NAME "P5" SATID ffffff TPID 11a90 SID 2bcd TYPE 1 VPID a6 APID 68 APID 69 PCRPID af - CHANNEL ID e NAME "P6" SATID ffffff TPID 11a90 SID 2bcf TYPE 1 VPID a7 APID 6c APID 6d PCRPID af - TRANSPONDER ID 11964 SATID 0001 TYPE 1 FREQ 12015000 POL H SRATE 27500000 FEC 8 - CHANNEL ID f NAME "ART VARIETY" SATID ffffff TPID 11964 SID 19a TYPE 1 VPID a0 PCRPID a0 - CHANNEL ID 10 NAME "ART CHILDREN" SATID ffffff TPID 11964 SID 1a4 TYPE 1 VPID a1 PCRPID a1 - CHANNEL ID 11 NAME "ART MOVIES" SATID ffffff TPID 11964 SID 1ae TYPE 1 VPID a2 PCRPID a2 - CHANNEL ID 12 NAME "ART MUSIC" SATID ffffff TPID 11964 SID 1b8 TYPE 1 VPID a3 PCRPID a3 - CHANNEL ID 13 NAME "ART EUROPE" SATID ffffff TPID 11964 SID 1c2 TYPE 0 VPID a4 PCRPID a4 - CHANNEL ID 14 NAME "LBC EUROPE" SATID ffffff TPID 11964 SID 1cc TYPE 1 VPID a5 PCRPID a5 - CHANNEL ID 15 NAME "EGYPT SAT. CH. 2" SATID ffffff TPID 11964 SID 1d6 TYPE 1 VPID a6 PCRPID a6 - CHANNEL ID 16 NAME "ART SPORT" SATID ffffff TPID 11964 SID 1d8 TYPE 1 VPID a7 PCRPID a7 - CHANNEL ID 17 NAME "IQRA" SATID ffffff TPID 11964 SID 1da TYPE 1 VPID a8 PCRPID a8 - TRANSPONDER ID 11a2c SATID 0001 TYPE 1 FREQ 12341001 POL H SRATE 27500000 FEC 8 - CHANNEL ID ffffffff NAME "CNN" SATID ffffff TPID 11a2c SID 2ced TYPE 1 PCRPID af - CHANNEL ID ffffffff NAME "BBC" SATID ffffff TPID 11a2c SID 2cef TYPE 1 PCRPID af - CHANNEL ID ffffffff NAME "BLOOMBERG" SATID ffffff TPID 11a2c SID 2cf1 TYPE 1 PCRPID af - CHANNEL ID ffffffff NAME "CNBC" SATID ffffff TPID 11a2c SID 2cf3 TYPE 1 PCRPID af - CHANNEL ID ffffffff NAME "SKYNews" SATID ffffff TPID 11a2c SID 2cf5 TYPE 1 PCRPID af - CHANNEL ID ffffffff NAME "TST2" SATID ffffff TPID 11a2c SID 2cf7 TYPE 1 PCRPID af - CHANNEL ID ffffffff NAME "TV5" SATID ffffff TPID 11a2c SID 2cf9 TYPE 1 PCRPID af - CHANNEL ID ffffffff NAME "EPG" SATID ffffff TPID 11a2c SID 2cfb TYPE 1 PCRPID af - CHANNEL ID ffffffff NAME "CNN" SATID ffffff TPID 11a2c SID 2cfd TYPE 1 VPID a0 APID 50 PCRPID af - CHANNEL ID ffffffff NAME "CNBC" SATID ffffff TPID 11a2c SID 2cff TYPE 1 VPID a3 APID 5c PCRPID af - CHANNEL ID ffffffff NAME "TV5" SATID ffffff TPID 11a2c SID 2d01 TYPE 1 VPID a6 APID 68 PCRPID af - CHANNEL ID ffffffff NAME "BBC WORLD" SATID ffffff TPID 11a2c SID 2d03 TYPE 1 VPID a1 APID 54 PCRPID af - CHANNEL ID ffffffff SATID ffffff TPID 11a2c SID 2d4b TYPE 0 PCRPID 1ffe - CHANNEL ID ffffffff SATID ffffff TPID 11a2c SID 26fc TYPE 0 PCRPID 1ffe - CHANNEL ID ffffffff SATID ffffff TPID 11a2c SID 26fd TYPE 0 PCRPID 1ffe - TRANSPONDER ID 11af4 SATID 0001 TYPE 1 FREQ 12091901 POL H SRATE 27500000 FEC 8 - CHANNEL ID 27 NAME "Bolsa" SATID ffffff TPID 11af4 SID 222e TYPE 0 - CHANNEL ID 28 NAME "Testw" SATID ffffff TPID 11af4 SID 222f TYPE 0 - CHANNEL ID 29 NAME "SIRE" SATID ffffff TPID 11af4 SID 2230 TYPE 0 PCRPID 102 - CHANNEL ID 2a NAME "Telesierra" SATID ffffff TPID 11af4 SID 2200 TYPE 0 VPID 1040 APID 1041 PCRPID 1040 - CHANNEL ID 2b NAME "vtv" SATID ffffff TPID 11af4 SID 21fd TYPE 0 VPID 1010 APID 1012 APID 1011 APID 1013 PCRPID 1010 - CHANNEL ID 2c NAME "Satisfaction" SATID ffffff TPID 11af4 SID 2202 TYPE 0 VPID 1060 APID 1061 PCRPID 1060 - CHANNEL ID 2d NAME "C. Milagro" SATID ffffff TPID 11af4 SID 2207 TYPE 0 VPID 1110 APID 1111 PCRPID 1110 - CHANNEL ID 2e NAME "Fiesta" SATID ffffff TPID 11af4 SID 2210 TYPE 0 VPID 1150 APID 1151 APID 1152 PCRPID 1150 - CHANNEL ID 2f NAME "TVE Internacional" SATID ffffff TPID 11af4 SID 2203 TYPE 0 VPID 1070 APID 1071 PCRPID 1070 - CHANNEL ID 30 NAME "TV Galicia" SATID ffffff TPID 11af4 SID 2204 TYPE 0 APID 1090 PCRPID 1090 - CHANNEL ID 31 NAME "Radio Gallega" SATID ffffff TPID 11af4 SID 2205 TYPE 0 APID 1090 PCRPID 1090 - CHANNEL ID 32 NAME "Retelsat" SATID ffffff TPID 11af4 SID 2212 TYPE 1 VPID 1170 APID 1171 PCRPID 1170 - CHANNEL ID 33 NAME "Musicam 1" SATID ffffff TPID 11af4 SID 2209 TYPE 1 APID 1136 PCRPID 1136 - CHANNEL ID 34 NAME "Musicam 2" SATID ffffff TPID 11af4 SID 220a TYPE 1 APID 1131 PCRPID 1131 - CHANNEL ID 35 NAME "Musicam 3" SATID ffffff TPID 11af4 SID 220b TYPE 1 APID 1136 PCRPID 1136 - CHANNEL ID 36 NAME "Musicam 4" SATID ffffff TPID 11af4 SID 220c TYPE 1 APID 1136 PCRPID 1136 - CHANNEL ID 37 NAME "Musicam 5" SATID ffffff TPID 11af4 SID 220d TYPE 1 APID 1136 PCRPID 1136 diff --git a/Tools/dvbrc2vdr/dvbrc2vdr.c b/Tools/dvbrc2vdr/dvbrc2vdr.c deleted file mode 100644 index 243ddc0..0000000 --- a/Tools/dvbrc2vdr/dvbrc2vdr.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * * dvbrc2vdr.c: Converts 'xtvrc' files to 'vdr' channel format - * * - * * Copyright (C) 2000 Plamen Ganev - * * - * * This program is free software; you can redistribute it and/or - * * modify it under the terms of the GNU General Public License - * * as published by the Free Software Foundation; either version 2 - * * of the License, or (at your option) any later version. - * * - * * This program is distributed in the hope that it will be useful, - * * but WITHOUT ANY WARRANTY; without even the implied warranty of - * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * * GNU General Public License for more details. - * * - * * You should have received a copy of the GNU General Public License - * * along with this program; if not, write to the Free Software - * * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * * Or, point your browser to http://www.gnu.org/copyleft/gpl.html - * * - * * The author can be reached at pganev@comm.it - * * - * */ - - -#include <stdio.h> -#include <ctype.h> -#include <string.h> -#include <stdlib.h> - -#define MAX_LINE_LEN 1024 -#define MAX_NAME 100 -#define TOKS ": \n\r" -#define NAMETOKS ":\n\r" - -typedef struct { - char Name[MAX_NAME+1]; - int freq; - int color, hue, bright, saturation ; - int nitv, input ; - int pol, srate, fec, vpid, apid, lnbnum, type; - int sid, pcrpid ; -} CHANNEL_DATA ; - -void strupr( char *s ){ - while ( s && *s ){ - *s = toupper(*s); - s++; - } -} - -/* Warning: This function uses the last strtol string! */ -int GetTpInfo( CHANNEL_DATA *channel ) -{ - // s is: ID x SATID x TYPE x FREQ x POL H/V SRATE x FEC x - char *p ; - - p = strtok( NULL, TOKS ) ; /* Skip ID */ - p = strtok( NULL, TOKS ) ; /* Skip x */ - p = strtok( NULL, TOKS ) ; /* Skip SatId */ - p = strtok( NULL, TOKS ) ; /* Skip x */ - p = strtok( NULL, TOKS ) ; /* Skip Type */ - p = strtok( NULL, TOKS ) ; /* Skip x */ - p = strtok( NULL, TOKS ) ; /* Skip Freq */ - p = strtok( NULL, TOKS ) ; /* Get Freq */ - channel->freq = atol( p ) / 1000 ; - p = strtok( NULL, TOKS ) ; /* Skip Pol */ - p = strtok( NULL, TOKS ) ; /* Get H/V */ - channel->pol = (*p=='V') ? 1 : 0 ; - p = strtok( NULL, TOKS ) ; /* Skip SRATE */ - p = strtok( NULL, TOKS ) ; /* Get srate */ - channel->srate = atol(p) / 1000 ; /* Convert SRATE */ - return 0; -} - -/* Warning: This function uses the last strtol string! */ -int GetChInfo( CHANNEL_DATA *channel ) -{ - /* s is: ID x NAME "name" SATID x TPID x SID x TYPE x VPID x APID x */ - char *p, *q ; - - p = strtok( NULL, TOKS ) ; - while ( p ) { - if ( !strcmp( p, "ID" )) { - p = strtok( NULL, TOKS ) ; - } else if ( !strcmp( p, "NAME")) { - while ( *p++ ); /* Jump to end of "NAME" */ - p++ ; /* One More */ - while ( *p == '"' ) p++ ; /* Skip the " */ - q = channel->Name ; - while ( *p != '"' ) - if ( *p == ':' ) - *q++ = '|', p++ ; - else - *q++ = *p++ ; /* Copy the name */ - *q = 0 ; - p++ ; - p = strtok( p, TOKS ) ; - channel->apid = 8190; - channel->vpid = 8190; - channel->pcrpid = 0 ; - channel->sid = 0; - } else if ( !strcmp( p, "VPID")) { - p = strtok( NULL, TOKS ) ; - channel->vpid = strtol( p, NULL, 16 ) ; - p = strtok( NULL, TOKS ) ; - } else if ( !strcmp( p, "APID")) { - p = strtok( NULL, TOKS ) ; - channel->apid = strtol( p, NULL, 16 ) ; - p = strtok( NULL, TOKS ) ; - } else if ( !strcmp( p, "SID")) { - p = strtok( NULL, TOKS ) ; - channel->sid = strtol( p, NULL, 16 ) ; - p = strtok( NULL, TOKS ) ; - } else if ( !strcmp( p, "PCRPID")) { - p = strtok( NULL, TOKS ) ; - channel->pcrpid = strtol( p, NULL, 16 ) ; - p = strtok( NULL, TOKS ) ; - } else { - p = strtok( NULL, TOKS ) ; - } - } - return 1; -} - -int ReadChannel( FILE *f, CHANNEL_DATA *channel ) { - static char s[MAX_LINE_LEN+1]; - char *p; - - while (fgets( s, MAX_LINE_LEN, f )){ - p = strtok( s, TOKS ) ; - strupr( p ) ; - - if ( !strcmp( p, "TRANSPONDER" )){ - GetTpInfo( channel ) ; - } else if ( !strcmp( p, "CHANNEL" ) ) { - GetChInfo( channel ) ; - return 1 ; - } - } - return 0 ; -} - -int main ( int argc, char *argv[] ){ - FILE *f, *fo ; - int cnt = 0; - CHANNEL_DATA channel ; - - if ( argc != 3 ){ - printf("USAGE: %s <dvbrc file> <vdr file>\n\n", argv[0] ) ; - return 0; - } - - if ( !(f=fopen(argv[1], "rt"))){ - printf("Can't open %s for reading\n\n", argv[1]); - return 0; - } - - if ( !(fo=fopen(argv[2], "wt"))){ - printf("Can't open %s for writing\n\n", argv[2]); - return 0; - } - - while ( ReadChannel( f, &channel ) ) { - cnt++; - fprintf(fo, "%s:%d:%c:%d:%d:%d:%d:%d:%d\n", - channel.Name , - channel.freq , - channel.pol ? 'v' : 'h' , - 1, //channel.lnbnum , - channel.srate , - channel.vpid , - channel.apid , - 0, //channel.type , - channel.sid ) ; - } - - printf( "%d channels read.\n\n", cnt ) ; - - fclose(f); - fclose(fo); - return 1; -} diff --git a/Tools/dvbrc2vdr/hotbird2 b/Tools/dvbrc2vdr/hotbird2 deleted file mode 100644 index 39c7b87..0000000 --- a/Tools/dvbrc2vdr/hotbird2 +++ /dev/null @@ -1,878 +0,0 @@ -LNB ID 0 TYPE 1 LOF1 9750000 LOF2 10600000 SLOF 11800000 DISEQCNR 0 - SAT ID 0 NAME "HotBird" LNBID 0 FMIN 10700000 FMAX 12800000 - TRANSPONDER ID 2af8 SATID 0000 TYPE 1 FREQ 10719000 POL V SRATE 27500000 FEC 8 - CHANNEL ID 0 NAME "DISCOVERY" SATID ffffff TPID 2af8 SID 1132 TYPE 1 PCRPID a1 - CHANNEL ID 1 NAME "RTL7" SATID ffffff TPID 2af8 SID 1133 TYPE 1 PCRPID a2 - CHANNEL ID 2 NAME "TV POLONIA" SATID ffffff TPID 2af8 SID 1134 TYPE 1 PCRPID a3 - CHANNEL ID 3 NAME "EUROSPORT" SATID ffffff TPID 2af8 SID 1135 TYPE 1 PCRPID a4 - CHANNEL ID 4 NAME "PLANETE" SATID ffffff TPID 2af8 SID 1136 TYPE 1 PCRPID a5 - CHANNEL ID 5 NAME "SEASONS" SATID ffffff TPID 2af8 SID 1137 TYPE 1 PCRPID a6 - CHANNEL ID 6 NAME "VIVA Polska" SATID ffffff TPID 2af8 SID 1138 TYPE 1 PCRPID a7 - CHANNEL ID 7 NAME "MULTIMUSIC 4" SATID ffffff TPID 2af8 SID 1158 TYPE 1 APID 79 APID 7a APID 7b PCRPID 79 - CHANNEL ID 8 NAME "EPG" SATID ffffff TPID 2af8 SID 1162 TYPE 1 PCRPID a1 - CHANNEL ID 9 NAME "CYFRA+ GRY" SATID ffffff TPID 2af8 SID 116c TYPE 1 - TRANSPONDER ID 0101 SATID 0000 TYPE 1 FREQ 10722000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 2bc0 SATID 0000 TYPE 1 FREQ 0 POL V SRATE 27500000 FEC 8 - CHANNEL ID a NAME "Guide LC" SATID ffffff TPID 2bc0 SID 7d0 TYPE 0 APID 1f5e PCRPID 1f5e - CHANNEL ID b NAME "Cinestar 1" SATID ffffff TPID 2bc0 SID 4b1 TYPE 1 VPID 78 APID 82 PCRPID 78 - CHANNEL ID c NAME "Cinestar 2" SATID ffffff TPID 2bc0 SID 4b2 TYPE 1 VPID dc APID e6 PCRPID dc - CHANNEL ID d NAME "Cinetoile" SATID ffffff TPID 2bc0 SID 4b3 TYPE 1 VPID 140 APID 14a PCRPID 140 - CHANNEL ID e NAME "Shopping Avenue" SATID ffffff TPID 2bc0 SID 4b4 TYPE 1 VPID 1a4 APID 1ae PCRPID 1a4 - CHANNEL ID f NAME "Série Club " SATID ffffff TPID 2bc0 SID 4b5 TYPE 1 VPID 208 APID 212 PCRPID 208 - CHANNEL ID 10 NAME "FUN TV" SATID ffffff TPID 2bc0 SID 4b6 TYPE 1 VPID 26c APID 276 PCRPID 26c - CHANNEL ID 11 NAME "Teva" SATID ffffff TPID 2bc0 SID 4b7 TYPE 1 VPID 2d0 APID 2da PCRPID 2d0 - CHANNEL ID 12 NAME "M6 Music" SATID ffffff TPID 2bc0 SID 4b8 TYPE 1 VPID 334 APID 33e PCRPID 334 - CHANNEL ID 13 NAME "Club Téléachat" SATID ffffff TPID 2bc0 SID 4b9 TYPE 1 VPID 398 APID 3a2 PCRPID 398 - TRANSPONDER ID 0103 SATID 0000 TYPE 1 FREQ 10775000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 2c88 SATID 0000 TYPE 1 FREQ 0 POL V SRATE 27500000 FEC 8 - CHANNEL ID 14 NAME "INFOSPORT" SATID ffffff TPID 2c88 SID 579 TYPE 1 VPID 78 APID 82 PCRPID 78 - CHANNEL ID 15 NAME "Régions" SATID ffffff TPID 2c88 SID 57a TYPE 1 VPID dc APID e6 PCRPID dc - CHANNEL ID 16 NAME "Mezzo" SATID ffffff TPID 2c88 SID 57b TYPE 1 VPID 140 APID 14a PCRPID 140 - CHANNEL ID 17 NAME "01 01 15 97" SATID ffffff TPID 2c88 SID 5cb TYPE 0 - CHANNEL ID 18 NAME "01 01 17 97" SATID ffffff TPID 2c88 SID 5cd TYPE 0 - CHANNEL ID 19 NAME "01 02 17 97" SATID ffffff TPID 2c88 SID 5ce TYPE 0 - CHANNEL ID 1a NAME "01 02 15 97" SATID ffffff TPID 2c88 SID 5d0 TYPE 0 - CHANNEL ID 1b NAME "01 02 15 96" SATID ffffff TPID 2c88 SID 5d1 TYPE 0 - CHANNEL ID 1c NAME "01 03 17 10" SATID ffffff TPID 2c88 SID 5d2 TYPE 0 - CHANNEL ID 1d NAME "01 03 15 10" SATID ffffff TPID 2c88 SID 5d3 TYPE 0 - CHANNEL ID 1e NAME "Festival" SATID ffffff TPID 2c88 SID 57c TYPE 1 VPID 1a4 APID 1ae PCRPID 1a4 - CHANNEL ID 1f NAME "HISTOIRE " SATID ffffff TPID 2c88 SID 57d TYPE 1 VPID 208 APID 212 PCRPID 208 - CHANNEL ID 20 NAME "Télétoon" SATID ffffff TPID 2c88 SID 57e TYPE 1 VPID 26c APID 276 PCRPID 26c - CHANNEL ID 21 NAME "Odyssée " SATID ffffff TPID 2c88 SID 57f TYPE 1 VPID 2d0 APID 2da PCRPID 2d0 - CHANNEL ID 22 NAME "France Musiques" SATID ffffff TPID 2c88 SID 58a TYPE 0 APID 33e PCRPID 33e - CHANNEL ID 23 NAME "Hector" SATID ffffff TPID 2c88 SID 58b TYPE 0 APID 33f PCRPID 33f - CHANNEL ID 24 NAME "FIP" SATID ffffff TPID 2c88 SID 58c TYPE 0 APID 340 PCRPID 340 - CHANNEL ID 25 NAME "France Inter" SATID ffffff TPID 2c88 SID 58d TYPE 0 APID 341 PCRPID 341 - CHANNEL ID 26 NAME "France Info" SATID ffffff TPID 2c88 SID 58e TYPE 0 APID 342 PCRPID 342 - CHANNEL ID 27 NAME "Elisa" SATID ffffff TPID 2c88 SID 58f TYPE 0 APID 343 PCRPID 343 - CHANNEL ID 28 NAME "France Culture" SATID ffffff TPID 2c88 SID 590 TYPE 0 APID 344 PCRPID 344 - CHANNEL ID 29 NAME "Radio Bleue" SATID ffffff TPID 2c88 SID 591 TYPE 0 APID 345 PCRPID 345 - CHANNEL ID 2a NAME "Le Mouv" SATID ffffff TPID 2c88 SID 592 TYPE 0 APID 346 PCRPID 346 - CHANNEL ID 2b NAME "TV5" SATID ffffff TPID 2c88 SID 581 TYPE 1 VPID 398 APID 3a2 PCRPID 398 - TRANSPONDER ID 2d50 SATID 0000 TYPE 1 FREQ 0 POL V SRATE 27500000 FEC 8 - CHANNEL ID 2c NAME "CENTRONICS" SATID ffffff TPID 2d50 SID 7d0 TYPE 0 - CHANNEL ID 2d NAME "FRANCE 2 " SATID ffffff TPID 2d50 SID 450 TYPE 1 VPID 140 PCRPID 140 - CHANNEL ID 2e NAME "FRANCE 3" SATID ffffff TPID 2d50 SID 452 TYPE 1 VPID 208 PCRPID 208 - CHANNEL ID 2f NAME "Crédit Agricole" SATID ffffff TPID 2d50 SID 14b5 TYPE 0 APID 14d5 PCRPID 14c9 - CHANNEL ID 30 NAME "tps foot" SATID ffffff TPID 2d50 SID 1450 TYPE 0 APID 146e PCRPID 146e - CHANNEL ID 31 NAME "LCI" SATID ffffff TPID 2d50 SID 44d TYPE 1 VPID 78 APID 82 PCRPID 78 - CHANNEL ID 32 NAME "EUROSPORT" SATID ffffff TPID 2d50 SID 44e TYPE 1 VPID dc APID e6 PCRPID dc - CHANNEL ID 33 NAME "FRANCE 2" SATID ffffff TPID 2d50 SID 44f TYPE 1 VPID 140 PCRPID 140 - CHANNEL ID 34 NAME "FRANCE 3" SATID ffffff TPID 2d50 SID 451 TYPE 1 VPID 208 PCRPID 208 - CHANNEL ID 35 NAME "I TELEVISION" SATID ffffff TPID 2d50 SID 454 TYPE 1 VPID 334 APID 33e PCRPID 334 - CHANNEL ID 36 NAME "TV Mail alphatest" SATID ffffff TPID 2d50 SID 1645 TYPE 0 - CHANNEL ID 37 NAME "CHAINE FI" SATID ffffff TPID 2d50 SID 14b4 TYPE 0 APID 14d2 APID 14d3 PCRPID 14d2 - CHANNEL ID 38 NAME "caisse d'épargne" SATID ffffff TPID 2d50 SID 14b7 TYPE 0 - CHANNEL ID 39 NAME "TV Mail" SATID ffffff TPID 2d50 SID 1644 TYPE 0 - TRANSPONDER ID 2e7c SATID 0000 TYPE 1 FREQ 10892000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 3a NAME "CANAL+" SATID ffffff TPID 2e7c SID 12c1 TYPE 1 PCRPID a0 - CHANNEL ID 3b NAME "CANAL+ ¯Ó£TY" SATID ffffff TPID 2e7c SID 12c2 TYPE 1 PCRPID a1 - CHANNEL ID 3c NAME "TMT" SATID ffffff TPID 2e7c SID 12c4 TYPE 1 PCRPID a3 - CHANNEL ID 3d NAME "ALE KINO!" SATID ffffff TPID 2e7c SID 12c5 TYPE 1 PCRPID a4 - CHANNEL ID 3e NAME "MINIMAX" SATID ffffff TPID 2e7c SID 12c6 TYPE 1 PCRPID a5 - CHANNEL ID 3f NAME "TVP 1" SATID ffffff TPID 2e7c SID 12c7 TYPE 1 PCRPID a6 - CHANNEL ID 40 NAME "TVP 2" SATID ffffff TPID 2e7c SID 12c8 TYPE 1 PCRPID a7 - CHANNEL ID 41 NAME "CANAL+ NIEBIESKI" SATID ffffff TPID 2e7c SID 12c9 TYPE 1 PCRPID a8 - CHANNEL ID 42 NAME "EPG" SATID ffffff TPID 2e7c SID 12f2 TYPE 1 TTPID 1f4 PCRPID a0 - TRANSPONDER ID 2ee0 SATID 0000 TYPE 1 FREQ 0 POL V SRATE 27500000 FEC 8 - CHANNEL ID 43 NAME "Multivision" SATID ffffff TPID 2ee0 SID 643 TYPE 0 VPID 140 PCRPID 140 - CHANNEL ID 44 NAME "Grand Classique" SATID ffffff TPID 2ee0 SID 672 TYPE 1 APID 33e PCRPID 33e - CHANNEL ID 45 NAME "Symphonies" SATID ffffff TPID 2ee0 SID 673 TYPE 1 APID 33f PCRPID 33f - CHANNEL ID 46 NAME "Baroque" SATID ffffff TPID 2ee0 SID 674 TYPE 1 APID 340 PCRPID 340 - CHANNEL ID 47 NAME "Opéra" SATID ffffff TPID 2ee0 SID 675 TYPE 1 APID 341 PCRPID 341 - CHANNEL ID 48 NAME "Contemporain" SATID ffffff TPID 2ee0 SID 676 TYPE 1 APID 342 PCRPID 342 - CHANNEL ID 49 NAME "Relaxation" SATID ffffff TPID 2ee0 SID 677 TYPE 1 APID 343 PCRPID 343 - CHANNEL ID 4a NAME "Blues" SATID ffffff TPID 2ee0 SID 678 TYPE 1 APID 344 PCRPID 344 - CHANNEL ID 4b NAME "Jazz" SATID ffffff TPID 2ee0 SID 679 TYPE 1 APID 345 PCRPID 345 - CHANNEL ID 4c NAME "Big Band" SATID ffffff TPID 2ee0 SID 67a TYPE 1 APID 346 PCRPID 346 - CHANNEL ID 4d NAME "Jazz Moderne" SATID ffffff TPID 2ee0 SID 67b TYPE 1 APID 347 PCRPID 347 - CHANNEL ID 4e NAME "Les Tubes Français" SATID ffffff TPID 2ee0 SID 67c TYPE 1 APID 348 PCRPID 348 - CHANNEL ID 4f NAME "RFO SAT" SATID ffffff TPID 2ee0 SID 641 TYPE 0 VPID 78 APID 82 PCRPID 78 - CHANNEL ID 50 NAME "Appli D1 LC" SATID ffffff TPID 2ee0 SID 690 TYPE 0 - CHANNEL ID 51 NAME "Cinefaz" SATID ffffff TPID 2ee0 SID 642 TYPE 1 VPID dc APID e6 PCRPID dc - CHANNEL ID 52 NAME "TurboPC" SATID ffffff TPID 2ee0 SID af1 TYPE 0 - CHANNEL ID 53 NAME "MTV2" SATID ffffff TPID 2ee0 SID 647 TYPE 1 VPID 2d0 APID 2da PCRPID 2d0 - CHANNEL ID 54 NAME "Rire et chansons" SATID ffffff TPID 2ee0 SID 65e TYPE 0 APID 3a2 PCRPID 3a2 - CHANNEL ID 55 NAME "Radio J" SATID ffffff TPID 2ee0 SID 65f TYPE 1 APID 3a3 PCRPID 3a3 - CHANNEL ID 56 NAME "Mosqueteiros" SATID ffffff TPID 2ee0 SID 660 TYPE 0 APID 3a4 PCRPID 3a4 - CHANNEL ID 57 NAME "Abysse" SATID ffffff TPID 2ee0 SID 661 TYPE 1 APID 3a5 PCRPID 3a5 - CHANNEL ID 58 NAME "RMC" SATID ffffff TPID 2ee0 SID 663 TYPE 1 APID 3a7 PCRPID 3a7 - CHANNEL ID 59 NAME "Radio Junior" SATID ffffff TPID 2ee0 SID 664 TYPE 0 APID 3a8 PCRPID 3a8 - CHANNEL ID 5a NAME "NETRADIO" SATID ffffff TPID 2ee0 SID 665 TYPE 0 APID 3a9 PCRPID 3a9 - CHANNEL ID 5b NAME "Nostalgie" SATID ffffff TPID 2ee0 SID 666 TYPE 0 APID 3aa PCRPID 3aa - CHANNEL ID 5c NAME "Skyrock" SATID ffffff TPID 2ee0 SID 667 TYPE 1 APID 3ab PCRPID 3ab - CHANNEL ID 5d NAME "Radio Coutoisie" SATID ffffff TPID 2ee0 SID 668 TYPE 0 APID 3ac PCRPID 3ac - CHANNEL ID 5e NAME "La Voix des Pays" SATID ffffff TPID 2ee0 SID 669 TYPE 0 APID 3ad PCRPID 3ad - CHANNEL ID 5f NAME "INFO EXPRESS" SATID ffffff TPID 2ee0 SID 157c TYPE 0 APID 159a PCRPID 159a - CHANNEL ID 60 NAME "METEO" SATID ffffff TPID 2ee0 SID 16a8 TYPE 0 APID 16c6 PCRPID 16c6 - CHANNEL ID 61 NAME "X X L" SATID ffffff TPID 2ee0 SID 1518 TYPE 1 - CHANNEL ID 62 NAME "Multivision Cinéma" SATID ffffff TPID 2ee0 SID 1c20 TYPE 0 - CHANNEL ID 63 NAME "Multivision Sport" SATID ffffff TPID 2ee0 SID 1c84 TYPE 0 TTPID 18fb - CHANNEL ID 64 NAME "Multivision Spectacle" SATID ffffff TPID 2ee0 SID 1ce8 TYPE 0 - TRANSPONDER ID 2f44 SATID 0000 TYPE 1 FREQ 12673000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 65 NAME "Test OTV8" SATID ffffff TPID 2f44 SID 1d67 TYPE 1 PCRPID e80 - CHANNEL ID 66 NAME "Test OTV9" SATID ffffff TPID 2f44 SID 1d68 TYPE 1 PCRPID e80 - CHANNEL ID 67 NAME "Test OTV10" SATID ffffff TPID 2f44 SID 1d69 TYPE 1 PCRPID e80 - CHANNEL ID 68 NAME "Test OTV11" SATID ffffff TPID 2f44 SID 1d6a TYPE 1 VPID 201 PCRPID 1ffe - CHANNEL ID 69 NAME "Test31" SATID ffffff TPID 2f44 SID 1d4d TYPE 1 VPID 200 APID 28a PCRPID 1ffe - CHANNEL ID 6a NAME "CNN" SATID ffffff TPID 2f44 SID 1d4e TYPE 1 VPID 201 APID 294 PCRPID 1ffe - CHANNEL ID 6b NAME "Q24" SATID ffffff TPID 2f44 SID 1d4f TYPE 0 VPID 202 APID 29e APID 29f APID 2a9 APID 2b3 PCRPID 1ffe - CHANNEL ID 6c NAME "Test34" SATID ffffff TPID 2f44 SID 1d50 TYPE 1 VPID 203 APID 2a8 PCRPID 1ffe - CHANNEL ID 6d NAME "Test35" SATID ffffff TPID 2f44 SID 1d51 TYPE 1 VPID 204 APID 2b2 PCRPID 1ffe - CHANNEL ID 6e NAME "Test OTV1" SATID ffffff TPID 2f44 SID 1d60 TYPE 1 PCRPID e80 - CHANNEL ID 6f NAME "Test OTV2" SATID ffffff TPID 2f44 SID 1d61 TYPE 1 PCRPID e80 - CHANNEL ID 70 NAME "Test OTV3" SATID ffffff TPID 2f44 SID 1d62 TYPE 1 PCRPID e80 - CHANNEL ID 71 NAME "Test OTV4" SATID ffffff TPID 2f44 SID 1d63 TYPE 1 PCRPID e80 - CHANNEL ID 72 NAME "Test OTV5" SATID ffffff TPID 2f44 SID 1d64 TYPE 1 PCRPID e80 - CHANNEL ID 73 NAME "Test OTV6" SATID ffffff TPID 2f44 SID 1d65 TYPE 1 PCRPID e80 - CHANNEL ID 74 NAME "Test OTV7" SATID ffffff TPID 2f44 SID 1d66 TYPE 1 PCRPID e80 - CHANNEL ID 75 SATID ffffff TPID 2f44 SID 1d74 TYPE 0 - CHANNEL ID 76 SATID ffffff TPID 2f44 SID 1d75 TYPE 0 - TRANSPONDER ID 0109 SATID 0000 TYPE 1 FREQ 11033000 POL V SRATE 27500000 FEC 8 - TRANSPONDER ID 010a SATID 0000 TYPE 1 FREQ 11054000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 3264 SATID 0000 TYPE 1 FREQ 11095910 POL H SRATE 27500000 FEC 8 - CHANNEL ID ffffffff NAME "Telekom TV" SATID ffffff TPID 3264 SID e7f TYPE 0 VPID 20 PCRPID 20 - CHANNEL ID ffffffff NAME "FantasticOverOpal" SATID ffffff TPID 3264 SID e80 TYPE 0 VPID 20 PCRPID 20 - CHANNEL ID ffffffff NAME "Gilat" SATID ffffff TPID 3264 SID e81 TYPE 0 VPID 20 PCRPID 20 - CHANNEL ID ffffffff NAME "Siemens TV" SATID ffffff TPID 3264 SID e84 TYPE 0 VPID 20 PCRPID 20 - CHANNEL ID ffffffff NAME "S-TV" SATID ffffff TPID 3264 SID e85 TYPE 0 VPID 20 PCRPID 20 - CHANNEL ID ffffffff NAME "Optibase Encoder" SATID ffffff TPID 3264 SID e86 TYPE 0 VPID 20 PCRPID 20 - TRANSPONDER ID 010c SATID 0000 TYPE 1 FREQ 11130000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 010d SATID 0000 TYPE 1 FREQ 11131000 POL V SRATE 27500000 FEC 8 - TRANSPONDER ID 010e SATID 0000 TYPE 1 FREQ 11196000 POL V SRATE 27500000 FEC 8 - TRANSPONDER ID 010f SATID 0000 TYPE 1 FREQ 11205000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 0110 SATID 0000 TYPE 1 FREQ 11242000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 012c SATID 0000 TYPE 1 FREQ 11095910 POL H SRATE 27500000 FEC 8 - CHANNEL ID 7d NAME "FantasticOverOpal" SATID ffffff TPID 12c SID e76 TYPE 0 PCRPID 201 - TRANSPONDER ID 004d SATID 0000 TYPE 1 FREQ 11303750 POL H SRATE 27500000 FEC 8 - CHANNEL ID ffffffff NAME "Deutsche Bank / T1" SATID ffffff TPID 4d SID 1 TYPE 1 VPID 488 PCRPID 488 - CHANNEL ID 7f NAME "Animal Planet" SATID ffffff TPID 4d SID a TYPE 1 VPID 488 PCRPID 488 - CHANNEL ID 80 NAME "Discovery E Europe-English" SATID ffffff TPID 4d SID 14 TYPE 1 VPID 4ec PCRPID 4ec - CHANNEL ID ffffffff NAME "Wuerth KG / T21" SATID ffffff TPID 4d SID 15 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 82 NAME "Discovery Italy" SATID ffffff TPID 4d SID 1e TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID ffffffff NAME "BTI / T31" SATID ffffff TPID 4d SID 1f TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 84 NAME "Discovery Russia" SATID ffffff TPID 4d SID 28 TYPE 1 VPID 5b4 PCRPID 5b4 - CHANNEL ID ffffffff NAME "K-TV (MetroMux) / T41" SATID ffffff TPID 4d SID 29 TYPE 1 VPID 7a8 PCRPID 7a8 - CHANNEL ID 86 NAME "Animal Planet EE" SATID ffffff TPID 4d SID 32 TYPE 1 VPID 618 PCRPID 618 - CHANNEL ID 87 NAME "Animal Planet - Russian" SATID ffffff TPID 4d SID 33 TYPE 1 VPID 618 PCRPID 618 - CHANNEL ID 88 NAME "Discovery Netherlands" SATID ffffff TPID 4d SID 3c TYPE 1 VPID 67c PCRPID 67c - CHANNEL ID ffffffff NAME "Q English" SATID ffffff TPID 4d SID 46 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 8a NAME "Travel and Adventure" SATID ffffff TPID 4d SID 50 TYPE 1 VPID 744 PCRPID 744 - CHANNEL ID 8b NAME "Travel and Adventure- Russian" SATID ffffff TPID 4d SID 51 TYPE 1 VPID 744 PCRPID 744 - CHANNEL ID 8c NAME "New DCP" SATID ffffff TPID 4d SID 12c TYPE 1 APID 4c4 PCRPID 4c4 - CHANNEL ID 8d NAME "CCP" SATID ffffff TPID 4d SID 12d TYPE 1 VPID 4ec PCRPID 4ec - CHANNEL ID ffffffff NAME "Deutsche Bank / T2" SATID ffffff TPID 4d SID 2 TYPE 1 VPID 4ec PCRPID 4ec - CHANNEL ID 93 NAME "Channel Three" SATID ffffff TPID 4d SID 3 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 94 NAME "Channel Four" SATID ffffff TPID 4d SID 4 TYPE 0 VPID 5b4 PCRPID 5b4 - CHANNEL ID 95 NAME "Channel Five" SATID ffffff TPID 4d SID 5 TYPE 0 VPID 618 PCRPID 618 - CHANNEL ID 96 NAME "Channel 6 = Sat 7 Arabic" SATID ffffff TPID 4d SID 6 TYPE 0 VPID 67c PCRPID 67c - CHANNEL ID 97 NAME "Channel Seven" SATID ffffff TPID 4d SID 7 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 98 NAME "Q German" SATID ffffff TPID 4d SID 47 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 99 NAME "Q French" SATID ffffff TPID 4d SID 48 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 9a NAME "Q Dutch" SATID ffffff TPID 4d SID 49 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 1b8 NAME "DTAG / T11" SATID ffffff TPID 4d SID b TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1b9 NAME "DTAG 50 / T12" SATID ffffff TPID 4d SID c TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1ba NAME "Telekom TV" SATID ffffff TPID 4d SID d TYPE 1 VPID 5b4 PCRPID 5b4 - CHANNEL ID 1bb NAME "Gerling / T26" SATID ffffff TPID 4d SID 1a TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1bc NAME "Hornbach-D / T36" SATID ffffff TPID 4d SID 24 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1bd NAME "Hornbach-NL / T38" SATID ffffff TPID 4d SID 26 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1be NAME "Hornbach-CZ / T39" SATID ffffff TPID 4d SID 27 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1bf NAME "Testkanal" SATID ffffff TPID 4d SID 63 TYPE 0 VPID 67c PCRPID 67c - CHANNEL ID 1c0 NAME "KENCAST" SATID ffffff TPID 4d SID 6f TYPE 0 PCRPID 42e - TRANSPONDER ID 0113 SATID 0000 TYPE 1 FREQ 11338000 POL V SRATE 27500000 FEC 8 - TRANSPONDER ID 0114 SATID 0000 TYPE 1 FREQ 11371000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 0115 SATID 0000 TYPE 1 FREQ 11457000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 0116 SATID 0000 TYPE 1 FREQ 11464000 POL V SRATE 27500000 FEC 8 - TRANSPONDER ID 3c8c SATID 0000 TYPE 1 FREQ 11604100 POL H SRATE 27500000 FEC 8 - CHANNEL ID 8e NAME "SAT.1 CH" SATID ffffff TPID 3c8c SID 259 TYPE 0 VPID 65 APID 66 TTPID 69 PCRPID 69 - CHANNEL ID 8f NAME "KBT Channel SUN" SATID ffffff TPID 3c8c SID 25b TYPE 0 VPID 6f APID 70 PCRPID 6f - CHANNEL ID 90 NAME "big FM" SATID ffffff TPID 3c8c SID 25c TYPE 0 APID 71 PCRPID 71 - CHANNEL ID 91 NAME "Event" SATID ffffff TPID 3c8c SID 25a TYPE 0 VPID a0 APID a1 PCRPID a0 - TRANSPONDER ID 0118 SATID 0000 TYPE 1 FREQ 11623000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 004d SATID 0000 TYPE 1 FREQ 11642500 POL H SRATE 27500000 FEC 8 - CHANNEL ID ffffffff NAME "Deutsche Bank / T1" SATID ffffff TPID 4d SID 1 TYPE 1 VPID 488 PCRPID 488 - CHANNEL ID 7f NAME "Animal Planet" SATID ffffff TPID 4d SID a TYPE 1 VPID 488 PCRPID 488 - CHANNEL ID 80 NAME "Discovery E Europe-English" SATID ffffff TPID 4d SID 14 TYPE 1 VPID 4ec PCRPID 4ec - CHANNEL ID ffffffff NAME "Wuerth KG / T21" SATID ffffff TPID 4d SID 15 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 82 NAME "Discovery Italy" SATID ffffff TPID 4d SID 1e TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID ffffffff NAME "BTI / T31" SATID ffffff TPID 4d SID 1f TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 84 NAME "Discovery Russia" SATID ffffff TPID 4d SID 28 TYPE 1 VPID 5b4 PCRPID 5b4 - CHANNEL ID ffffffff NAME "K-TV (MetroMux) / T41" SATID ffffff TPID 4d SID 29 TYPE 1 VPID 7a8 PCRPID 7a8 - CHANNEL ID 86 NAME "Animal Planet EE" SATID ffffff TPID 4d SID 32 TYPE 1 VPID 618 PCRPID 618 - CHANNEL ID 87 NAME "Animal Planet - Russian" SATID ffffff TPID 4d SID 33 TYPE 1 VPID 618 PCRPID 618 - CHANNEL ID 88 NAME "Discovery Netherlands" SATID ffffff TPID 4d SID 3c TYPE 1 VPID 67c PCRPID 67c - CHANNEL ID ffffffff NAME "Q English" SATID ffffff TPID 4d SID 46 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 8a NAME "Travel and Adventure" SATID ffffff TPID 4d SID 50 TYPE 1 VPID 744 PCRPID 744 - CHANNEL ID 8b NAME "Travel and Adventure- Russian" SATID ffffff TPID 4d SID 51 TYPE 1 VPID 744 PCRPID 744 - CHANNEL ID 8c NAME "New DCP" SATID ffffff TPID 4d SID 12c TYPE 1 APID 4c4 PCRPID 4c4 - CHANNEL ID 8d NAME "CCP" SATID ffffff TPID 4d SID 12d TYPE 1 VPID 4ec PCRPID 4ec - CHANNEL ID ffffffff NAME "Deutsche Bank / T2" SATID ffffff TPID 4d SID 2 TYPE 1 VPID 4ec PCRPID 4ec - CHANNEL ID 93 NAME "Channel Three" SATID ffffff TPID 4d SID 3 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 94 NAME "Channel Four" SATID ffffff TPID 4d SID 4 TYPE 0 VPID 5b4 PCRPID 5b4 - CHANNEL ID 95 NAME "Channel Five" SATID ffffff TPID 4d SID 5 TYPE 0 VPID 618 PCRPID 618 - CHANNEL ID 96 NAME "Channel 6 = Sat 7 Arabic" SATID ffffff TPID 4d SID 6 TYPE 0 VPID 67c PCRPID 67c - CHANNEL ID 97 NAME "Channel Seven" SATID ffffff TPID 4d SID 7 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 98 NAME "Q German" SATID ffffff TPID 4d SID 47 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 99 NAME "Q French" SATID ffffff TPID 4d SID 48 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 9a NAME "Q Dutch" SATID ffffff TPID 4d SID 49 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 1b8 NAME "DTAG / T11" SATID ffffff TPID 4d SID b TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1b9 NAME "DTAG 50 / T12" SATID ffffff TPID 4d SID c TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1ba NAME "Telekom TV" SATID ffffff TPID 4d SID d TYPE 1 VPID 5b4 PCRPID 5b4 - CHANNEL ID 1bb NAME "Gerling / T26" SATID ffffff TPID 4d SID 1a TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1bc NAME "Hornbach-D / T36" SATID ffffff TPID 4d SID 24 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1bd NAME "Hornbach-NL / T38" SATID ffffff TPID 4d SID 26 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1be NAME "Hornbach-CZ / T39" SATID ffffff TPID 4d SID 27 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1bf NAME "Testkanal" SATID ffffff TPID 4d SID 63 TYPE 0 VPID 67c PCRPID 67c - CHANNEL ID 1c0 NAME "KENCAST" SATID ffffff TPID 4d SID 6f TYPE 0 PCRPID 42e - TRANSPONDER ID 011a SATID 0000 TYPE 1 FREQ 11662000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 3e1c SATID 0000 TYPE 1 FREQ 11681001 POL H SRATE 27500000 FEC 8 - CHANNEL ID 9b NAME "AB 1" SATID ffffff TPID 3e1c SID c9 TYPE 1 VPID a0 APID 50 TTPID 20 PCRPID a0 - CHANNEL ID 9c NAME "AB MOTEURS" SATID ffffff TPID 3e1c SID ca TYPE 1 VPID a1 APID 54 TTPID 23 PCRPID a1 - CHANNEL ID 9d NAME "ANIMAUX" SATID ffffff TPID 3e1c SID cb TYPE 1 VPID a2 APID 58 TTPID 26 PCRPID a2 - CHANNEL ID 9e NAME "CHASSE ET PECHE" SATID ffffff TPID 3e1c SID cc TYPE 1 VPID a3 APID 5c TTPID 29 PCRPID a3 - CHANNEL ID 9f NAME "XXL" SATID ffffff TPID 3e1c SID cd TYPE 1 VPID a4 APID 60 TTPID 2c PCRPID a4 - CHANNEL ID a0 NAME "MUSIQUE CLASSIQUE" SATID ffffff TPID 3e1c SID ce TYPE 1 VPID a5 APID 64 TTPID 2f PCRPID a5 - CHANNEL ID a1 NAME "ESCALES" SATID ffffff TPID 3e1c SID cf TYPE 1 VPID a6 APID 68 TTPID 32 PCRPID a6 - CHANNEL ID a2 NAME "FIT/chaîne HISTOIRE" SATID ffffff TPID 3e1c SID d0 TYPE 1 VPID a7 APID 6c TTPID 35 PCRPID a7 - CHANNEL ID a3 NAME "RFM TV" SATID ffffff TPID 3e1c SID d1 TYPE 1 VPID a8 APID 70 TTPID 38 PCRPID a8 - TRANSPONDER ID 13ec SATID 0000 TYPE 1 FREQ 11744599 POL H SRATE 27500000 FEC 8 - CHANNEL ID a4 NAME "EDTV DRAMA" SATID ffffff TPID 13ec SID 2520 TYPE 0 VPID 1322 PCRPID 1322 - CHANNEL ID a5 NAME "EDTV RADIO 02" SATID ffffff TPID 13ec SID 2534 TYPE 0 VPID 1322 PCRPID 1322 - CHANNEL ID a6 NAME "EDTV RADIO 01" SATID ffffff TPID 13ec SID 2533 TYPE 0 VPID 1322 PCRPID 1322 - CHANNEL ID a7 NAME "EDTV SPORT" SATID ffffff TPID 13ec SID 251e TYPE 0 VPID 1322 PCRPID 1322 - CHANNEL ID a8 NAME "EDTV BUSINESS" SATID ffffff TPID 13ec SID 251f TYPE 0 VPID 1322 PCRPID 1322 - TRANSPONDER ID 1450 SATID 0000 TYPE 1 FREQ 11765841 POL V SRATE 27500000 FEC 8 - CHANNEL ID a9 NAME "RAI1" SATID ffffff TPID 1450 SID d49 TYPE 0 VPID a0 PCRPID 1ffe - CHANNEL ID aa NAME "RAI2" SATID ffffff TPID 1450 SID d4a TYPE 0 VPID a1 PCRPID 1ffe - CHANNEL ID ab NAME "RAI3" SATID ffffff TPID 1450 SID d4b TYPE 0 VPID a2 PCRPID 1ffe - CHANNEL ID ac NAME "Rai Way TEST1" SATID ffffff TPID 1450 SID d4c TYPE 0 VPID 203 PCRPID 1ffe - CHANNEL ID ad NAME "Rai Way TEST2" SATID ffffff TPID 1450 SID d4d TYPE 0 VPID 204 PCRPID 1ffe - CHANNEL ID ae NAME "Rai Way TEST3" SATID ffffff TPID 1450 SID d4e TYPE 0 VPID a4 PCRPID 1ffe - CHANNEL ID af NAME "RAIMOSAICO" SATID ffffff TPID 1450 SID d4f TYPE 0 VPID 206 PCRPID 1ffe - CHANNEL ID b0 SATID ffffff TPID 1450 SID da2 TYPE 0 - TRANSPONDER ID 1518 SATID 0000 TYPE 1 FREQ 11765841 POL V SRATE 27500000 FEC 8 - CHANNEL ID b1 NAME "RAINews24" SATID ffffff TPID 1518 SID ce5 TYPE 0 VPID 204 PCRPID 1ffe - CHANNEL ID b2 NAME "CAMERA DEPUTATI" SATID ffffff TPID 1518 SID ce6 TYPE 0 VPID 205 PCRPID 1ffe - CHANNEL ID b3 NAME "TELEPACE" SATID ffffff TPID 1518 SID ce8 TYPE 0 VPID 203 PCRPID 1ffe - CHANNEL ID b4 NAME "RAISPORTSAT" SATID ffffff TPID 1518 SID ce9 TYPE 0 VPID 200 PCRPID 1ffe - CHANNEL ID b5 NAME "RAINettunoSAT2" SATID ffffff TPID 1518 SID cea TYPE 0 VPID 201 PCRPID 1ffe - CHANNEL ID b6 NAME "RAIeducational" SATID ffffff TPID 1518 SID ceb TYPE 0 VPID 202 PCRPID 1ffe - CHANNEL ID b7 NAME "RAINettunoSAT1" SATID ffffff TPID 1518 SID cec TYPE 0 VPID 207 PCRPID 1ffe - CHANNEL ID b8 NAME "SAT2000" SATID ffffff TPID 1518 SID ced TYPE 0 VPID 206 PCRPID 1ffe - CHANNEL ID b9 NAME "RADIOUNO" SATID ffffff TPID 1518 SID cef TYPE 0 APID 29e PCRPID 1ffe - CHANNEL ID ba NAME "RADIODUE" SATID ffffff TPID 1518 SID cf0 TYPE 0 APID 29f PCRPID 1ffe - CHANNEL ID bb NAME "RADIOTRE" SATID ffffff TPID 1518 SID cf1 TYPE 0 APID 2a0 PCRPID 1ffe - CHANNEL ID bc NAME "FDleggera" SATID ffffff TPID 1518 SID cf2 TYPE 0 APID 2a1 PCRPID 1ffe - CHANNEL ID bd NAME "FDauditorium" SATID ffffff TPID 1518 SID cf3 TYPE 0 APID 299 PCRPID 1ffe - CHANNEL ID be NAME "BLUSAT 2000" SATID ffffff TPID 1518 SID cf4 TYPE 0 APID 2a5 PCRPID 1ffe - CHANNEL ID bf NAME "GR PARLAMENTO" SATID ffffff TPID 1518 SID cf5 TYPE 0 APID 298 PCRPID 1ffe - CHANNEL ID c0 NAME "ISORADIO" SATID ffffff TPID 1518 SID cf6 TYPE 0 APID 295 PCRPID 1ffe - TRANSPONDER ID 157c SATID 0000 TYPE 1 FREQ 11823000 POL H SRATE 27500000 FEC 8 - CHANNEL ID c1 NAME "R1" SATID ffffff TPID 157c SID 12d TYPE 1 VPID 200 APID 28a PCRPID 1ffe - CHANNEL ID c2 NAME "R2" SATID ffffff TPID 157c SID 12e TYPE 1 VPID 201 APID 294 APID 295 PCRPID 1ffe - CHANNEL ID c3 NAME "R3" SATID ffffff TPID 157c SID 12f TYPE 1 VPID 202 APID 29e TTPID 242 PCRPID 1ffe - CHANNEL ID c4 NAME "R4" SATID ffffff TPID 157c SID 130 TYPE 1 VPID 203 APID 2a8 TTPID 243 PCRPID 1ffe - CHANNEL ID c5 NAME "R5" SATID ffffff TPID 157c SID 132 TYPE 1 VPID 124a APID 2bc TTPID 245 PCRPID 1ffe - CHANNEL ID c6 NAME "R6" SATID ffffff TPID 157c SID 133 TYPE 1 VPID 206 APID 2c6 PCRPID 1ffe - CHANNEL ID c7 NAME "R7" SATID ffffff TPID 157c SID 134 TYPE 1 VPID 207 APID 2d0 PCRPID 1ffe - CHANNEL ID c8 NAME "Love Radio" SATID ffffff TPID 157c SID 135 TYPE 1 APID 2c7 PCRPID 1ffe - CHANNEL ID c9 NAME "Greek Church" SATID ffffff TPID 157c SID 136 TYPE 1 APID 29f PCRPID 1ffe - CHANNEL ID ca NAME "Skai Radio" SATID ffffff TPID 157c SID 137 TYPE 1 APID 2e5 PCRPID 1ffe - CHANNEL ID cb NAME "MelodiRadio" SATID ffffff TPID 157c SID 138 TYPE 1 APID 2bd PCRPID 1ffe - CHANNEL ID cc NAME "ERA 3" SATID ffffff TPID 157c SID 139 TYPE 1 APID 28b PCRPID 1ffe - CHANNEL ID cd NAME "RR1" SATID ffffff TPID 157c SID 13a TYPE 1 APID 2a9 PCRPID 1ffe - CHANNEL ID ce NAME "RR2" SATID ffffff TPID 157c SID 13b TYPE 1 APID 2d1 PCRPID 1ffe - CHANNEL ID cf NAME "NOVA CINE" SATID ffffff TPID 157c SID 13c TYPE 1 VPID 209 APID 2e4 PCRPID 1ffe - CHANNEL ID d0 NAME "FILM NET" SATID ffffff TPID 157c SID 13d TYPE 1 VPID 200 APID 28a PCRPID 1ffe - CHANNEL ID d1 NAME "SSportK-T.V" SATID ffffff TPID 157c SID 13e TYPE 1 VPID 201 APID 294 APID 295 PCRPID 1ffe - CHANNEL ID d2 NAME "MEGA" SATID ffffff TPID 157c SID 13f TYPE 1 VPID 202 APID 29e TTPID 242 PCRPID 1ffe - CHANNEL ID d3 NAME "ANT-1" SATID ffffff TPID 157c SID 140 TYPE 1 VPID 203 APID 2a8 TTPID 243 PCRPID 1ffe - CHANNEL ID d4 NAME "STAR" SATID ffffff TPID 157c SID 141 TYPE 1 VPID 205 APID 2bc TTPID 245 PCRPID 1ffe - CHANNEL ID d5 NAME "Alter 5" SATID ffffff TPID 157c SID 142 TYPE 1 VPID 206 APID 2c6 PCRPID 1ffe - CHANNEL ID d6 NAME "NEW Tempo" SATID ffffff TPID 157c SID 143 TYPE 1 VPID 207 APID 2d0 PCRPID 1ffe - CHANNEL ID d7 NAME "Super Sport2" SATID ffffff TPID 157c SID 144 TYPE 1 VPID 204 APID 2b2 APID 2b3 PCRPID 1ffe - TRANSPONDER ID 15e0 SATID 0000 TYPE 1 FREQ 11843000 POL V SRATE 27500000 FEC 8 - CHANNEL ID d8 SATID ffffff TPID 15e0 SID fffe TYPE 0 - CHANNEL ID d9 NAME "INTV" SATID ffffff TPID 15e0 SID db0 TYPE 1 VPID 914 PCRPID 900 - CHANNEL ID da NAME "UNIV" SATID ffffff TPID 15e0 SID db3 TYPE 1 VPID 901 PCRPID 900 - CHANNEL ID db NAME "CULT" SATID ffffff TPID 15e0 SID db6 TYPE 1 VPID 903 PCRPID 900 - CHANNEL ID dc NAME "ERSP" SATID ffffff TPID 15e0 SID db9 TYPE 1 VPID 905 PCRPID 900 - CHANNEL ID dd NAME "SINT" SATID ffffff TPID 15e0 SID dbb TYPE 1 - CHANNEL ID de NAME "CART" SATID ffffff TPID 15e0 SID dbc TYPE 1 VPID 981 PCRPID 980 - CHANNEL ID df NAME "SINT" SATID ffffff TPID 15e0 SID dbf TYPE 1 - CHANNEL ID e0 NAME "DISC" SATID ffffff TPID 15e0 SID dc2 TYPE 1 VPID 985 PCRPID 980 - CHANNEL ID e1 NAME "SINT" SATID ffffff TPID 15e0 SID dc5 TYPE 1 - CHANNEL ID e2 NAME "TVL" SATID ffffff TPID 15e0 SID dc8 TYPE 1 VPID 989 PCRPID 980 - CHANNEL ID e3 NAME "SINT" SATID ffffff TPID 15e0 SID dca TYPE 1 - CHANNEL ID e4 NAME "ROCK" SATID ffffff TPID 15e0 SID dde TYPE 1 APID 910 PCRPID 900 - CHANNEL ID e5 NAME "RDS" SATID ffffff TPID 15e0 SID de1 TYPE 1 APID 911 PCRPID 900 - CHANNEL ID e6 NAME "RTL" SATID ffffff TPID 15e0 SID de4 TYPE 1 APID 912 PCRPID 900 - CHANNEL ID e7 NAME "101" SATID ffffff TPID 15e0 SID de7 TYPE 1 APID 913 PCRPID 900 - CHANNEL ID e8 NAME "RVOY" SATID ffffff TPID 15e0 SID dea TYPE 1 APID 90b PCRPID 900 - CHANNEL ID e9 NAME "RKFM" SATID ffffff TPID 15e0 SID deb TYPE 1 APID 90d PCRPID 900 - CHANNEL ID ea NAME "GLOB" SATID ffffff TPID 15e0 SID dec TYPE 1 APID 90c PCRPID 900 - CHANNEL ID eb NAME "ANT1" SATID ffffff TPID 15e0 SID ded TYPE 1 APID 90e PCRPID 900 - CHANNEL ID ec NAME "RRAD" SATID ffffff TPID 15e0 SID dee TYPE 1 APID 90f PCRPID 900 - CHANNEL ID ed NAME "MC01" SATID ffffff TPID 15e0 SID df0 TYPE 1 APID 908 PCRPID 908 - CHANNEL ID ee NAME "MC02" SATID ffffff TPID 15e0 SID df3 TYPE 1 APID 909 PCRPID 909 - CHANNEL ID ef NAME "MC03" SATID ffffff TPID 15e0 SID df6 TYPE 1 APID 90a PCRPID 90a - TRANSPONDER ID 1644 SATID 0000 TYPE 1 FREQ 12341001 POL H SRATE 27500000 FEC 8 - CHANNEL ID f0 NAME "P7" SATID ffffff TPID 1644 SID 2c25 TYPE 1 VPID a0 APID 50 APID 51 PCRPID af - CHANNEL ID f1 NAME "P8" SATID ffffff TPID 1644 SID 2c27 TYPE 1 VPID a1 APID 54 APID 55 PCRPID af - CHANNEL ID f2 NAME "P9" SATID ffffff TPID 1644 SID 2c29 TYPE 1 VPID a2 APID 58 APID 59 PCRPID af - CHANNEL ID f3 NAME "+GIOCHI" SATID ffffff TPID 1644 SID 2c2e TYPE 1 PCRPID af - CHANNEL ID f4 NAME "MM01" SATID ffffff TPID 1644 SID 2c2f TYPE 1 APID 259 PCRPID b0 - CHANNEL ID f5 NAME "MM02" SATID ffffff TPID 1644 SID 2c30 TYPE 0 APID 25a PCRPID b0 - CHANNEL ID f6 NAME "MM03" SATID ffffff TPID 1644 SID 2c31 TYPE 0 APID 25b PCRPID b0 - CHANNEL ID f7 NAME "MM04" SATID ffffff TPID 1644 SID 2c32 TYPE 0 APID 25c PCRPID b0 - CHANNEL ID f8 NAME "MM05" SATID ffffff TPID 1644 SID 2c33 TYPE 0 APID 25d PCRPID b0 - CHANNEL ID f9 NAME "MM06" SATID ffffff TPID 1644 SID 2c34 TYPE 0 APID 25e PCRPID b0 - CHANNEL ID fa NAME "MM07" SATID ffffff TPID 1644 SID 2c35 TYPE 0 APID 25f PCRPID b0 - CHANNEL ID fb NAME "MM08" SATID ffffff TPID 1644 SID 2c36 TYPE 0 APID 260 PCRPID b0 - CHANNEL ID fc NAME "MM09" SATID ffffff TPID 1644 SID 2c37 TYPE 0 APID 261 PCRPID b0 - CHANNEL ID fd NAME "MM10" SATID ffffff TPID 1644 SID 2c38 TYPE 0 APID 262 PCRPID b0 - CHANNEL ID fe NAME "MM11" SATID ffffff TPID 1644 SID 2c39 TYPE 1 APID 263 PCRPID b0 - CHANNEL ID ff NAME "MM12" SATID ffffff TPID 1644 SID 2c3a TYPE 0 APID 264 PCRPID b0 - CHANNEL ID 100 NAME "MM13" SATID ffffff TPID 1644 SID 2c3b TYPE 0 APID 265 PCRPID b0 - CHANNEL ID 101 NAME "MM14" SATID ffffff TPID 1644 SID 2c3c TYPE 0 APID 266 PCRPID b0 - CHANNEL ID 102 NAME "MM15" SATID ffffff TPID 1644 SID 2c3d TYPE 0 APID 267 PCRPID b0 - CHANNEL ID 103 NAME "MM16" SATID ffffff TPID 1644 SID 2c3e TYPE 0 APID 268 PCRPID b0 - CHANNEL ID 104 NAME "MM17" SATID ffffff TPID 1644 SID 2c3f TYPE 0 APID 269 PCRPID b0 - CHANNEL ID 105 NAME "MM18" SATID ffffff TPID 1644 SID 2c40 TYPE 0 APID 26a PCRPID b0 - CHANNEL ID 106 NAME "MM19" SATID ffffff TPID 1644 SID 2c41 TYPE 0 APID 26b PCRPID b0 - CHANNEL ID 107 NAME "MM20" SATID ffffff TPID 1644 SID 2c42 TYPE 0 APID 26c PCRPID b0 - CHANNEL ID 108 NAME "MM21" SATID ffffff TPID 1644 SID 2c43 TYPE 1 APID 26d PCRPID b0 - CHANNEL ID 109 NAME "MM22" SATID ffffff TPID 1644 SID 2c44 TYPE 0 APID 26e PCRPID b0 - CHANNEL ID 10a NAME "MM23" SATID ffffff TPID 1644 SID 2c45 TYPE 0 APID 26f PCRPID b0 - CHANNEL ID 10b NAME "MM24" SATID ffffff TPID 1644 SID 2c46 TYPE 0 APID 270 PCRPID b0 - CHANNEL ID 10c NAME "MM25" SATID ffffff TPID 1644 SID 2c47 TYPE 0 APID 271 PCRPID b0 - CHANNEL ID 10d NAME "MM26" SATID ffffff TPID 1644 SID 2c48 TYPE 0 APID 272 PCRPID b0 - CHANNEL ID 10e NAME "MM27" SATID ffffff TPID 1644 SID 2c49 TYPE 0 APID 273 PCRPID b0 - CHANNEL ID 10f NAME "MM28" SATID ffffff TPID 1644 SID 2c4a TYPE 0 APID 274 PCRPID b0 - CHANNEL ID 110 NAME "MM29" SATID ffffff TPID 1644 SID 2c4b TYPE 0 APID 275 PCRPID b0 - CHANNEL ID 111 NAME "MM30" SATID ffffff TPID 1644 SID 2c4c TYPE 0 APID 276 PCRPID b0 - CHANNEL ID 112 NAME "RCAP" SATID ffffff TPID 1644 SID 2c4d TYPE 1 APID 277 PCRPID b0 - CHANNEL ID 113 NAME "R105" SATID ffffff TPID 1644 SID 2c4e TYPE 0 APID 278 PCRPID b0 - CHANNEL ID 114 NAME "RDJ" SATID ffffff TPID 1644 SID 2c4f TYPE 0 APID 279 PCRPID b0 - CHANNEL ID 115 NAME "RITA" SATID ffffff TPID 1644 SID 2c50 TYPE 0 APID 27a PCRPID b0 - CHANNEL ID 116 NAME "RMC" SATID ffffff TPID 1644 SID 2c51 TYPE 0 APID 27b PCRPID b0 - CHANNEL ID 117 NAME "R101" SATID ffffff TPID 1644 SID 2c52 TYPE 0 APID 27c PCRPID b0 - CHANNEL ID 118 NAME "RRAD" SATID ffffff TPID 1644 SID 2c53 TYPE 0 APID 27d PCRPID b0 - CHANNEL ID 119 NAME "RR" SATID ffffff TPID 1644 SID 2c54 TYPE 0 APID 27e PCRPID b0 - CHANNEL ID 11a SATID ffffff TPID 1644 SID 2c61 TYPE 0 APID 259 APID 25a APID 25b APID 25c APID 25d APID 25e APID 25f APID 260 APID 261 APID 262 PCRPID b0 - CHANNEL ID 11b SATID ffffff TPID 1644 SID 2c62 TYPE 0 APID 263 APID 264 APID 265 APID 266 APID 267 APID 268 APID 269 APID 26a APID 26b APID 26c PCRPID b0 - CHANNEL ID 11c SATID ffffff TPID 1644 SID 2c63 TYPE 0 APID 26d APID 26e APID 26f APID 270 APID 271 APID 272 APID 273 APID 274 APID 275 APID 276 PCRPID b0 - CHANNEL ID 11d SATID ffffff TPID 1644 SID 2c64 TYPE 0 APID 277 APID 278 APID 279 APID 27a APID 27b APID 27c APID 27d APID 27e PCRPID b0 - CHANNEL ID 11e NAME "MULTIMUSICA" SATID ffffff TPID 1644 SID 2c58 TYPE 1 PCRPID b0 - CHANNEL ID 11f NAME "RADIO" SATID ffffff TPID 1644 SID 2c59 TYPE 1 PCRPID b0 - CHANNEL ID 120 NAME "MULTIMUSIC 1" SATID ffffff TPID 1644 SID 2c65 TYPE 1 APID 262 APID 259 APID 25a APID 25b APID 25c APID 25d APID 25e APID 25f APID 260 APID 261 PCRPID b0 - CHANNEL ID 121 NAME "MULTIMUSIC 2" SATID ffffff TPID 1644 SID 2c66 TYPE 1 APID 265 APID 266 APID 267 APID 263 APID 264 APID 268 APID 269 APID 26a APID 26b APID 26c PCRPID b0 - TRANSPONDER ID 16a8 SATID 0000 TYPE 1 FREQ 12713000 POL V SRATE 27500000 FEC 8 - CHANNEL ID 122 SATID ffffff TPID 16a8 SID fffe TYPE 0 - CHANNEL ID 123 NAME "TEAM" SATID ffffff TPID 16a8 SID e1a TYPE 1 VPID 901 PCRPID 900 - CHANNEL ID 124 NAME "SINT" SATID ffffff TPID 16a8 SID e1d TYPE 1 - CHANNEL ID 125 NAME "VIAG" SATID ffffff TPID 16a8 SID e20 TYPE 1 VPID 904 PCRPID 900 - CHANNEL ID 126 NAME "SINT" SATID ffffff TPID 16a8 SID e23 TYPE 1 - CHANNEL ID 127 NAME "EURO" SATID ffffff TPID 16a8 SID e26 TYPE 1 VPID 907 PCRPID 900 - CHANNEL ID 128 NAME "SINT" SATID ffffff TPID 16a8 SID e27 TYPE 1 - CHANNEL ID 129 NAME "CNN" SATID ffffff TPID 16a8 SID e29 TYPE 1 VPID 981 PCRPID 980 - CHANNEL ID 12a NAME "ante prima" SATID ffffff TPID 16a8 SID e2c TYPE 1 VPID 983 PCRPID 980 - CHANNEL ID 12b NAME "SNAI" SATID ffffff TPID 16a8 SID e2e TYPE 1 VPID a01 PCRPID a00 - CHANNEL ID 12c NAME "MPPV" SATID ffffff TPID 16a8 SID e30 TYPE 1 VPID a03 PCRPID a00 - CHANNEL ID 12d NAME "MC04" SATID ffffff TPID 16a8 SID e34 TYPE 1 APID a80 PCRPID a80 - CHANNEL ID 12e NAME "MC05" SATID ffffff TPID 16a8 SID e35 TYPE 1 APID a81 PCRPID a81 - CHANNEL ID 12f NAME "MC06" SATID ffffff TPID 16a8 SID e36 TYPE 1 APID a82 PCRPID a82 - CHANNEL ID 130 NAME "MC07" SATID ffffff TPID 16a8 SID e39 TYPE 1 APID a83 PCRPID a83 - CHANNEL ID 131 NAME "MC08" SATID ffffff TPID 16a8 SID e3c TYPE 1 APID a84 PCRPID a84 - CHANNEL ID 132 NAME "MC09" SATID ffffff TPID 16a8 SID e3f TYPE 1 APID a85 PCRPID a85 - CHANNEL ID 133 NAME "MC10" SATID ffffff TPID 16a8 SID e42 TYPE 1 APID a86 PCRPID a86 - CHANNEL ID 134 NAME "MC11" SATID ffffff TPID 16a8 SID e45 TYPE 1 APID a87 PCRPID a87 - CHANNEL ID 135 NAME "MC12" SATID ffffff TPID 16a8 SID e48 TYPE 1 APID a88 PCRPID a88 - CHANNEL ID 136 NAME "MC13" SATID ffffff TPID 16a8 SID e4b TYPE 1 APID a89 PCRPID a89 - CHANNEL ID 137 NAME "MC14" SATID ffffff TPID 16a8 SID e4e TYPE 1 APID a8a PCRPID a8a - CHANNEL ID 138 NAME "MC15" SATID ffffff TPID 16a8 SID e51 TYPE 1 APID a8b PCRPID a8b - CHANNEL ID 139 NAME "MC16" SATID ffffff TPID 16a8 SID e54 TYPE 1 APID a8c PCRPID a8c - CHANNEL ID 13a NAME "MC17" SATID ffffff TPID 16a8 SID e57 TYPE 1 APID a8d PCRPID a8d - CHANNEL ID 13b NAME "MC18" SATID ffffff TPID 16a8 SID e5a TYPE 1 APID a8e PCRPID a8e - TRANSPONDER ID 170c SATID 0000 TYPE 1 FREQ 12341001 POL H SRATE 27500000 FEC 8 - CHANNEL ID 13c NAME "MOSAICO D+" SATID ffffff TPID 170c SID 2c89 TYPE 1 VPID a1 APID 55 APID 51 APID 50 APID 54 PCRPID af - CHANNEL ID 13d NAME " MILAN CH." SATID ffffff TPID 170c SID 2c8b TYPE 1 VPID a2 APID 58 APID 59 PCRPID af - CHANNEL ID 13e NAME " INTER CH." SATID ffffff TPID 170c SID 2c8d TYPE 1 VPID a3 APID 5c APID 5d PCRPID af - CHANNEL ID 13f NAME "TST3" SATID ffffff TPID 170c SID 2c8f TYPE 1 PCRPID af - TRANSPONDER ID 1770 SATID 0000 TYPE 1 FREQ 11919280 POL V SRATE 27500000 FEC 8 - CHANNEL ID 140 NAME " I1" SATID ffffff TPID 1770 SID 1 TYPE 1 VPID 200 APID 28a TTPID 240 PCRPID 1ffe - CHANNEL ID 141 NAME " C5" SATID ffffff TPID 1770 SID 2 TYPE 1 VPID 201 APID 294 TTPID 241 PCRPID 1ffe - CHANNEL ID 142 NAME " R4" SATID ffffff TPID 1770 SID 3 TYPE 1 VPID 202 APID 29e TTPID 242 PCRPID 1ffe - CHANNEL ID 143 NAME "Test" SATID ffffff TPID 1770 SID 4 TYPE 1 VPID 203 APID 2a8 TTPID 243 PCRPID 1ffe - TRANSPONDER ID 003d SATID 0000 TYPE 1 FREQ 11938000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 144 NAME "NTV" SATID ffffff TPID 3d SID 1bc1 TYPE 1 VPID a4 APID 58 APID 59 PCRPID a4 - CHANNEL ID 145 NAME "NTV-PLUS" SATID ffffff TPID 3d SID 1bc2 TYPE 1 VPID a5 APID 5a APID 5b PCRPID a5 - CHANNEL ID 146 NAME "NTV Int.-HTB" SATID ffffff TPID 3d SID 1bbd TYPE 1 VPID a0 APID 50 PCRPID a0 - CHANNEL ID 147 NAME "NTV Int.-Nashe Kino" SATID ffffff TPID 3d SID 1bbe TYPE 1 VPID a1 APID 52 PCRPID a1 - CHANNEL ID 148 NAME "NTV Int.-Detsk. Mir" SATID ffffff TPID 3d SID 1bbf TYPE 1 VPID a2 APID 54 PCRPID a2 - TRANSPONDER ID 1838 SATID 0000 TYPE 1 FREQ 12341001 POL V SRATE 27500000 FEC 8 - CHANNEL ID 149 NAME "DISNEY CHANNEL" SATID ffffff TPID 1838 SID 2a95 TYPE 1 PCRPID a0 - CHANNEL ID 14a NAME "DISCOVERY" SATID ffffff TPID 1838 SID 2a97 TYPE 1 VPID a1 PCRPID a1 - CHANNEL ID 14b NAME "EUSP" SATID ffffff TPID 1838 SID 2a99 TYPE 1 VPID a2 APID 58 APID 59 PCRPID a2 - CHANNEL ID 14c NAME "HAPPY CHANNEL" SATID ffffff TPID 1838 SID 2a9b TYPE 1 PCRPID a3 - CHANNEL ID 14d NAME "MATCH MUSIC" SATID ffffff TPID 1838 SID 2a9d TYPE 1 PCRPID a4 - CHANNEL ID 14e NAME "MTV" SATID ffffff TPID 1838 SID 2a9f TYPE 1 PCRPID a5 - CHANNEL ID 14f NAME "R/CINEMA RAISAT" SATID ffffff TPID 1838 SID 2aa1 TYPE 1 PCRPID a6 - TRANSPONDER ID 189c SATID 0000 TYPE 1 FREQ 12713000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 150 SATID ffffff TPID 189c SID fffe TYPE 0 - CHANNEL ID 151 NAME "cine stream" SATID ffffff TPID 189c SID 1e18 TYPE 1 VPID 200 APID 28a PCRPID 1ffe - CHANNEL ID 152 NAME "cine movie" SATID ffffff TPID 189c SID 1e1b TYPE 1 VPID 202 APID 29e PCRPID 1ffe - TRANSPONDER ID 1900 SATID 0000 TYPE 1 FREQ 12341001 POL V SRATE 27500000 FEC 8 - CHANNEL ID 153 NAME "CLASSICA" SATID ffffff TPID 1900 SID 2af9 TYPE 1 PCRPID a0 - CHANNEL ID 154 NAME "R/GAM ROS RAISAT" SATID ffffff TPID 1900 SID 2afb TYPE 1 PCRPID a1 - CHANNEL ID 155 NAME "R/ALBUM RAISAT" SATID ffffff TPID 1900 SID 2afd TYPE 1 PCRPID a2 - CHANNEL ID 156 NAME "HALLMARK" SATID ffffff TPID 1900 SID 2aff TYPE 1 VPID a3 PCRPID a3 - CHANNEL ID 157 NAME "R/ART RAISAT" SATID ffffff TPID 1900 SID 2b01 TYPE 1 PCRPID a4 - CHANNEL ID 158 NAME "TST1" SATID ffffff TPID 1900 SID 2b03 TYPE 1 PCRPID a5 - CHANNEL ID 159 NAME "TMC" SATID ffffff TPID 1900 SID 2b05 TYPE 1 VPID a6 PCRPID a6 - CHANNEL ID 15a NAME "TMC2" SATID ffffff TPID 1900 SID 2b07 TYPE 1 VPID a7 PCRPID a7 - TRANSPONDER ID 1964 SATID 0000 TYPE 1 FREQ 12015000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 15b NAME "ART VARIETY" SATID ffffff TPID 1964 SID 19a TYPE 1 VPID a0 PCRPID a0 - CHANNEL ID 15c NAME "ART CHILDREN" SATID ffffff TPID 1964 SID 1a4 TYPE 1 VPID a1 PCRPID a1 - CHANNEL ID 15d NAME "ART MOVIES" SATID ffffff TPID 1964 SID 1ae TYPE 1 VPID a2 PCRPID a2 - CHANNEL ID 15e NAME "ART MUSIC" SATID ffffff TPID 1964 SID 1b8 TYPE 1 VPID a3 PCRPID a3 - CHANNEL ID 15f NAME "ART EUROPE" SATID ffffff TPID 1964 SID 1c2 TYPE 0 VPID a4 PCRPID a4 - CHANNEL ID 160 NAME "LBC EUROPE" SATID ffffff TPID 1964 SID 1cc TYPE 1 VPID a5 PCRPID a5 - CHANNEL ID 161 NAME "EGYPT SAT. CH. 2" SATID ffffff TPID 1964 SID 1d6 TYPE 1 VPID a6 PCRPID a6 - CHANNEL ID 162 NAME "ART SPORT" SATID ffffff TPID 1964 SID 1d8 TYPE 1 VPID a7 PCRPID a7 - CHANNEL ID 163 NAME "IQRA" SATID ffffff TPID 1964 SID 1da TYPE 1 VPID a8 PCRPID a8 - TRANSPONDER ID 19c8 SATID 0000 TYPE 1 FREQ 12341001 POL V SRATE 27500000 FEC 8 - CHANNEL ID 164 NAME "T+ BIANCO" SATID ffffff TPID 19c8 SID 2b5d TYPE 1 VPID a0 APID 50 APID 51 TTPID 2c PCRPID a0 - CHANNEL ID 165 NAME "T+ NERO" SATID ffffff TPID 19c8 SID 2b5f TYPE 1 VPID a1 APID 54 APID 55 TTPID 2d PCRPID a1 - CHANNEL ID 166 NAME "T+ GRIGIO" SATID ffffff TPID 19c8 SID 2b61 TYPE 1 VPID a2 APID 58 APID 59 PCRPID a2 - CHANNEL ID 167 NAME "R4" SATID ffffff TPID 19c8 SID 18 TYPE 1 VPID a3 PCRPID a3 - CHANNEL ID 168 NAME "16:9 TELE+" SATID ffffff TPID 19c8 SID 2b63 TYPE 1 VPID a4 APID 60 APID 61 PCRPID a4 - CHANNEL ID 169 NAME "VETRINA D+" SATID ffffff TPID 19c8 SID 2b65 TYPE 1 PCRPID a5 - CHANNEL ID 16a NAME "R/RAGAZZI RAISAT" SATID ffffff TPID 19c8 SID 2b67 TYPE 1 PCRPID a6 - TRANSPONDER ID 1a2c SATID 0000 TYPE 1 FREQ 12341001 POL H SRATE 27500000 FEC 8 - CHANNEL ID 16b NAME "CNN" SATID ffffff TPID 1a2c SID 2ced TYPE 1 PCRPID af - CHANNEL ID 16c NAME "BBC" SATID ffffff TPID 1a2c SID 2cef TYPE 1 PCRPID af - CHANNEL ID 16d NAME "BLOOMBERG" SATID ffffff TPID 1a2c SID 2cf1 TYPE 1 PCRPID af - CHANNEL ID 16e NAME "CNBC" SATID ffffff TPID 1a2c SID 2cf3 TYPE 1 PCRPID af - CHANNEL ID 16f NAME "SKYNews" SATID ffffff TPID 1a2c SID 2cf5 TYPE 1 PCRPID af - CHANNEL ID 170 NAME "TST2" SATID ffffff TPID 1a2c SID 2cf7 TYPE 1 PCRPID af - CHANNEL ID 171 NAME "TV5" SATID ffffff TPID 1a2c SID 2cf9 TYPE 1 PCRPID af - CHANNEL ID 172 NAME "EPG" SATID ffffff TPID 1a2c SID 2cfb TYPE 1 PCRPID af - CHANNEL ID 173 NAME "CNN" SATID ffffff TPID 1a2c SID 2cfd TYPE 1 VPID a0 APID 50 PCRPID af - CHANNEL ID 174 NAME "CNBC" SATID ffffff TPID 1a2c SID 2cff TYPE 1 VPID a3 APID 5c PCRPID af - CHANNEL ID 175 NAME "TV5" SATID ffffff TPID 1a2c SID 2d01 TYPE 1 VPID a6 APID 68 PCRPID af - CHANNEL ID 176 NAME "BBC WORLD" SATID ffffff TPID 1a2c SID 2d03 TYPE 1 VPID a1 APID 54 PCRPID af - CHANNEL ID 177 SATID ffffff TPID 1a2c SID 2d4b TYPE 0 PCRPID 1ffe - CHANNEL ID 178 SATID ffffff TPID 1a2c SID 26fc TYPE 0 PCRPID 1ffe - CHANNEL ID 179 SATID ffffff TPID 1a2c SID 26fd TYPE 0 PCRPID 1ffe - TRANSPONDER ID 3264 SATID 0000 TYPE 1 FREQ 11095910 POL V SRATE 27500000 FEC 8 - CHANNEL ID ffffffff NAME "Telekom TV" SATID ffffff TPID 3264 SID e7f TYPE 0 VPID 20 PCRPID 20 - CHANNEL ID ffffffff NAME "FantasticOverOpal" SATID ffffff TPID 3264 SID e80 TYPE 0 VPID 20 PCRPID 20 - CHANNEL ID ffffffff NAME "Gilat" SATID ffffff TPID 3264 SID e81 TYPE 0 VPID 20 PCRPID 20 - CHANNEL ID ffffffff NAME "Siemens TV" SATID ffffff TPID 3264 SID e84 TYPE 0 VPID 20 PCRPID 20 - CHANNEL ID ffffffff NAME "S-TV" SATID ffffff TPID 3264 SID e85 TYPE 0 VPID 20 PCRPID 20 - CHANNEL ID ffffffff NAME "Optibase Encoder" SATID ffffff TPID 3264 SID e86 TYPE 0 VPID 20 PCRPID 20 - TRANSPONDER ID 1af4 SATID 0000 TYPE 1 FREQ 12091901 POL H SRATE 27500000 FEC 8 - CHANNEL ID 17a NAME "Bolsa" SATID ffffff TPID 1af4 SID 222e TYPE 0 - CHANNEL ID 17b NAME "Testw" SATID ffffff TPID 1af4 SID 222f TYPE 0 - CHANNEL ID 17c NAME "SIRE" SATID ffffff TPID 1af4 SID 2230 TYPE 0 PCRPID 102 - CHANNEL ID 17d NAME "Telesierra" SATID ffffff TPID 1af4 SID 2200 TYPE 0 VPID 1040 APID 1041 PCRPID 1040 - CHANNEL ID 17e NAME "vtv" SATID ffffff TPID 1af4 SID 21fd TYPE 0 VPID 1010 APID 1012 APID 1011 APID 1013 PCRPID 1010 - CHANNEL ID 17f NAME "Satisfaction" SATID ffffff TPID 1af4 SID 2202 TYPE 0 VPID 1060 APID 1061 PCRPID 1060 - CHANNEL ID 180 NAME "C. Milagro" SATID ffffff TPID 1af4 SID 2207 TYPE 0 VPID 1110 APID 1111 PCRPID 1110 - CHANNEL ID 181 NAME "Fiesta" SATID ffffff TPID 1af4 SID 2210 TYPE 0 VPID 1150 APID 1151 APID 1152 PCRPID 1150 - CHANNEL ID 182 NAME "TVE Internacional" SATID ffffff TPID 1af4 SID 2203 TYPE 0 VPID 1070 APID 1071 PCRPID 1070 - CHANNEL ID 183 NAME "TV Galicia" SATID ffffff TPID 1af4 SID 2204 TYPE 0 APID 1090 PCRPID 1090 - CHANNEL ID 184 NAME "Radio Gallega" SATID ffffff TPID 1af4 SID 2205 TYPE 0 APID 1090 PCRPID 1090 - CHANNEL ID 185 NAME "Retelsat" SATID ffffff TPID 1af4 SID 2212 TYPE 1 VPID 1170 APID 1171 PCRPID 1170 - CHANNEL ID 186 NAME "Musicam 1" SATID ffffff TPID 1af4 SID 2209 TYPE 1 APID 1136 PCRPID 1136 - CHANNEL ID 187 NAME "Musicam 2" SATID ffffff TPID 1af4 SID 220a TYPE 1 APID 1133 PCRPID 1133 - CHANNEL ID 188 NAME "Musicam 3" SATID ffffff TPID 1af4 SID 220b TYPE 1 APID 1136 PCRPID 1136 - CHANNEL ID 189 NAME "Musicam 4" SATID ffffff TPID 1af4 SID 220c TYPE 1 APID 1132 PCRPID 1132 - CHANNEL ID 18a NAME "Musicam 5" SATID ffffff TPID 1af4 SID 220d TYPE 1 APID 1136 PCRPID 1136 - TRANSPONDER ID 1b58 SATID 0000 TYPE 1 FREQ 12673000 POL V SRATE 27500000 FEC 8 - CHANNEL ID 18b NAME "HBCH FUCINO" SATID ffffff TPID 1b58 SID 2bd TYPE 0 VPID c8 APID c9 PCRPID c8 - CHANNEL ID 18c NAME "NTVi" SATID ffffff TPID 1b58 SID 2be TYPE 0 VPID d2 APID d3 APID d4 PCRPID d2 - CHANNEL ID 18d NAME "Test Telespazio" SATID ffffff TPID 1b58 SID 2bf TYPE 0 VPID dc APID dd PCRPID dc - CHANNEL ID 18e NAME "Test Telespazio" SATID ffffff TPID 1b58 SID 2c0 TYPE 0 VPID e6 APID e7 PCRPID e6 - CHANNEL ID 18f NAME "ARMENIA TV" SATID ffffff TPID 1b58 SID 2c1 TYPE 0 VPID f0 APID f1 APID f2 PCRPID f0 - CHANNEL ID 190 NAME "MEDNET" SATID ffffff TPID 1b58 SID 2c3 TYPE 0 VPID 104 APID 105 PCRPID 104 - CHANNEL ID 191 NAME "AL JAZEERA" SATID ffffff TPID 1b58 SID 2c4 TYPE 0 VPID 10e APID 10f PCRPID 10e - CHANNEL ID 192 NAME "TIRRENO SAT" SATID ffffff TPID 1b58 SID 2c5 TYPE 0 VPID 118 APID 12d TTPID 139 PCRPID 118 - CHANNEL ID 193 NAME "RADIO ROCK" SATID ffffff TPID 1b58 SID 2c7 TYPE 0 APID d4 PCRPID d2 - CHANNEL ID 194 NAME "RADIO ARMENIA" SATID ffffff TPID 1b58 SID 2c8 TYPE 0 APID f2 PCRPID f0 - CHANNEL ID 195 NAME "Coming Soon TV" SATID ffffff TPID 1b58 SID 2cd TYPE 0 APID 28 PCRPID 28 - TRANSPONDER ID 1c20 SATID 0000 TYPE 1 FREQ 12149000 POL V SRATE 27500000 FEC 8 - CHANNEL ID 196 NAME "AH-EDP1" SATID ffffff TPID 1c20 SID 1c21 TYPE 0 VPID 60 APID 61 PCRPID 60 - CHANNEL ID 197 NAME "AH-EDP2" SATID ffffff TPID 1c20 SID 1c22 TYPE 0 VPID 70 APID 71 PCRPID 70 - CHANNEL ID 198 NAME "AH-EDP3" SATID ffffff TPID 1c20 SID 1c23 TYPE 0 VPID 24 APID 25 PCRPID 24 - CHANNEL ID 199 NAME "AH-EMP4-DATA" SATID ffffff TPID 1c20 SID 1c24 TYPE 0 PCRPID 92 - CHANNEL ID 19a NAME "Alice" SATID ffffff TPID 1c20 SID 1c34 TYPE 0 VPID a0 APID a1 PCRPID a0 - CHANNEL ID 19b NAME "Nuvolari" SATID ffffff TPID 1c20 SID 1c35 TYPE 0 VPID b0 APID b1 PCRPID b0 - CHANNEL ID 19c NAME "Leonardo" SATID ffffff TPID 1c20 SID 1c36 TYPE 0 VPID 80 APID 81 PCRPID 80 - TRANSPONDER ID 1c84 SATID 0000 TYPE 1 FREQ 12169000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 19d NAME "Discovery" SATID ffffff TPID 1c84 SID 15f TYPE 1 VPID 200 PCRPID 1ffe - CHANNEL ID 19e NAME "R9" SATID ffffff TPID 1c84 SID 160 TYPE 1 VPID 201 PCRPID 1ffe - CHANNEL ID 19f NAME "BBC World" SATID ffffff TPID 1c84 SID 161 TYPE 1 VPID 202 PCRPID 1ffe - CHANNEL ID 1a0 NAME "CNN" SATID ffffff TPID 1c84 SID 162 TYPE 1 VPID 203 PCRPID 1ffe - CHANNEL ID 1a1 NAME "CCTV" SATID ffffff TPID 1c84 SID 163 TYPE 0 VPID 204 PCRPID 1ffe - CHANNEL ID 1a2 NAME "R10" SATID ffffff TPID 1c84 SID 165 TYPE 1 VPID 206 PCRPID 1ffe - CHANNEL ID 1a3 NAME "R8" SATID ffffff TPID 1c84 SID 166 TYPE 1 VPID 207 PCRPID 1ffe - CHANNEL ID 1a4 NAME "FILM SAT" SATID ffffff TPID 1c84 SID 167 TYPE 1 VPID 208 PCRPID 1ffe - CHANNEL ID 1a5 NAME "Cartoon" SATID ffffff TPID 1c84 SID 168 TYPE 1 VPID 203 PCRPID 1ffe - CHANNEL ID 1a6 NAME "Promo" SATID ffffff TPID 1c84 SID 169 TYPE 0 VPID 209 PCRPID 1ffe - CHANNEL ID 1a7 NAME "Tempo" SATID ffffff TPID 1c84 SID 16a TYPE 1 VPID 5a0 APID 28b PCRPID f80 - CHANNEL ID 1a8 NAME "Tempo" SATID ffffff TPID 1c84 SID 16b TYPE 1 APID 295 PCRPID f80 - CHANNEL ID 1a9 NAME "Tempo" SATID ffffff TPID 1c84 SID 16c TYPE 1 APID 29f PCRPID f80 - CHANNEL ID 1aa NAME "Tempo" SATID ffffff TPID 1c84 SID 16d TYPE 1 APID 2a9 PCRPID f80 - CHANNEL ID 1ab NAME "Tempo" SATID ffffff TPID 1c84 SID 16e TYPE 1 APID 2b3 PCRPID f80 - CHANNEL ID 1ac NAME "NOVA INFO" SATID ffffff TPID 1c84 SID 16f TYPE 1 PCRPID 1080 - CHANNEL ID 1ad NAME "NOVA INFO" SATID ffffff TPID 1c84 SID 171 TYPE 1 PCRPID 1080 - CHANNEL ID 1ae NAME "NOVA INFO" SATID ffffff TPID 1c84 SID 172 TYPE 1 PCRPID 1080 - CHANNEL ID 1af NAME "NOVA INFO" SATID ffffff TPID 1c84 SID 173 TYPE 1 VPID 42b PCRPID 1080 - CHANNEL ID 1b0 NAME "NOVA INFO" SATID ffffff TPID 1c84 SID 174 TYPE 1 PCRPID 1080 - CHANNEL ID 1b1 NAME "NOVA INFO" SATID ffffff TPID 1c84 SID 175 TYPE 1 PCRPID 1080 - CHANNEL ID 1b2 NAME "NOVA Cinema" SATID ffffff TPID 1c84 SID 176 TYPE 1 PCRPID 1080 - CHANNEL ID 1b3 NAME "NET" SATID ffffff TPID 1c84 SID 178 TYPE 1 VPID 201 PCRPID 1ffe - CHANNEL ID 1b4 NAME "MAD T.V" SATID ffffff TPID 1c84 SID 179 TYPE 1 VPID 206 PCRPID 1ffe - CHANNEL ID 1b5 NAME "ET-1" SATID ffffff TPID 1c84 SID 17a TYPE 1 VPID 207 PCRPID 1ffe - CHANNEL ID 1b6 SATID ffffff TPID 1c84 SID 17b TYPE 0 PCRPID 1000 - CHANNEL ID 1b7 NAME "ÂïõëÞ" SATID ffffff TPID 1c84 SID 180 TYPE 0 VPID 205 PCRPID 1ffe - TRANSPONDER ID 0131 SATID 0000 TYPE 1 FREQ 12188000 POL V SRATE 27500000 FEC 8 - TRANSPONDER ID 0132 SATID 0000 TYPE 1 FREQ 12203000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 0133 SATID 0000 TYPE 1 FREQ 12211000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 004d SATID 0000 TYPE 1 FREQ 12264500 POL V SRATE 27500000 FEC 8 - CHANNEL ID ffffffff NAME "Deutsche Bank / T1" SATID ffffff TPID 4d SID 1 TYPE 1 VPID 488 PCRPID 488 - CHANNEL ID 7f NAME "Animal Planet" SATID ffffff TPID 4d SID a TYPE 1 VPID 488 PCRPID 488 - CHANNEL ID 80 NAME "Discovery E Europe-English" SATID ffffff TPID 4d SID 14 TYPE 1 VPID 4ec PCRPID 4ec - CHANNEL ID ffffffff NAME "Wuerth KG / T21" SATID ffffff TPID 4d SID 15 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 82 NAME "Discovery Italy" SATID ffffff TPID 4d SID 1e TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID ffffffff NAME "BTI / T31" SATID ffffff TPID 4d SID 1f TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 84 NAME "Discovery Russia" SATID ffffff TPID 4d SID 28 TYPE 1 VPID 5b4 PCRPID 5b4 - CHANNEL ID ffffffff NAME "K-TV (MetroMux) / T41" SATID ffffff TPID 4d SID 29 TYPE 1 VPID 7a8 PCRPID 7a8 - CHANNEL ID 86 NAME "Animal Planet EE" SATID ffffff TPID 4d SID 32 TYPE 1 VPID 618 PCRPID 618 - CHANNEL ID 87 NAME "Animal Planet - Russian" SATID ffffff TPID 4d SID 33 TYPE 1 VPID 618 PCRPID 618 - CHANNEL ID 88 NAME "Discovery Netherlands" SATID ffffff TPID 4d SID 3c TYPE 1 VPID 67c PCRPID 67c - CHANNEL ID ffffffff NAME "Q English" SATID ffffff TPID 4d SID 46 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 8a NAME "Travel and Adventure" SATID ffffff TPID 4d SID 50 TYPE 1 VPID 744 PCRPID 744 - CHANNEL ID 8b NAME "Travel and Adventure- Russian" SATID ffffff TPID 4d SID 51 TYPE 1 VPID 744 PCRPID 744 - CHANNEL ID 8c NAME "New DCP" SATID ffffff TPID 4d SID 12c TYPE 1 APID 4c4 PCRPID 4c4 - CHANNEL ID 8d NAME "CCP" SATID ffffff TPID 4d SID 12d TYPE 1 VPID 4ec PCRPID 4ec - CHANNEL ID ffffffff NAME "Deutsche Bank / T2" SATID ffffff TPID 4d SID 2 TYPE 1 VPID 4ec PCRPID 4ec - CHANNEL ID 93 NAME "Channel Three" SATID ffffff TPID 4d SID 3 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 94 NAME "Channel Four" SATID ffffff TPID 4d SID 4 TYPE 0 VPID 5b4 PCRPID 5b4 - CHANNEL ID 95 NAME "Channel Five" SATID ffffff TPID 4d SID 5 TYPE 0 VPID 618 PCRPID 618 - CHANNEL ID 96 NAME "Channel 6 = Sat 7 Arabic" SATID ffffff TPID 4d SID 6 TYPE 0 VPID 67c PCRPID 67c - CHANNEL ID 97 NAME "Channel Seven" SATID ffffff TPID 4d SID 7 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 98 NAME "Q German" SATID ffffff TPID 4d SID 47 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 99 NAME "Q French" SATID ffffff TPID 4d SID 48 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 9a NAME "Q Dutch" SATID ffffff TPID 4d SID 49 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 1b8 NAME "DTAG / T11" SATID ffffff TPID 4d SID b TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1b9 NAME "DTAG 50 / T12" SATID ffffff TPID 4d SID c TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1ba NAME "Telekom TV" SATID ffffff TPID 4d SID d TYPE 1 VPID 5b4 PCRPID 5b4 - CHANNEL ID 1bb NAME "Gerling / T26" SATID ffffff TPID 4d SID 1a TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1bc NAME "Hornbach-D / T36" SATID ffffff TPID 4d SID 24 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1bd NAME "Hornbach-NL / T38" SATID ffffff TPID 4d SID 26 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1be NAME "Hornbach-CZ / T39" SATID ffffff TPID 4d SID 27 TYPE 1 VPID 550 PCRPID 550 - CHANNEL ID 1bf NAME "Testkanal" SATID ffffff TPID 4d SID 63 TYPE 0 VPID 67c PCRPID 67c - CHANNEL ID 1c0 NAME "KENCAST" SATID ffffff TPID 4d SID 6f TYPE 0 PCRPID 42e - TRANSPONDER ID 1f40 SATID 0000 TYPE 1 FREQ 12302880 POL V SRATE 27500000 FEC 8 - CHANNEL ID 1c1 NAME "SLO-TV1" SATID ffffff TPID 1f40 SID c81 TYPE 1 VPID c8 PCRPID c8 - CHANNEL ID 1c2 NAME "SLO-TV2" SATID ffffff TPID 1f40 SID c82 TYPE 1 VPID cb PCRPID cb - CHANNEL ID 1c3 NAME "POLONIA 1" SATID ffffff TPID 1f40 SID c83 TYPE 0 VPID cd PCRPID cd - CHANNEL ID 1c4 NAME "SLO-RA1-INF" SATID ffffff TPID 1f40 SID c84 TYPE 0 APID fa PCRPID fa - CHANNEL ID 1c5 NAME "SLO-RA2" SATID ffffff TPID 1f40 SID c85 TYPE 0 APID fb PCRPID fb - CHANNEL ID 1c6 NAME "SLO-RA3" SATID ffffff TPID 1f40 SID c86 TYPE 0 APID fc PCRPID fc - CHANNEL ID 1c7 NAME "SUPER 1" SATID ffffff TPID 1f40 SID c87 TYPE 0 VPID cf PCRPID cf - CHANNEL ID 1c8 NAME "NAPOLI INT." SATID ffffff TPID 1f40 SID c8a TYPE 0 VPID f0 PCRPID f0 - CHANNEL ID 1c9 NAME "MAGIC" SATID ffffff TPID 1f40 SID c8b TYPE 0 VPID f5 PCRPID f5 - CHANNEL ID 1ca NAME "COUNTDOWN" SATID ffffff TPID 1f40 SID c8c TYPE 0 VPID eb PCRPID eb - CHANNEL ID 1cb NAME "TBNE" SATID ffffff TPID 1f40 SID c8d TYPE 0 VPID e6 PCRPID e6 - CHANNEL ID 1cc NAME "SICILSAT" SATID ffffff TPID 1f40 SID c8e TYPE 0 VPID e1 PCRPID e1 - TRANSPONDER ID 1fa4 SATID 0000 TYPE 1 FREQ 10892000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 1cd NAME "TVP1" SATID ffffff TPID 1fa4 SID 1 TYPE 1 VPID 101 APID 102 APID 17df TTPID 103 PCRPID 101 - CHANNEL ID 1ce NAME "TVP2" SATID ffffff TPID 1fa4 SID 2 TYPE 1 VPID 141 APID 142 PCRPID 141 - CHANNEL ID 1cf NAME "POLSAT1" SATID ffffff TPID 1fa4 SID 3 TYPE 1 - CHANNEL ID 1d0 NAME "TV4" SATID ffffff TPID 1fa4 SID 4 TYPE 1 VPID 101 APID 102 APID 17df TTPID 103 PCRPID 101 - CHANNEL ID 1d1 NAME "POLSAT2" SATID ffffff TPID 1fa4 SID 5 TYPE 1 VPID 141 APID 142 PCRPID 141 - CHANNEL ID 1d2 NAME "WOT" SATID ffffff TPID 1fa4 SID 6 TYPE 1 - CHANNEL ID 1d3 NAME "DISCOVERY" SATID ffffff TPID 1fa4 SID f TYPE 1 VPID 101 APID 102 APID 17df TTPID 103 PCRPID 101 - CHANNEL ID 1d4 NAME "ANIMAL PLANET" SATID ffffff TPID 1fa4 SID 10 TYPE 1 VPID 141 APID 142 PCRPID 141 - CHANNEL ID 1d5 NAME "EpgOpenTV" SATID ffffff TPID 1fa4 SID e66 TYPE 0 - TRANSPONDER ID 2008 SATID 0000 TYPE 1 FREQ 12341001 POL V SRATE 27500000 FEC 8 - CHANNEL ID 1d6 NAME "P10" SATID ffffff TPID 2008 SID 2d51 TYPE 1 VPID a0 APID 50 APID 51 PCRPID b0 - CHANNEL ID 1d7 NAME "P11" SATID ffffff TPID 2008 SID 2d53 TYPE 1 VPID a1 APID 54 APID 55 PCRPID b0 - CHANNEL ID 1d8 NAME "P12" SATID ffffff TPID 2008 SID 2d55 TYPE 1 VPID a2 APID 58 APID 59 PCRPID b0 - CHANNEL ID 1d9 NAME "P13" SATID ffffff TPID 2008 SID 2d57 TYPE 1 VPID a3 APID 5c APID 5d PCRPID b0 - CHANNEL ID 1da NAME "P14" SATID ffffff TPID 2008 SID 2d59 TYPE 1 VPID a4 APID 60 APID 61 PCRPID b0 - CHANNEL ID 1db NAME "P15" SATID ffffff TPID 2008 SID 2d5b TYPE 1 VPID a5 APID 64 APID 65 PCRPID b0 - CHANNEL ID 1dc NAME "P16" SATID ffffff TPID 2008 SID 2d5d TYPE 1 VPID a6 APID 68 APID 69 PCRPID b0 - CHANNEL ID 1dd NAME "PREMIUM" SATID ffffff TPID 2008 SID 2d5f TYPE 1 PCRPID af - CHANNEL ID 1de NAME "+F1" SATID ffffff TPID 2008 SID 2d61 TYPE 1 VPID a0 APID 51 APID 298 PCRPID b0 - CHANNEL ID 1df NAME "+F1" SATID ffffff TPID 2008 SID 2d63 TYPE 1 VPID a1 APID 29a APID 55 PCRPID b0 - CHANNEL ID 1e0 NAME "+F1" SATID ffffff TPID 2008 SID 2d65 TYPE 1 VPID a2 APID 59 APID 29b PCRPID b0 - CHANNEL ID 1e1 NAME "+F1" SATID ffffff TPID 2008 SID 2d67 TYPE 1 VPID a3 APID 5d APID 2a2 PCRPID b0 - CHANNEL ID 1e2 NAME "+F1" SATID ffffff TPID 2008 SID 2d69 TYPE 1 VPID a4 APID 61 APID 60 PCRPID b0 - CHANNEL ID 1e3 NAME "+F1" SATID ffffff TPID 2008 SID 2d6b TYPE 1 VPID a5 APID 65 APID 2a4 PCRPID b0 - CHANNEL ID 1e4 NAME "+F1" SATID ffffff TPID 2008 SID 2d6d TYPE 1 VPID a6 APID 69 APID 29a PCRPID b0 - CHANNEL ID 1e5 NAME "RMC" SATID ffffff TPID 2008 SID 2d6f TYPE 1 PCRPID b8 - CHANNEL ID 1e6 NAME "R101" SATID ffffff TPID 2008 SID 2d70 TYPE 1 PCRPID b8 - CHANNEL ID 1e7 NAME "RRAD" SATID ffffff TPID 2008 SID 2d71 TYPE 1 PCRPID b8 - TRANSPONDER ID 206c SATID 0000 TYPE 1 FREQ 10892000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 1e8 NAME "ON" SATID ffffff TPID 206c SID 7 TYPE 1 VPID 161 APID 162 PCRPID 161 - CHANNEL ID 1e9 NAME "DLA-CIEBIE" SATID ffffff TPID 206c SID 8 TYPE 1 VPID 211 APID 212 PCRPID 211 - CHANNEL ID 1ea NAME "KOMEDIA" SATID ffffff TPID 206c SID 9 TYPE 1 VPID 161 APID 162 PCRPID 161 - CHANNEL ID 1eb NAME "SMYK" SATID ffffff TPID 206c SID a TYPE 1 VPID 211 APID 212 PCRPID 211 - CHANNEL ID 1ec NAME "RELAKS" SATID ffffff TPID 206c SID b TYPE 1 VPID 161 APID 162 PCRPID 161 - CHANNEL ID 1ed NAME "INFO" SATID ffffff TPID 206c SID c TYPE 1 VPID 211 APID 212 PCRPID 211 - CHANNEL ID 1ee NAME "POLSAT SPORT" SATID ffffff TPID 206c SID d TYPE 1 VPID 161 APID 162 PCRPID 161 - TRANSPONDER ID 20d0 SATID 0000 TYPE 1 FREQ 12379000 POL V SRATE 27500000 FEC 8 - CHANNEL ID 1ef NAME "Paris Première" SATID ffffff TPID 20d0 SID bb9 TYPE 1 VPID bcd APID bd7 PCRPID bcd - CHANNEL ID 1f0 NAME "OCC HB3" SATID ffffff TPID 20d0 SID bba TYPE 0 VPID bce APID bd8 PCRPID bce - CHANNEL ID 1f1 NAME "TELE 24 Switzerland" SATID ffffff TPID 20d0 SID bbb TYPE 0 VPID bcf APID bd9 PCRPID bcf - CHANNEL ID 1f2 NAME "AIR MEDIA" SATID ffffff TPID 20d0 SID c0f TYPE 0 APID dd1 PCRPID dd1 - CHANNEL ID 1f3 NAME "Abu Dhabi TV" SATID ffffff TPID 20d0 SID bbc TYPE 0 VPID bd0 APID bda PCRPID bd0 - CHANNEL ID 1f4 NAME "EMIRAT FM 1" SATID ffffff TPID 20d0 SID c0b TYPE 0 APID dcd PCRPID dcd - CHANNEL ID 1f5 NAME "EMIRAT FM2" SATID ffffff TPID 20d0 SID c0c TYPE 0 APID dce PCRPID dce - CHANNEL ID 1f6 NAME "Radio Italia " SATID ffffff TPID 20d0 SID c09 TYPE 0 APID dcb PCRPID dcb - CHANNEL ID 1f7 NAME "EQUIDIA INTER." SATID ffffff TPID 20d0 SID beb TYPE 1 VPID cf9 APID d03 APID d0d APID d17 PCRPID cf9 - CHANNEL ID 1f8 NAME "RTV MONTENEGRO" SATID ffffff TPID 20d0 SID bbe TYPE 0 VPID bd2 APID bdc PCRPID bd2 - CHANNEL ID 1f9 NAME "Radio Montenegro" SATID ffffff TPID 20d0 SID c10 TYPE 0 APID dd2 PCRPID dd2 - CHANNEL ID 1fa NAME "SERTE TEST" SATID ffffff TPID 20d0 SID bbd TYPE 0 VPID bd1 PCRPID bd1 - CHANNEL ID 1fb NAME "GAME 1" SATID ffffff TPID 20d0 SID bbf TYPE 1 VPID bd3 APID bdd PCRPID bd3 - TRANSPONDER ID 0055 SATID 0000 TYPE 1 FREQ 12398781 POL H SRATE 27500000 FEC 8 - CHANNEL ID 1fc NAME "SF 2" SATID ffffff TPID 55 SID 38b TYPE 1 VPID a3 APID 5c APID 5d TTPID 29 PCRPID a3 - CHANNEL ID 1fd NAME "SRG SSR Sat Access" SATID ffffff TPID 55 SID 38e TYPE 0 VPID a5 APID 62 APID 63 TTPID 2f PCRPID a5 - CHANNEL ID 1fe NAME "SF 1" SATID ffffff TPID 55 SID 385 TYPE 1 VPID a0 APID 50 APID 51 TTPID 20 PCRPID a0 - CHANNEL ID 1ff NAME "TSR 1" SATID ffffff TPID 55 SID 386 TYPE 1 VPID a1 APID 54 APID 55 TTPID 23 PCRPID a1 - CHANNEL ID 200 NAME "TSI 1" SATID ffffff TPID 55 SID 387 TYPE 1 VPID a2 APID 58 APID 59 TTPID 26 PCRPID a2 - CHANNEL ID 201 NAME "TSR 2" SATID ffffff TPID 55 SID 38c TYPE 1 VPID a4 APID 60 APID 61 TTPID 2c PCRPID a4 - CHANNEL ID 202 NAME "TSI 2" SATID ffffff TPID 55 SID 38d TYPE 1 VPID a6 APID 64 APID 65 TTPID 32 PCRPID a6 - CHANNEL ID 203 NAME "OPTION MUSIQUE" SATID ffffff TPID 55 SID 3bd TYPE 0 APID cc PCRPID cc - CHANNEL ID 204 NAME "ESPACE 2" SATID ffffff TPID 55 SID 3be TYPE 0 APID cd PCRPID cd - CHANNEL ID 205 NAME "SRI-F-I" SATID ffffff TPID 55 SID 3b7 TYPE 0 APID c7 PCRPID c7 - CHANNEL ID 206 NAME "SRI-EUROPA" SATID ffffff TPID 55 SID 3b9 TYPE 0 VPID 230 APID c8 PCRPID c8 - TRANSPONDER ID 2198 SATID 0000 TYPE 1 FREQ 12341001 POL V SRATE 27500000 FEC 8 - CHANNEL ID 207 NAME "POLO" SATID ffffff TPID 2198 SID 2db5 TYPE 1 VPID a0 APID 50 PCRPID a0 - CHANNEL ID 208 NAME "PLANETE" SATID ffffff TPID 2198 SID 2db7 TYPE 1 VPID a1 APID 54 PCRPID a1 - CHANNEL ID 209 NAME "JIMMY" SATID ffffff TPID 2198 SID 2db9 TYPE 1 VPID a2 APID 58 PCRPID a2 - CHANNEL ID 20a NAME "INN" SATID ffffff TPID 2198 SID 2dbb TYPE 1 VPID a3 APID 5c PCRPID a3 - CHANNEL ID 20b NAME "CIN1" SATID ffffff TPID 2198 SID 2dbd TYPE 1 VPID a4 APID 60 PCRPID a4 - CHANNEL ID 20c NAME "CIN2" SATID ffffff TPID 2198 SID 2dbf TYPE 1 VPID a5 APID 64 PCRPID a5 - CHANNEL ID 20d NAME "CINC" SATID ffffff TPID 2198 SID 2dc1 TYPE 1 VPID a6 APID 68 PCRPID a6 - CHANNEL ID 20e NAME "SEASONS" SATID ffffff TPID 2198 SID 2dc3 TYPE 1 VPID a7 APID 6c PCRPID a7 - CHANNEL ID 20f NAME "WISHLINE" SATID ffffff TPID 2198 SID 2dc5 TYPE 1 VPID a8 APID 55 APID 5d APID 59 PCRPID a8 - CHANNEL ID 210 NAME "MARCOPOLO" SATID ffffff TPID 2198 SID 2dc7 TYPE 1 VPID a0 APID 50 APID 51 PCRPID a0 - TRANSPONDER ID 0049 SATID 0000 TYPE 1 FREQ 12436999 POL H SRATE 27500000 FEC 8 - CHANNEL ID 211 NAME "JAAM-E-JAM 1" SATID ffffff TPID 49 SID 1 TYPE 0 VPID a0 APID 50 APID 51 PCRPID a0 - CHANNEL ID 212 NAME "JAAM-E-JAM 2" SATID ffffff TPID 49 SID 2 TYPE 0 VPID a1 APID 52 APID 53 TTPID 21 PCRPID a1 - CHANNEL ID 213 NAME "SAHAR" SATID ffffff TPID 49 SID 3 TYPE 0 VPID a2 APID 54 APID 55 PCRPID a2 - CHANNEL ID 214 NAME "TEST(SAHAR)" SATID ffffff TPID 49 SID 4 TYPE 0 VPID a3 APID 56 APID 57 PCRPID a3 - CHANNEL ID 215 NAME "IRINN" SATID ffffff TPID 49 SID 5 TYPE 0 VPID a4 APID 58 APID 59 PCRPID a4 - CHANNEL ID 216 NAME "TEST 2" SATID ffffff TPID 49 SID 6 TYPE 0 VPID a5 APID 5a PCRPID a5 - CHANNEL ID 217 NAME "IRIB1 RADIO" SATID ffffff TPID 49 SID 7 TYPE 0 APID 51 PCRPID a0 - CHANNEL ID 218 NAME "IRIB ARABIC /International 1 Radio" SATID ffffff TPID 49 SID 8 TYPE 0 APID 53 PCRPID a1 - TRANSPONDER ID 013d SATID 0000 TYPE 1 FREQ 12460000 POL V SRATE 27500000 FEC 8 - TRANSPONDER ID 013e SATID 0000 TYPE 1 FREQ 12484000 POL V SRATE 27500000 FEC 8 - TRANSPONDER ID 22c4 SATID 0000 TYPE 1 FREQ 12475499 POL H SRATE 27500000 FEC 8 - CHANNEL ID 219 NAME "INT1 FAMILY RADIO" SATID ffffff TPID 22c4 SID 2977 TYPE 0 APID 3c1 PCRPID 3c1 - CHANNEL ID 21a NAME "RADIO 74" SATID ffffff TPID 22c4 SID 2974 TYPE 0 APID 399 PCRPID 399 - CHANNEL ID 21b NAME "R 74 INT." SATID ffffff TPID 22c4 SID 2975 TYPE 0 APID 3a3 PCRPID 3a3 - CHANNEL ID 21c NAME "FAMILY Radio" SATID ffffff TPID 22c4 SID 2976 TYPE 0 APID 3b7 PCRPID 3b7 - CHANNEL ID 21d NAME "Temp" SATID ffffff TPID 22c4 SID 296f TYPE 0 VPID 303 PCRPID 300 - CHANNEL ID 21e NAME "SPREE Radio" SATID ffffff TPID 22c4 SID 299c TYPE 0 APID 1f5 PCRPID 1f5 - CHANNEL ID 21f NAME " RVI ( VRT ) " SATID ffffff TPID 22c4 SID 2972 TYPE 0 APID 385 PCRPID 385 - CHANNEL ID 220 NAME "EbS" SATID ffffff TPID 22c4 SID 2969 TYPE 0 VPID 65 APID c9 APID ca APID cb APID cc APID cd APID ce APID cf APID d0 APID d1 APID d2 APID d3 APID d4 APID d5 APID d6 APID d7 APID d8 TTPID 12d PCRPID 65 - CHANNEL ID 221 NAME "MOU.2" SATID ffffff TPID 22c4 SID 296a TYPE 0 VPID 2a PCRPID 2a - CHANNEL ID 222 NAME "MIZIK TROPICAL" SATID ffffff TPID 22c4 SID 296e TYPE 0 VPID 1b3 APID 1b4 PCRPID 1b3 - CHANNEL ID 223 NAME "MIZIK TROPICAL Radio" SATID ffffff TPID 22c4 SID 2970 TYPE 0 APID 321 PCRPID 321 - CHANNEL ID 224 NAME "Framboise Nord (CH)" SATID ffffff TPID 22c4 SID 2978 TYPE 0 APID 3cb PCRPID 3cb - CHANNEL ID 225 NAME "Framboise Sud (CH)" SATID ffffff TPID 22c4 SID 2979 TYPE 0 APID 3d5 PCRPID 3d5 - CHANNEL ID 226 NAME "PINK PLUS" SATID ffffff TPID 22c4 SID 296d TYPE 1 VPID 134 APID 100 APID 101 PCRPID 24 - CHANNEL ID 227 NAME "LIBERTYTV.COM" SATID ffffff TPID 22c4 SID 296b TYPE 0 VPID 3ad APID 3ae PCRPID 3ad - CHANNEL ID 228 NAME "KURDSAT" SATID ffffff TPID 22c4 SID 297a TYPE 0 VPID 258 APID 259 PCRPID 1ffe - CHANNEL ID 229 NAME "test2" SATID ffffff TPID 22c4 SID 297c TYPE 0 VPID bb8 APID bb9 TTPID bba PCRPID bb8 - TRANSPONDER ID 2328 SATID 0000 TYPE 1 FREQ 12519840 POL V SRATE 27500000 FEC 8 - CHANNEL ID 22a NAME "HRT-TV1" SATID ffffff TPID 2328 SID 206d TYPE 1 VPID 64 APID 65 TTPID 66 PCRPID 64 - CHANNEL ID 22b NAME "HRT-TV2" SATID ffffff TPID 2328 SID 206e TYPE 1 VPID 67 APID 68 TTPID 66 PCRPID 67 - CHANNEL ID 22c NAME "HRT-TV3" SATID ffffff TPID 2328 SID 206f TYPE 1 VPID 69 APID 6a TTPID 66 PCRPID 69 - CHANNEL ID 22d NAME "HRT-HR1" SATID ffffff TPID 2328 SID 2071 TYPE 0 APID 96 PCRPID 96 - CHANNEL ID 22e NAME "HRT-HR2" SATID ffffff TPID 2328 SID 2072 TYPE 0 APID 97 PCRPID 97 - CHANNEL ID 22f NAME "HRT-HR3" SATID ffffff TPID 2328 SID 2073 TYPE 0 APID 98 PCRPID 98 - CHANNEL ID 230 NAME "SICILIA INTERNATIONAL" SATID ffffff TPID 2328 SID 2075 TYPE 0 VPID 1f5 PCRPID 1f5 - CHANNEL ID 231 NAME "HRT-NATIONAL" SATID ffffff TPID 2328 SID 2070 TYPE 1 VPID 6b APID 6c TTPID 66 PCRPID 6b - CHANNEL ID 232 NAME "HRT-TEST" SATID ffffff TPID 2328 SID 2074 TYPE 1 VPID 6d APID 6e TTPID 66 PCRPID 6d - CHANNEL ID 233 NAME "SARDEGNA UNO" SATID ffffff TPID 2328 SID 2076 TYPE 0 VPID 1f7 PCRPID 1f7 - CHANNEL ID 234 NAME "R-HRVATSKA" SATID ffffff TPID 2328 SID 2077 TYPE 0 APID 99 PCRPID 99 - CHANNEL ID 235 NAME "EuroMed" SATID ffffff TPID 2328 SID 2078 TYPE 0 VPID 1fe PCRPID 1fe - CHANNEL ID 236 NAME "TGRT" SATID ffffff TPID 2328 SID 2079 TYPE 0 VPID 1f9 PCRPID 1f9 - CHANNEL ID 237 NAME "HR-TEST" SATID ffffff TPID 2328 SID 207a TYPE 0 APID 9a PCRPID 9a - CHANNEL ID 238 NAME "MINI-BVN" SATID ffffff TPID 2328 SID 207b TYPE 0 VPID d2 PCRPID d6 - TRANSPONDER ID 238c SATID 0000 TYPE 1 FREQ 12713000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 239 NAME "SIMS 91 LARIO" SATID ffffff TPID 238c SID 2262 TYPE 0 - CHANNEL ID 23a NAME "SKYPLEX TXP91" SATID ffffff TPID 238c SID 2261 TYPE 0 - CHANNEL ID 23b NAME "Skygate 18" SATID ffffff TPID 238c SID 2 TYPE 0 - CHANNEL ID 23c NAME "MA12_2905" SATID ffffff TPID 238c SID 226a TYPE 0 PCRPID 1113 - CHANNEL ID 23d NAME "ES13_1107" SATID ffffff TPID 238c SID 226b TYPE 0 PCRPID 1114 - CHANNEL ID 23e NAME "ASTONv0107" SATID ffffff TPID 238c SID 226f TYPE 0 PCRPID 1112 - CHANNEL ID 23f NAME "sisal" SATID ffffff TPID 238c SID 1 TYPE 1 VPID 1104 PCRPID 1104 - CHANNEL ID 240 NAME "service" SATID ffffff TPID 238c SID 3 TYPE 1 VPID 1104 PCRPID 1104 - CHANNEL ID 241 NAME "Skyplex 19" SATID ffffff TPID 238c SID 231f TYPE 0 - CHANNEL ID 242 NAME "Network" SATID ffffff TPID 238c SID 2320 TYPE 0 - CHANNEL ID 243 NAME "www.travel" SATID ffffff TPID 238c SID 2321 TYPE 0 VPID 49c APID 49f APID 4a0 TTPID 49d PCRPID 49c - CHANNEL ID 244 NAME "MagicStar" SATID ffffff TPID 238c SID 2322 TYPE 0 APID 4a4 PCRPID 4a4 - CHANNEL ID 245 NAME "Skygate 8" SATID ffffff TPID 238c SID 22de TYPE 0 - CHANNEL ID 246 NAME "UDLR" SATID ffffff TPID 238c SID 22df TYPE 0 APID 19fd - CHANNEL ID 247 NAME "UDLR UDcast" SATID ffffff TPID 238c SID 22e0 TYPE 0 - CHANNEL ID 248 NAME "Skygate 17" SATID ffffff TPID 238c SID 2264 TYPE 0 - CHANNEL ID 249 NAME "Netshow" SATID ffffff TPID 238c SID 226d TYPE 0 - CHANNEL ID 24a NAME "MEDIOLANUM" SATID ffffff TPID 238c SID 226e TYPE 0 VPID 1006 PCRPID 1006 - CHANNEL ID 24b NAME "Skygate 10" SATID ffffff TPID 238c SID 22c5 TYPE 0 - CHANNEL ID 24c NAME "HitCast Data 1" SATID ffffff TPID 238c SID 22c6 TYPE 0 - CHANNEL ID 24d NAME "HitCast S.Amer." SATID ffffff TPID 238c SID 22c7 TYPE 0 - CHANNEL ID 24e NAME "Skygate 1" SATID ffffff TPID 238c SID 22ac TYPE 0 - CHANNEL ID 24f NAME "MonteCarloSat" SATID ffffff TPID 238c SID 22ad TYPE 0 VPID 1407 APID 1402 PCRPID 1407 - CHANNEL ID 250 NAME "Bulgaria Radio" SATID ffffff TPID 238c SID 227c TYPE 0 APID 1207 - CHANNEL ID 251 NAME "skygate 600" SATID ffffff TPID 238c SID 227a TYPE 0 - TRANSPONDER ID 23f0 SATID 0000 TYPE 1 FREQ 12558201 POL V SRATE 27500000 FEC 8 - CHANNEL ID 252 NAME "SKYPLEX TXP92" SATID ffffff TPID 23f0 SID 238d TYPE 0 - CHANNEL ID 253 SATID ffffff TPID 23f0 SID 2491 TYPE 0 - CHANNEL ID 254 SATID ffffff TPID 23f0 SID 2492 TYPE 0 VPID b09 APID b02 TTPID b0a PCRPID b09 - CHANNEL ID 255 SATID ffffff TPID 23f0 SID 2493 TYPE 0 VPID b09 TTPID b0a PCRPID b0d - CHANNEL ID 256 SATID ffffff TPID 23f0 SID 2494 TYPE 0 VPID b09 TTPID b0a PCRPID b04 - CHANNEL ID 257 NAME "SKY_4" SATID ffffff TPID 23f0 SID 2487 TYPE 0 - CHANNEL ID 258 NAME "ESP Int'l" SATID ffffff TPID 23f0 SID 2488 TYPE 1 VPID a0f APID a02 APID a03 TTPID a10 PCRPID a0f - CHANNEL ID 259 NAME "ESP Romanian" SATID ffffff TPID 23f0 SID 2489 TYPE 1 APID a09 PCRPID a2c - CHANNEL ID 25a NAME "ESP Dutch" SATID ffffff TPID 23f0 SID 248a TYPE 1 VPID a0f APID a04 TTPID a10 PCRPID a2c - CHANNEL ID 25b NAME "ESP PolisI" SATID ffffff TPID 23f0 SID 248b TYPE 1 APID a05 PCRPID a2c - CHANNEL ID 25c SATID ffffff TPID 23f0 SID 248c TYPE 0 VPID a0f APID a06 TTPID a10 PCRPID a2c - CHANNEL ID 25d SATID ffffff TPID 23f0 SID 248d TYPE 0 VPID a0f APID a04 TTPID a10 PCRPID a2c - CHANNEL ID 25e SATID ffffff TPID 23f0 SID 248e TYPE 0 VPID a0f APID a08 TTPID a10 PCRPID a2c - CHANNEL ID 25f SATID ffffff TPID 23f0 SID 248f TYPE 0 APID a02 APID a03 APID a04 APID a05 PCRPID a0f - CHANNEL ID 260 SATID ffffff TPID 23f0 SID 2423 TYPE 0 - TRANSPONDER ID 0143 SATID 0000 TYPE 1 FREQ 12573000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 0144 SATID 0000 TYPE 1 FREQ 12590000 POL H SRATE 27500000 FEC 8 - TRANSPONDER ID 24b8 SATID 0000 TYPE 1 FREQ 12596560 POL V SRATE 27500000 FEC 8 - CHANNEL ID 261 NAME "JSTV 1" SATID ffffff TPID 24b8 SID 2015 TYPE 0 VPID 7d0 APID 7d2 APID 7d3 APID 7d2 PCRPID 7d0 - CHANNEL ID 262 NAME "JSTV 2" SATID ffffff TPID 24b8 SID 2016 TYPE 0 VPID 7db APID 7dc APID 7dd APID 7dd PCRPID 7db - CHANNEL ID 263 NAME "MBC" SATID ffffff TPID 24b8 SID 2009 TYPE 0 VPID a0 APID 50 APID 51 TTPID 20 PCRPID a0 - CHANNEL ID 264 NAME "Service 2" SATID ffffff TPID 24b8 SID 200a TYPE 0 VPID a1 APID 54 PCRPID a1 - CHANNEL ID 265 NAME "NITV" SATID ffffff TPID 24b8 SID 200c TYPE 0 VPID a3 APID 5c PCRPID a3 - CHANNEL ID 266 NAME "SIMAYE AZADI" SATID ffffff TPID 24b8 SID 200f TYPE 0 VPID a6 APID 6a PCRPID a6 - CHANNEL ID 267 NAME "BET" SATID ffffff TPID 24b8 SID 2010 TYPE 0 VPID a7 APID 6c APID 6d PCRPID a7 - CHANNEL ID 268 NAME "CNNI" SATID ffffff TPID 24b8 SID 2011 TYPE 1 VPID a8 APID 70 APID 71 TTPID 38 PCRPID a8 - CHANNEL ID 269 NAME "EuroNews" SATID ffffff TPID 24b8 SID 2013 TYPE 0 VPID 8ad APID 8b7 APID 8b8 APID 8b9 APID 8ba APID 8bb APID 8bc APID 8bd APID 8be TTPID 300 PCRPID 8ad - CHANNEL ID 26a NAME "Canal Rural" SATID ffffff TPID 24b8 SID 2014 TYPE 0 VPID 911 APID 91b APID 91c PCRPID 911 - CHANNEL ID 26b NAME "MediaHW" SATID ffffff TPID 24b8 SID 2063 TYPE 0 PCRPID fa0 - TRANSPONDER ID 251c SATID 0000 TYPE 1 FREQ 12615000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 26c SATID ffffff TPID 251c SID fffe TYPE 0 - CHANNEL ID 26d NAME "MMOV" SATID ffffff TPID 251c SID f46 TYPE 1 VPID a10 PCRPID a00 - CHANNEL ID 26e NAME "MMOV" SATID ffffff TPID 251c SID f49 TYPE 1 VPID a12 PCRPID a01 - CHANNEL ID 26f NAME "MMOV" SATID ffffff TPID 251c SID f4d TYPE 1 VPID a14 PCRPID a02 - CHANNEL ID 270 NAME "MMOV" SATID ffffff TPID 251c SID f4e TYPE 1 VPID a16 PCRPID a03 - CHANNEL ID 271 NAME "MMOV" SATID ffffff TPID 251c SID f4f TYPE 1 VPID a18 PCRPID a04 - CHANNEL ID 272 NAME "MMOV" SATID ffffff TPID 251c SID f50 TYPE 1 VPID a1a PCRPID a05 - CHANNEL ID 273 NAME "SC 1" SATID ffffff TPID 251c SID f51 TYPE 1 VPID a07 PCRPID a06 - CHANNEL ID 274 NAME "SC 2" SATID ffffff TPID 251c SID f54 TYPE 1 VPID a0a PCRPID a06 - CHANNEL ID 275 NAME "SC 3" SATID ffffff TPID 251c SID f57 TYPE 1 VPID a0d PCRPID a06 - CHANNEL ID 276 NAME "MC20" SATID ffffff TPID 251c SID f5f TYPE 1 APID 900 PCRPID 900 - CHANNEL ID 277 NAME "MC21" SATID ffffff TPID 251c SID f62 TYPE 1 APID 901 PCRPID 901 - CHANNEL ID 278 NAME "MC22" SATID ffffff TPID 251c SID f65 TYPE 1 APID 902 PCRPID 902 - CHANNEL ID 279 NAME "MC23" SATID ffffff TPID 251c SID f68 TYPE 1 APID 903 PCRPID 903 - CHANNEL ID 27a NAME "MC24" SATID ffffff TPID 251c SID f6b TYPE 1 APID 904 PCRPID 904 - CHANNEL ID 27b NAME "MC25" SATID ffffff TPID 251c SID f6e TYPE 1 APID 905 PCRPID 905 - CHANNEL ID 27c NAME "MC26" SATID ffffff TPID 251c SID f71 TYPE 1 APID 906 PCRPID 906 - CHANNEL ID 27d NAME "MC27" SATID ffffff TPID 251c SID f74 TYPE 1 APID 907 PCRPID 907 - CHANNEL ID 27e NAME "MC28" SATID ffffff TPID 251c SID f77 TYPE 1 APID 908 PCRPID 908 - CHANNEL ID 27f NAME "MC29" SATID ffffff TPID 251c SID f7a TYPE 1 APID 909 PCRPID 909 - CHANNEL ID 280 NAME "MC30" SATID ffffff TPID 251c SID f7d TYPE 1 APID 90a PCRPID 90a - CHANNEL ID 281 NAME "MC31" SATID ffffff TPID 251c SID f80 TYPE 1 APID 90b PCRPID 90b - CHANNEL ID 282 NAME "MC32" SATID ffffff TPID 251c SID f83 TYPE 1 APID 90c PCRPID 90c - CHANNEL ID 283 NAME "MC33" SATID ffffff TPID 251c SID f86 TYPE 1 APID 90d PCRPID 90d - CHANNEL ID 284 NAME "MC34" SATID ffffff TPID 251c SID f89 TYPE 1 APID 90e PCRPID 90e - CHANNEL ID 285 NAME "MC35" SATID ffffff TPID 251c SID f8c TYPE 1 APID 90f PCRPID 90f - CHANNEL ID 286 NAME "MC36" SATID ffffff TPID 251c SID f8f TYPE 1 APID 910 PCRPID 910 - CHANNEL ID 287 NAME "MC37" SATID ffffff TPID 251c SID f92 TYPE 1 APID 911 PCRPID 911 - CHANNEL ID 288 NAME "MC38" SATID ffffff TPID 251c SID f95 TYPE 1 APID 912 PCRPID 912 - CHANNEL ID 289 NAME "MC39" SATID ffffff TPID 251c SID f98 TYPE 1 APID 913 PCRPID 913 - TRANSPONDER ID 2580 SATID 0000 TYPE 1 FREQ 12635000 POL V SRATE 27500000 FEC 8 - CHANNEL ID 28a SATID ffffff TPID 2580 SID fffe TYPE 0 - CHANNEL ID 28b NAME "SC 4" SATID ffffff TPID 2580 SID fa1 TYPE 1 VPID a90 PCRPID a83 - CHANNEL ID 28c NAME "SC 5" SATID ffffff TPID 2580 SID fa2 TYPE 1 VPID a88 PCRPID a83 - CHANNEL ID 28d NAME "SC 6" SATID ffffff TPID 2580 SID fa3 TYPE 1 VPID a8d PCRPID a83 - CHANNEL ID 28e NAME "MMOV" SATID ffffff TPID 2580 SID fa7 TYPE 1 VPID a84 PCRPID a80 - CHANNEL ID 28f NAME "MMOV" SATID ffffff TPID 2580 SID faa TYPE 1 VPID a86 PCRPID a81 - CHANNEL ID 290 NAME "MMOV" SATID ffffff TPID 2580 SID fb0 TYPE 1 VPID a93 PCRPID a82 - CHANNEL ID 291 NAME "MMOV" SATID ffffff TPID 2580 SID fb3 TYPE 1 VPID a95 PCRPID a8b - CHANNEL ID 292 NAME "MMOV" SATID ffffff TPID 2580 SID fb6 TYPE 1 VPID a97 PCRPID a8c - CHANNEL ID 293 NAME "MMOV" SATID ffffff TPID 2580 SID fb9 TYPE 1 VPID b03 PCRPID b00 - CHANNEL ID 294 NAME "MMOV" SATID ffffff TPID 2580 SID fbc TYPE 1 VPID b05 PCRPID b01 - TRANSPONDER ID 25e4 SATID 0000 TYPE 1 FREQ 12654000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 295 NAME "Sharjah Arabsat Bouquet" SATID ffffff TPID 25e4 SID 1 TYPE 0 VPID 488 PCRPID 488 - CHANNEL ID 296 NAME "Qatar Arabsat Bouquet" SATID ffffff TPID 25e4 SID 2 TYPE 0 VPID 4ec PCRPID 4ec - CHANNEL ID 297 NAME "Saudi 1 Arabsat Bouquet" SATID ffffff TPID 25e4 SID 3 TYPE 0 VPID 550 PCRPID 550 - CHANNEL ID 298 NAME "Kuwait Arabsat Bouquet" SATID ffffff TPID 25e4 SID 4 TYPE 0 VPID 5b4 PCRPID 5b4 - CHANNEL ID 299 NAME "Libya Arabsat Bouquet" SATID ffffff TPID 25e4 SID 5 TYPE 0 VPID 618 PCRPID 618 - CHANNEL ID 29a NAME "Sudan Arabsat Bouquet" SATID ffffff TPID 25e4 SID 6 TYPE 0 VPID 67c PCRPID 67c - CHANNEL ID 29b NAME "Oman Arabsat Bouquet" SATID ffffff TPID 25e4 SID 7 TYPE 0 VPID 6e0 PCRPID 6e0 - CHANNEL ID 29c NAME "Jordan Arabsat Bouquet" SATID ffffff TPID 25e4 SID 8 TYPE 0 VPID 744 PCRPID 744 - CHANNEL ID 29d NAME "IRAQ TV" SATID ffffff TPID 25e4 SID 9 TYPE 0 VPID 7a8 PCRPID 7a8 - CHANNEL ID 29e NAME "Dubai Sport" SATID ffffff TPID 25e4 SID a TYPE 0 VPID 424 PCRPID 424 - CHANNEL ID 29f NAME "Qatar A2 Arabsat Bouquet" SATID ffffff TPID 25e4 SID c TYPE 0 APID 4c5 PCRPID 4c5 - CHANNEL ID 2a0 NAME "Saudi1 A2 Arabsat Bouquet" SATID ffffff TPID 25e4 SID d TYPE 0 APID 529 PCRPID 529 - CHANNEL ID 2a1 NAME "Kuwait A2 Arabsat Bouquet" SATID ffffff TPID 25e4 SID e TYPE 0 APID 58d PCRPID 58d - CHANNEL ID 2a2 NAME "Jordan A2 Arabsat Bouquet" SATID ffffff TPID 25e4 SID 12 TYPE 0 APID 71d PCRPID 71d - CHANNEL ID 2a3 NAME "Radio dubai sport" SATID ffffff TPID 25e4 SID 13 TYPE 0 APID 3fd PCRPID 3fd - TRANSPONDER ID 2648 SATID 0000 TYPE 1 FREQ 12673000 POL V SRATE 27500000 FEC 8 - CHANNEL ID 2a4 NAME "Digitaly" SATID ffffff TPID 2648 SID 106b TYPE 0 VPID dc APID dd APID de PCRPID dc - CHANNEL ID 2a5 NAME "Telemarket" SATID ffffff TPID 2648 SID 1073 TYPE 0 VPID 15e APID 15f PCRPID 15e - CHANNEL ID 2a6 NAME "Internet data 1" SATID ffffff TPID 2648 SID 1074 TYPE 0 TTPID 11f - CHANNEL ID 2a7 NAME "eVision" SATID ffffff TPID 2648 SID 1076 TYPE 0 VPID 168 APID 169 APID 16a APID 1be6 PCRPID 168 - CHANNEL ID 2a8 NAME "ANNI 60" SATID ffffff TPID 2648 SID 1086 TYPE 0 APID fa PCRPID fa - CHANNEL ID 2a9 NAME "R. Reporter" SATID ffffff TPID 2648 SID 1087 TYPE 0 APID fb PCRPID fb - CHANNEL ID 2aa NAME "Radio Italia S.M.I." SATID ffffff TPID 2648 SID 1088 TYPE 0 APID fc PCRPID fc - CHANNEL ID 2ab NAME "R. Tour" SATID ffffff TPID 2648 SID 1089 TYPE 0 APID fd PCRPID fd - CHANNEL ID 2ac NAME "R.Rinascente" SATID ffffff TPID 2648 SID 108a TYPE 0 APID fe PCRPID fe - CHANNEL ID 2ad NAME "R. Cooky" SATID ffffff TPID 2648 SID 108b TYPE 0 APID ff PCRPID ff - CHANNEL ID 2ae NAME "RadioBaby" SATID ffffff TPID 2648 SID 108c TYPE 0 APID 100 PCRPID 100 - CHANNEL ID 2af NAME "McDonalds" SATID ffffff TPID 2648 SID 108d TYPE 0 APID 101 PCRPID 101 - CHANNEL ID 2b0 NAME "TRBuonconsiglio" SATID ffffff TPID 2648 SID 108e TYPE 0 APID 191 PCRPID 191 - CHANNEL ID 2b1 NAME "R-Radio" SATID ffffff TPID 2648 SID 108f TYPE 0 APID 192 PCRPID 192 - CHANNEL ID 2b2 NAME "R. Donna" SATID ffffff TPID 2648 SID 1090 TYPE 0 APID 193 PCRPID 193 - CHANNEL ID 2b3 NAME "R. Reporter 2" SATID ffffff TPID 2648 SID 1091 TYPE 0 APID 194 PCRPID 194 - CHANNEL ID 2b4 NAME "R. West" SATID ffffff TPID 2648 SID 1092 TYPE 0 APID 195 PCRPID 195 - CHANNEL ID 2b5 NAME "Melodia Russia" SATID ffffff TPID 2648 SID 1093 TYPE 0 VPID 19f6 APID 196 PCRPID 196 - CHANNEL ID 2b6 NAME "Padre Pio" SATID ffffff TPID 2648 SID 1094 TYPE 0 APID 197 PCRPID 197 - CHANNEL ID 2b7 NAME "Thai TV5" SATID ffffff TPID 2648 SID 1069 TYPE 0 VPID c8 APID c9 APID ca PCRPID c8 - CHANNEL ID 2b8 NAME "Studio Europa" SATID ffffff TPID 2648 SID 106c TYPE 0 VPID e6 APID e7 PCRPID e6 - CHANNEL ID 2b9 NAME "Video Italia" SATID ffffff TPID 2648 SID 1072 TYPE 0 VPID 154 APID 155 APID 156 PCRPID 154 - TRANSPONDER ID 26ac SATID 0000 TYPE 1 FREQ 12692000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 2ba NAME "PASSIONS" SATID ffffff TPID 26ac SID 1f5 TYPE 0 VPID a0 PCRPID a0 - CHANNEL ID 2bb NAME "ONYX" SATID ffffff TPID 26ac SID 1f6 TYPE 0 VPID a1 PCRPID a1 - CHANNEL ID 2bc NAME "MANGAS" SATID ffffff TPID 26ac SID 1f7 TYPE 1 VPID a2 APID 58 TTPID 26 PCRPID a2 - CHANNEL ID 2bd NAME "ENCYCLOPEDIA" SATID ffffff TPID 26ac SID 1f8 TYPE 1 VPID a3 APID 5c TTPID 29 PCRPID a3 - CHANNEL ID 2be NAME "POLAR" SATID ffffff TPID 26ac SID 1f9 TYPE 1 VPID a4 APID 60 TTPID 2c PCRPID a4 - CHANNEL ID 2bf NAME "CINE PALACE" SATID ffffff TPID 26ac SID 1fa TYPE 1 VPID a5 APID 64 TTPID 2f PCRPID a5 - CHANNEL ID 2c0 NAME "ROMANCE" SATID ffffff TPID 26ac SID 1fb TYPE 1 VPID a6 APID 68 TTPID 32 PCRPID a6 - CHANNEL ID 2c1 NAME "RIRE" SATID ffffff TPID 26ac SID 1fc TYPE 1 VPID a7 APID 6c TTPID 35 PCRPID a7 - CHANNEL ID 2c2 NAME "ACTION" SATID ffffff TPID 26ac SID 1fd TYPE 1 VPID a8 APID 70 TTPID 38 PCRPID a8 - CHANNEL ID 2c3 NAME "ABsat test RADIO" SATID ffffff TPID 26ac SID 1fe TYPE 1 APID 65 PCRPID a5 - TRANSPONDER ID 2710 SATID 0000 TYPE 1 FREQ 12713000 POL V SRATE 27500000 FEC 8 - CHANNEL ID 2c4 SATID ffffff TPID 2710 SID fffe TYPE 0 - CHANNEL ID 2c5 NAME "MMOV" SATID ffffff TPID 2710 SID 10d0 TYPE 1 VPID a03 PCRPID a00 - CHANNEL ID 2c6 NAME "MMOV" SATID ffffff TPID 2710 SID 10d3 TYPE 1 VPID a05 PCRPID a01 - CHANNEL ID 2c7 NAME "MMOV" SATID ffffff TPID 2710 SID 10d6 TYPE 1 VPID a07 PCRPID a02 - CHANNEL ID 2c8 NAME "MMOV" SATID ffffff TPID 2710 SID 10d9 TYPE 1 VPID 904 PCRPID 900 - CHANNEL ID 2c9 NAME "MMOV" SATID ffffff TPID 2710 SID 10dc TYPE 1 VPID 90a PCRPID 901 - CHANNEL ID 2ca NAME "MMOV" SATID ffffff TPID 2710 SID 10e4 TYPE 1 VPID 906 PCRPID 902 - CHANNEL ID 2cb NAME "MMOV" SATID ffffff TPID 2710 SID 10e7 TYPE 1 VPID 908 PCRPID 903 - TRANSPONDER ID 2774 SATID 0000 TYPE 1 FREQ 12713000 POL H SRATE 27500000 FEC 8 - CHANNEL ID 2cc SATID ffffff TPID 2774 SID fffe TYPE 0 - CHANNEL ID 2cd NAME "SINT" SATID ffffff TPID 2774 SID 2262 TYPE 1 - CHANNEL ID 2ce NAME "info" SATID ffffff TPID 2774 SID 2264 TYPE 1 VPID 205 PCRPID 1ffe - CHANNEL ID 2cf NAME "SINT" SATID ffffff TPID 2774 SID 2266 TYPE 1 - CHANNEL ID 2d0 NAME "CFN" SATID ffffff TPID 2774 SID 2269 TYPE 1 VPID 20b PCRPID 1ffe - CHANNEL ID 2d1 NAME "SINT" SATID ffffff TPID 2774 SID 226c TYPE 1 - CHANNEL ID 2d2 NAME "duel" SATID ffffff TPID 2774 SID 226f TYPE 1 VPID 206 PCRPID 1ffe - CHANNEL ID 2d3 NAME "comedy" SATID ffffff TPID 2774 SID 2272 TYPE 1 VPID 203 PCRPID 1ffe - CHANNEL ID 2d4 NAME "fox kids" SATID ffffff TPID 2774 SID 2275 TYPE 1 VPID 201 PCRPID 1ffe diff --git a/Tools/dvbrc2vdr/test.conf b/Tools/dvbrc2vdr/test.conf deleted file mode 100644 index 31dddb7..0000000 --- a/Tools/dvbrc2vdr/test.conf +++ /dev/null @@ -1,799 +0,0 @@ -DISCOVERY:10719:v:1:27500:8190:8190:0:4402 -RTL7:10719:v:1:27500:8190:8190:0:4403 -TV POLONIA:10719:v:1:27500:8190:8190:0:4404 -EUROSPORT:10719:v:1:27500:8190:8190:0:4405 -PLANETE:10719:v:1:27500:8190:8190:0:4406 -SEASONS:10719:v:1:27500:8190:8190:0:4407 -VIVA Polska:10719:v:1:27500:8190:8190:0:4408 -MULTIMUSIC 4:10719:v:1:27500:8190:123:0:4440 -EPG:10719:v:1:27500:8190:8190:0:4450 -CYFRA+ GRY:10719:v:1:27500:8190:8190:0:4460 -Guide LC:0:v:1:27500:8190:8030:0:2000 -Cinestar 1:0:v:1:27500:120:130:0:1201 -Cinestar 2:0:v:1:27500:220:230:0:1202 -Cinetoile:0:v:1:27500:320:330:0:1203 -Shopping Avenue:0:v:1:27500:420:430:0:1204 -Série Club :0:v:1:27500:520:530:0:1205 -FUN TV:0:v:1:27500:620:630:0:1206 -Teva:0:v:1:27500:720:730:0:1207 -M6 Music:0:v:1:27500:820:830:0:1208 -Club Téléachat:0:v:1:27500:920:930:0:1209 -INFOSPORT:0:v:1:27500:120:130:0:1401 -Régions:0:v:1:27500:220:230:0:1402 -Mezzo:0:v:1:27500:320:330:0:1403 -01 01 15 97:0:v:1:27500:8190:8190:0:1483 -01 01 17 97:0:v:1:27500:8190:8190:0:1485 -01 02 17 97:0:v:1:27500:8190:8190:0:1486 -01 02 15 97:0:v:1:27500:8190:8190:0:1488 -01 02 15 96:0:v:1:27500:8190:8190:0:1489 -01 03 17 10:0:v:1:27500:8190:8190:0:1490 -01 03 15 10:0:v:1:27500:8190:8190:0:1491 -Festival:0:v:1:27500:420:430:0:1404 -HISTOIRE :0:v:1:27500:520:530:0:1405 -Télétoon:0:v:1:27500:620:630:0:1406 -Odyssée :0:v:1:27500:720:730:0:1407 -France Musiques:0:v:1:27500:8190:830:0:1418 -Hector:0:v:1:27500:8190:831:0:1419 -FIP:0:v:1:27500:8190:832:0:1420 -France Inter:0:v:1:27500:8190:833:0:1421 -France Info:0:v:1:27500:8190:834:0:1422 -Elisa:0:v:1:27500:8190:835:0:1423 -France Culture:0:v:1:27500:8190:836:0:1424 -Radio Bleue:0:v:1:27500:8190:837:0:1425 -Le Mouv:0:v:1:27500:8190:838:0:1426 -TV5:0:v:1:27500:920:930:0:1409 -CENTRONICS:0:v:1:27500:8190:8190:0:2000 -FRANCE 2 :0:v:1:27500:320:8190:0:1104 -FRANCE 3:0:v:1:27500:520:8190:0:1106 -Crédit Agricole:0:v:1:27500:8190:5333:0:5301 -tps foot:0:v:1:27500:8190:5230:0:5200 -LCI:0:v:1:27500:120:130:0:1101 -EUROSPORT:0:v:1:27500:220:230:0:1102 -FRANCE 2:0:v:1:27500:320:8190:0:1103 -FRANCE 3:0:v:1:27500:520:8190:0:1105 -I TELEVISION:0:v:1:27500:820:830:0:1108 -TV Mail alphatest:0:v:1:27500:8190:8190:0:5701 -CHAINE FI:0:v:1:27500:8190:5331:0:5300 -caisse d'épargne:0:v:1:27500:8190:8190:0:5303 -TV Mail:0:v:1:27500:8190:8190:0:5700 -CANAL+:10892:h:1:27500:8190:8190:0:4801 -CANAL+ ¯Ó£TY:10892:h:1:27500:8190:8190:0:4802 -TMT:10892:h:1:27500:8190:8190:0:4804 -ALE KINO!:10892:h:1:27500:8190:8190:0:4805 -MINIMAX:10892:h:1:27500:8190:8190:0:4806 -TVP 1:10892:h:1:27500:8190:8190:0:4807 -TVP 2:10892:h:1:27500:8190:8190:0:4808 -CANAL+ NIEBIESKI:10892:h:1:27500:8190:8190:0:4809 -EPG:10892:h:1:27500:8190:8190:0:4850 -Multivision:0:v:1:27500:320:8190:0:1603 -Grand Classique:0:v:1:27500:8190:830:0:1650 -Symphonies:0:v:1:27500:8190:831:0:1651 -Baroque:0:v:1:27500:8190:832:0:1652 -Opéra:0:v:1:27500:8190:833:0:1653 -Contemporain:0:v:1:27500:8190:834:0:1654 -Relaxation:0:v:1:27500:8190:835:0:1655 -Blues:0:v:1:27500:8190:836:0:1656 -Jazz:0:v:1:27500:8190:837:0:1657 -Big Band:0:v:1:27500:8190:838:0:1658 -Jazz Moderne:0:v:1:27500:8190:839:0:1659 -Les Tubes Français:0:v:1:27500:8190:840:0:1660 -RFO SAT:0:v:1:27500:120:130:0:1601 -Appli D1 LC:0:v:1:27500:8190:8190:0:1680 -Cinefaz:0:v:1:27500:220:230:0:1602 -TurboPC:0:v:1:27500:8190:8190:0:2801 -MTV2:0:v:1:27500:720:730:0:1607 -Rire et chansons:0:v:1:27500:8190:930:0:1630 -Radio J:0:v:1:27500:8190:931:0:1631 -Mosqueteiros:0:v:1:27500:8190:932:0:1632 -Abysse:0:v:1:27500:8190:933:0:1633 -RMC:0:v:1:27500:8190:935:0:1635 -Radio Junior:0:v:1:27500:8190:936:0:1636 -NETRADIO:0:v:1:27500:8190:937:0:1637 -Nostalgie:0:v:1:27500:8190:938:0:1638 -Skyrock:0:v:1:27500:8190:939:0:1639 -Radio Coutoisie:0:v:1:27500:8190:940:0:1640 -La Voix des Pays:0:v:1:27500:8190:941:0:1641 -INFO EXPRESS:0:v:1:27500:8190:5530:0:5500 -METEO:0:v:1:27500:8190:5830:0:5800 -X X L:0:v:1:27500:8190:8190:0:5400 -Multivision Cinéma:0:v:1:27500:8190:8190:0:7200 -Multivision Sport:0:v:1:27500:8190:8190:0:7300 -Multivision Spectacle:0:v:1:27500:8190:8190:0:7400 -Test OTV8:12673:h:1:27500:8190:8190:0:7527 -Test OTV9:12673:h:1:27500:8190:8190:0:7528 -Test OTV10:12673:h:1:27500:8190:8190:0:7529 -Test OTV11:12673:h:1:27500:513:8190:0:7530 -Test31:12673:h:1:27500:512:650:0:7501 -CNN:12673:h:1:27500:513:660:0:7502 -Q24:12673:h:1:27500:514:691:0:7503 -Test34:12673:h:1:27500:515:680:0:7504 -Test35:12673:h:1:27500:516:690:0:7505 -Test OTV1:12673:h:1:27500:8190:8190:0:7520 -Test OTV2:12673:h:1:27500:8190:8190:0:7521 -Test OTV3:12673:h:1:27500:8190:8190:0:7522 -Test OTV4:12673:h:1:27500:8190:8190:0:7523 -Test OTV5:12673:h:1:27500:8190:8190:0:7524 -Test OTV6:12673:h:1:27500:8190:8190:0:7525 -Test OTV7:12673:h:1:27500:8190:8190:0:7526 -Test OTV7:12673:h:1:27500:8190:8190:0:7540 -Test OTV7:12673:h:1:27500:8190:8190:0:7541 -Telekom TV:11095:h:1:27500:32:8190:0:3711 -FantasticOverOpal:11095:h:1:27500:32:8190:0:3712 -Gilat:11095:h:1:27500:32:8190:0:3713 -Siemens TV:11095:h:1:27500:32:8190:0:3716 -S-TV:11095:h:1:27500:32:8190:0:3717 -Optibase Encoder:11095:h:1:27500:32:8190:0:3718 -FantasticOverOpal:11095:h:1:27500:8190:8190:0:3702 -Deutsche Bank / T1:11303:h:1:27500:1160:8190:0:1 -Animal Planet:11303:h:1:27500:1160:8190:0:10 -Discovery E Europe-English:11303:h:1:27500:1260:8190:0:20 -Wuerth KG / T21:11303:h:1:27500:1360:8190:0:21 -Discovery Italy:11303:h:1:27500:1360:8190:0:30 -BTI / T31:11303:h:1:27500:1360:8190:0:31 -Discovery Russia:11303:h:1:27500:1460:8190:0:40 -K-TV (MetroMux) / T41:11303:h:1:27500:1960:8190:0:41 -Animal Planet EE:11303:h:1:27500:1560:8190:0:50 -Animal Planet - Russian:11303:h:1:27500:1560:8190:0:51 -Discovery Netherlands:11303:h:1:27500:1660:8190:0:60 -Q English:11303:h:1:27500:1760:8190:0:70 -Travel and Adventure:11303:h:1:27500:1860:8190:0:80 -Travel and Adventure- Russian:11303:h:1:27500:1860:8190:0:81 -New DCP:11303:h:1:27500:8190:1220:0:300 -CCP:11303:h:1:27500:1260:8190:0:301 -Deutsche Bank / T2:11303:h:1:27500:1260:8190:0:2 -Channel Three:11303:h:1:27500:1360:8190:0:3 -Channel Four:11303:h:1:27500:1460:8190:0:4 -Channel Five:11303:h:1:27500:1560:8190:0:5 -Channel 6 = Sat 7 Arabic:11303:h:1:27500:1660:8190:0:6 -Channel Seven:11303:h:1:27500:1760:8190:0:7 -Q German:11303:h:1:27500:1760:8190:0:71 -Q French:11303:h:1:27500:1760:8190:0:72 -Q Dutch:11303:h:1:27500:1760:8190:0:73 -DTAG / T11:11303:h:1:27500:1360:8190:0:11 -DTAG 50 / T12:11303:h:1:27500:1360:8190:0:12 -Telekom TV:11303:h:1:27500:1460:8190:0:13 -Gerling / T26:11303:h:1:27500:1360:8190:0:26 -Hornbach-D / T36:11303:h:1:27500:1360:8190:0:36 -Hornbach-NL / T38:11303:h:1:27500:1360:8190:0:38 -Hornbach-CZ / T39:11303:h:1:27500:1360:8190:0:39 -Testkanal:11303:h:1:27500:1660:8190:0:99 -KENCAST:11303:h:1:27500:8190:8190:0:111 -SAT.1 CH:11604:h:1:27500:101:102:0:601 -KBT Channel SUN:11604:h:1:27500:111:112:0:603 -big FM:11604:h:1:27500:8190:113:0:604 -Event:11604:h:1:27500:160:161:0:602 -Deutsche Bank / T1:11642:h:1:27500:1160:8190:0:1 -Animal Planet:11642:h:1:27500:1160:8190:0:10 -Discovery E Europe-English:11642:h:1:27500:1260:8190:0:20 -Wuerth KG / T21:11642:h:1:27500:1360:8190:0:21 -Discovery Italy:11642:h:1:27500:1360:8190:0:30 -BTI / T31:11642:h:1:27500:1360:8190:0:31 -Discovery Russia:11642:h:1:27500:1460:8190:0:40 -K-TV (MetroMux) / T41:11642:h:1:27500:1960:8190:0:41 -Animal Planet EE:11642:h:1:27500:1560:8190:0:50 -Animal Planet - Russian:11642:h:1:27500:1560:8190:0:51 -Discovery Netherlands:11642:h:1:27500:1660:8190:0:60 -Q English:11642:h:1:27500:1760:8190:0:70 -Travel and Adventure:11642:h:1:27500:1860:8190:0:80 -Travel and Adventure- Russian:11642:h:1:27500:1860:8190:0:81 -New DCP:11642:h:1:27500:8190:1220:0:300 -CCP:11642:h:1:27500:1260:8190:0:301 -Deutsche Bank / T2:11642:h:1:27500:1260:8190:0:2 -Channel Three:11642:h:1:27500:1360:8190:0:3 -Channel Four:11642:h:1:27500:1460:8190:0:4 -Channel Five:11642:h:1:27500:1560:8190:0:5 -Channel 6 = Sat 7 Arabic:11642:h:1:27500:1660:8190:0:6 -Channel Seven:11642:h:1:27500:1760:8190:0:7 -Q German:11642:h:1:27500:1760:8190:0:71 -Q French:11642:h:1:27500:1760:8190:0:72 -Q Dutch:11642:h:1:27500:1760:8190:0:73 -DTAG / T11:11642:h:1:27500:1360:8190:0:11 -DTAG 50 / T12:11642:h:1:27500:1360:8190:0:12 -Telekom TV:11642:h:1:27500:1460:8190:0:13 -Gerling / T26:11642:h:1:27500:1360:8190:0:26 -Hornbach-D / T36:11642:h:1:27500:1360:8190:0:36 -Hornbach-NL / T38:11642:h:1:27500:1360:8190:0:38 -Hornbach-CZ / T39:11642:h:1:27500:1360:8190:0:39 -Testkanal:11642:h:1:27500:1660:8190:0:99 -KENCAST:11642:h:1:27500:8190:8190:0:111 -AB 1:11681:h:1:27500:160:80:0:201 -AB MOTEURS:11681:h:1:27500:161:84:0:202 -ANIMAUX:11681:h:1:27500:162:88:0:203 -CHASSE ET PECHE:11681:h:1:27500:163:92:0:204 -XXL:11681:h:1:27500:164:96:0:205 -MUSIQUE CLASSIQUE:11681:h:1:27500:165:100:0:206 -ESCALES:11681:h:1:27500:166:104:0:207 -FIT/chaîne HISTOIRE:11681:h:1:27500:167:108:0:208 -RFM TV:11681:h:1:27500:168:112:0:209 -EDTV DRAMA:11744:h:1:27500:4898:8190:0:9504 -EDTV RADIO 02:11744:h:1:27500:4898:8190:0:9524 -EDTV RADIO 01:11744:h:1:27500:4898:8190:0:9523 -EDTV SPORT:11744:h:1:27500:4898:8190:0:9502 -EDTV BUSINESS:11744:h:1:27500:4898:8190:0:9503 -RAI1:11765:v:1:27500:160:8190:0:3401 -RAI2:11765:v:1:27500:161:8190:0:3402 -RAI3:11765:v:1:27500:162:8190:0:3403 -Rai Way TEST1:11765:v:1:27500:515:8190:0:3404 -Rai Way TEST2:11765:v:1:27500:516:8190:0:3405 -Rai Way TEST3:11765:v:1:27500:164:8190:0:3406 -RAIMOSAICO:11765:v:1:27500:518:8190:0:3407 -RAIMOSAICO:11765:v:1:27500:518:8190:0:3490 -RAINews24:11765:v:1:27500:516:8190:0:3301 -CAMERA DEPUTATI:11765:v:1:27500:517:8190:0:3302 -TELEPACE:11765:v:1:27500:515:8190:0:3304 -RAISPORTSAT:11765:v:1:27500:512:8190:0:3305 -RAINettunoSAT2:11765:v:1:27500:513:8190:0:3306 -RAIeducational:11765:v:1:27500:514:8190:0:3307 -RAINettunoSAT1:11765:v:1:27500:519:8190:0:3308 -SAT2000:11765:v:1:27500:518:8190:0:3309 -RADIOUNO:11765:v:1:27500:8190:670:0:3311 -RADIODUE:11765:v:1:27500:8190:671:0:3312 -RADIOTRE:11765:v:1:27500:8190:672:0:3313 -FDleggera:11765:v:1:27500:8190:673:0:3314 -FDauditorium:11765:v:1:27500:8190:665:0:3315 -BLUSAT 2000:11765:v:1:27500:8190:677:0:3316 -GR PARLAMENTO:11765:v:1:27500:8190:664:0:3317 -ISORADIO:11765:v:1:27500:8190:661:0:3318 -R1:11823:h:1:27500:512:650:0:301 -R2:11823:h:1:27500:513:661:0:302 -R3:11823:h:1:27500:514:670:0:303 -R4:11823:h:1:27500:515:680:0:304 -R5:11823:h:1:27500:4682:700:0:306 -R6:11823:h:1:27500:518:710:0:307 -R7:11823:h:1:27500:519:720:0:308 -Love Radio:11823:h:1:27500:8190:711:0:309 -Greek Church:11823:h:1:27500:8190:671:0:310 -Skai Radio:11823:h:1:27500:8190:741:0:311 -MelodiRadio:11823:h:1:27500:8190:701:0:312 -ERA 3:11823:h:1:27500:8190:651:0:313 -RR1:11823:h:1:27500:8190:681:0:314 -RR2:11823:h:1:27500:8190:721:0:315 -NOVA CINE:11823:h:1:27500:521:740:0:316 -FILM NET:11823:h:1:27500:512:650:0:317 -SSportK-T.V:11823:h:1:27500:513:661:0:318 -MEGA:11823:h:1:27500:514:670:0:319 -ANT-1:11823:h:1:27500:515:680:0:320 -STAR:11823:h:1:27500:517:700:0:321 -Alter 5:11823:h:1:27500:518:710:0:322 -NEW Tempo:11823:h:1:27500:519:720:0:323 -Super Sport2:11823:h:1:27500:516:691:0:324 -Super Sport2:11843:v:1:27500:516:691:0:65534 -INTV:11843:v:1:27500:2324:8190:0:3504 -UNIV:11843:v:1:27500:2305:8190:0:3507 -CULT:11843:v:1:27500:2307:8190:0:3510 -ERSP:11843:v:1:27500:2309:8190:0:3513 -SINT:11843:v:1:27500:8190:8190:0:3515 -CART:11843:v:1:27500:2433:8190:0:3516 -SINT:11843:v:1:27500:8190:8190:0:3519 -DISC:11843:v:1:27500:2437:8190:0:3522 -SINT:11843:v:1:27500:8190:8190:0:3525 -TVL:11843:v:1:27500:2441:8190:0:3528 -SINT:11843:v:1:27500:8190:8190:0:3530 -ROCK:11843:v:1:27500:8190:2320:0:3550 -RDS:11843:v:1:27500:8190:2321:0:3553 -RTL:11843:v:1:27500:8190:2322:0:3556 -101:11843:v:1:27500:8190:2323:0:3559 -RVOY:11843:v:1:27500:8190:2315:0:3562 -RKFM:11843:v:1:27500:8190:2317:0:3563 -GLOB:11843:v:1:27500:8190:2316:0:3564 -ANT1:11843:v:1:27500:8190:2318:0:3565 -RRAD:11843:v:1:27500:8190:2319:0:3566 -MC01:11843:v:1:27500:8190:2312:0:3568 -MC02:11843:v:1:27500:8190:2313:0:3571 -MC03:11843:v:1:27500:8190:2314:0:3574 -P7:12341:h:1:27500:160:81:0:11301 -P8:12341:h:1:27500:161:85:0:11303 -P9:12341:h:1:27500:162:89:0:11305 -+GIOCHI:12341:h:1:27500:8190:8190:0:11310 -MM01:12341:h:1:27500:8190:601:0:11311 -MM02:12341:h:1:27500:8190:602:0:11312 -MM03:12341:h:1:27500:8190:603:0:11313 -MM04:12341:h:1:27500:8190:604:0:11314 -MM05:12341:h:1:27500:8190:605:0:11315 -MM06:12341:h:1:27500:8190:606:0:11316 -MM07:12341:h:1:27500:8190:607:0:11317 -MM08:12341:h:1:27500:8190:608:0:11318 -MM09:12341:h:1:27500:8190:609:0:11319 -MM10:12341:h:1:27500:8190:610:0:11320 -MM11:12341:h:1:27500:8190:611:0:11321 -MM12:12341:h:1:27500:8190:612:0:11322 -MM13:12341:h:1:27500:8190:613:0:11323 -MM14:12341:h:1:27500:8190:614:0:11324 -MM15:12341:h:1:27500:8190:615:0:11325 -MM16:12341:h:1:27500:8190:616:0:11326 -MM17:12341:h:1:27500:8190:617:0:11327 -MM18:12341:h:1:27500:8190:618:0:11328 -MM19:12341:h:1:27500:8190:619:0:11329 -MM20:12341:h:1:27500:8190:620:0:11330 -MM21:12341:h:1:27500:8190:621:0:11331 -MM22:12341:h:1:27500:8190:622:0:11332 -MM23:12341:h:1:27500:8190:623:0:11333 -MM24:12341:h:1:27500:8190:624:0:11334 -MM25:12341:h:1:27500:8190:625:0:11335 -MM26:12341:h:1:27500:8190:626:0:11336 -MM27:12341:h:1:27500:8190:627:0:11337 -MM28:12341:h:1:27500:8190:628:0:11338 -MM29:12341:h:1:27500:8190:629:0:11339 -MM30:12341:h:1:27500:8190:630:0:11340 -RCAP:12341:h:1:27500:8190:631:0:11341 -R105:12341:h:1:27500:8190:632:0:11342 -RDJ:12341:h:1:27500:8190:633:0:11343 -RITA:12341:h:1:27500:8190:634:0:11344 -RMC:12341:h:1:27500:8190:635:0:11345 -R101:12341:h:1:27500:8190:636:0:11346 -RRAD:12341:h:1:27500:8190:637:0:11347 -RR:12341:h:1:27500:8190:638:0:11348 -RR:12341:h:1:27500:8190:610:0:11361 -RR:12341:h:1:27500:8190:620:0:11362 -RR:12341:h:1:27500:8190:630:0:11363 -RR:12341:h:1:27500:8190:638:0:11364 -MULTIMUSICA:12341:h:1:27500:8190:8190:0:11352 -RADIO:12341:h:1:27500:8190:8190:0:11353 -MULTIMUSIC 1:12341:h:1:27500:8190:609:0:11365 -MULTIMUSIC 2:12341:h:1:27500:8190:620:0:11366 -MULTIMUSIC 2:12713:v:1:27500:8190:620:0:65534 -TEAM:12713:v:1:27500:2305:8190:0:3610 -SINT:12713:v:1:27500:8190:8190:0:3613 -VIAG:12713:v:1:27500:2308:8190:0:3616 -SINT:12713:v:1:27500:8190:8190:0:3619 -EURO:12713:v:1:27500:2311:8190:0:3622 -SINT:12713:v:1:27500:8190:8190:0:3623 -CNN:12713:v:1:27500:2433:8190:0:3625 -ante prima:12713:v:1:27500:2435:8190:0:3628 -SNAI:12713:v:1:27500:2561:8190:0:3630 -MPPV:12713:v:1:27500:2563:8190:0:3632 -MC04:12713:v:1:27500:8190:2688:0:3636 -MC05:12713:v:1:27500:8190:2689:0:3637 -MC06:12713:v:1:27500:8190:2690:0:3638 -MC07:12713:v:1:27500:8190:2691:0:3641 -MC08:12713:v:1:27500:8190:2692:0:3644 -MC09:12713:v:1:27500:8190:2693:0:3647 -MC10:12713:v:1:27500:8190:2694:0:3650 -MC11:12713:v:1:27500:8190:2695:0:3653 -MC12:12713:v:1:27500:8190:2696:0:3656 -MC13:12713:v:1:27500:8190:2697:0:3659 -MC14:12713:v:1:27500:8190:2698:0:3662 -MC15:12713:v:1:27500:8190:2699:0:3665 -MC16:12713:v:1:27500:8190:2700:0:3668 -MC17:12713:v:1:27500:8190:2701:0:3671 -MC18:12713:v:1:27500:8190:2702:0:3674 -MOSAICO D+:12341:h:1:27500:161:84:0:11401 - MILAN CH.:12341:h:1:27500:162:89:0:11403 - INTER CH.:12341:h:1:27500:163:93:0:11405 -TST3:12341:h:1:27500:8190:8190:0:11407 - I1:11919:v:1:27500:512:650:0:1 - C5:11919:v:1:27500:513:660:0:2 - R4:11919:v:1:27500:514:670:0:3 -Test:11919:v:1:27500:515:680:0:4 -NTV:11938:h:1:27500:164:89:0:7105 -NTV-PLUS:11938:h:1:27500:165:91:0:7106 -NTV Int.-HTB:11938:h:1:27500:160:80:0:7101 -NTV Int.-Nashe Kino:11938:h:1:27500:161:82:0:7102 -NTV Int.-Detsk. Mir:11938:h:1:27500:162:84:0:7103 -DISNEY CHANNEL:12341:v:1:27500:8190:8190:0:10901 -DISCOVERY:12341:v:1:27500:161:8190:0:10903 -EUSP:12341:v:1:27500:162:89:0:10905 -HAPPY CHANNEL:12341:v:1:27500:8190:8190:0:10907 -MATCH MUSIC:12341:v:1:27500:8190:8190:0:10909 -MTV:12341:v:1:27500:8190:8190:0:10911 -R/CINEMA RAISAT:12341:v:1:27500:8190:8190:0:10913 -R/CINEMA RAISAT:12713:h:1:27500:8190:8190:0:65534 -cine stream:12713:h:1:27500:512:650:0:7704 -cine movie:12713:h:1:27500:514:670:0:7707 -CLASSICA:12341:v:1:27500:8190:8190:0:11001 -R/GAM ROS RAISAT:12341:v:1:27500:8190:8190:0:11003 -R/ALBUM RAISAT:12341:v:1:27500:8190:8190:0:11005 -HALLMARK:12341:v:1:27500:163:8190:0:11007 -R/ART RAISAT:12341:v:1:27500:8190:8190:0:11009 -TST1:12341:v:1:27500:8190:8190:0:11011 -TMC:12341:v:1:27500:166:8190:0:11013 -TMC2:12341:v:1:27500:167:8190:0:11015 -ART VARIETY:12015:h:1:27500:160:8190:0:410 -ART CHILDREN:12015:h:1:27500:161:8190:0:420 -ART MOVIES:12015:h:1:27500:162:8190:0:430 -ART MUSIC:12015:h:1:27500:163:8190:0:440 -ART EUROPE:12015:h:1:27500:164:8190:0:450 -LBC EUROPE:12015:h:1:27500:165:8190:0:460 -EGYPT SAT. CH. 2:12015:h:1:27500:166:8190:0:470 -ART SPORT:12015:h:1:27500:167:8190:0:472 -IQRA:12015:h:1:27500:168:8190:0:474 -T+ BIANCO:12341:v:1:27500:160:81:0:11101 -T+ NERO:12341:v:1:27500:161:85:0:11103 -T+ GRIGIO:12341:v:1:27500:162:89:0:11105 -R4:12341:v:1:27500:163:8190:0:24 -16|9 TELE+:12341:v:1:27500:164:97:0:11107 -VETRINA D+:12341:v:1:27500:8190:8190:0:11109 -R/RAGAZZI RAISAT:12341:v:1:27500:8190:8190:0:11111 -CNN:12341:h:1:27500:8190:8190:0:11501 -BBC:12341:h:1:27500:8190:8190:0:11503 -BLOOMBERG:12341:h:1:27500:8190:8190:0:11505 -CNBC:12341:h:1:27500:8190:8190:0:11507 -SKYNews:12341:h:1:27500:8190:8190:0:11509 -TST2:12341:h:1:27500:8190:8190:0:11511 -TV5:12341:h:1:27500:8190:8190:0:11513 -EPG:12341:h:1:27500:8190:8190:0:11515 -CNN:12341:h:1:27500:160:80:0:11517 -CNBC:12341:h:1:27500:163:92:0:11519 -TV5:12341:h:1:27500:166:104:0:11521 -BBC WORLD:12341:h:1:27500:161:84:0:11523 -BBC WORLD:12341:h:1:27500:161:84:0:11595 -BBC WORLD:12341:h:1:27500:161:84:0:9980 -BBC WORLD:12341:h:1:27500:161:84:0:9981 -Telekom TV:11095:v:1:27500:32:8190:0:3711 -FantasticOverOpal:11095:v:1:27500:32:8190:0:3712 -Gilat:11095:v:1:27500:32:8190:0:3713 -Siemens TV:11095:v:1:27500:32:8190:0:3716 -S-TV:11095:v:1:27500:32:8190:0:3717 -Optibase Encoder:11095:v:1:27500:32:8190:0:3718 -Bolsa:12091:h:1:27500:8190:8190:0:8750 -Testw:12091:h:1:27500:8190:8190:0:8751 -SIRE:12091:h:1:27500:8190:8190:0:8752 -Telesierra:12091:h:1:27500:4160:4161:0:8704 -vtv:12091:h:1:27500:4112:4115:0:8701 -Satisfaction:12091:h:1:27500:4192:4193:0:8706 -C. Milagro:12091:h:1:27500:4368:4369:0:8711 -Fiesta:12091:h:1:27500:4432:4434:0:8720 -TVE Internacional:12091:h:1:27500:4208:4209:0:8707 -TV Galicia:12091:h:1:27500:8190:4240:0:8708 -Radio Gallega:12091:h:1:27500:8190:4240:0:8709 -Retelsat:12091:h:1:27500:4464:4465:0:8722 -Musicam 1:12091:h:1:27500:8190:4406:0:8713 -Musicam 2:12091:h:1:27500:8190:4403:0:8714 -Musicam 3:12091:h:1:27500:8190:4406:0:8715 -Musicam 4:12091:h:1:27500:8190:4402:0:8716 -Musicam 5:12091:h:1:27500:8190:4406:0:8717 -HBCH FUCINO:12673:v:1:27500:200:201:0:701 -NTVi:12673:v:1:27500:210:212:0:702 -Test Telespazio:12673:v:1:27500:220:221:0:703 -Test Telespazio:12673:v:1:27500:230:231:0:704 -ARMENIA TV:12673:v:1:27500:240:242:0:705 -MEDNET:12673:v:1:27500:260:261:0:707 -AL JAZEERA:12673:v:1:27500:270:271:0:708 -TIRRENO SAT:12673:v:1:27500:280:301:0:709 -RADIO ROCK:12673:v:1:27500:8190:212:0:711 -RADIO ARMENIA:12673:v:1:27500:8190:242:0:712 -Coming Soon TV:12673:v:1:27500:8190:40:0:717 -AH-EDP1:12149:v:1:27500:96:97:0:7201 -AH-EDP2:12149:v:1:27500:112:113:0:7202 -AH-EDP3:12149:v:1:27500:36:37:0:7203 -AH-EMP4-DATA:12149:v:1:27500:8190:8190:0:7204 -Alice:12149:v:1:27500:160:161:0:7220 -Nuvolari:12149:v:1:27500:176:177:0:7221 -Leonardo:12149:v:1:27500:128:129:0:7222 -Discovery:12169:h:1:27500:512:8190:0:351 -R9:12169:h:1:27500:513:8190:0:352 -BBC World:12169:h:1:27500:514:8190:0:353 -CNN:12169:h:1:27500:515:8190:0:354 -CCTV:12169:h:1:27500:516:8190:0:355 -R10:12169:h:1:27500:518:8190:0:357 -R8:12169:h:1:27500:519:8190:0:358 -FILM SAT:12169:h:1:27500:520:8190:0:359 -Cartoon:12169:h:1:27500:515:8190:0:360 -Promo:12169:h:1:27500:521:8190:0:361 -Tempo:12169:h:1:27500:1440:651:0:362 -Tempo:12169:h:1:27500:8190:661:0:363 -Tempo:12169:h:1:27500:8190:671:0:364 -Tempo:12169:h:1:27500:8190:681:0:365 -Tempo:12169:h:1:27500:8190:691:0:366 -NOVA INFO:12169:h:1:27500:8190:8190:0:367 -NOVA INFO:12169:h:1:27500:8190:8190:0:369 -NOVA INFO:12169:h:1:27500:8190:8190:0:370 -NOVA INFO:12169:h:1:27500:1067:8190:0:371 -NOVA INFO:12169:h:1:27500:8190:8190:0:372 -NOVA INFO:12169:h:1:27500:8190:8190:0:373 -NOVA Cinema:12169:h:1:27500:8190:8190:0:374 -NET:12169:h:1:27500:513:8190:0:376 -MAD T.V:12169:h:1:27500:518:8190:0:377 -ET-1:12169:h:1:27500:519:8190:0:378 -ET-1:12169:h:1:27500:519:8190:0:379 -ÂïõëÞ:12169:h:1:27500:517:8190:0:384 -Deutsche Bank / T1:12264:v:1:27500:1160:8190:0:1 -Animal Planet:12264:v:1:27500:1160:8190:0:10 -Discovery E Europe-English:12264:v:1:27500:1260:8190:0:20 -Wuerth KG / T21:12264:v:1:27500:1360:8190:0:21 -Discovery Italy:12264:v:1:27500:1360:8190:0:30 -BTI / T31:12264:v:1:27500:1360:8190:0:31 -Discovery Russia:12264:v:1:27500:1460:8190:0:40 -K-TV (MetroMux) / T41:12264:v:1:27500:1960:8190:0:41 -Animal Planet EE:12264:v:1:27500:1560:8190:0:50 -Animal Planet - Russian:12264:v:1:27500:1560:8190:0:51 -Discovery Netherlands:12264:v:1:27500:1660:8190:0:60 -Q English:12264:v:1:27500:1760:8190:0:70 -Travel and Adventure:12264:v:1:27500:1860:8190:0:80 -Travel and Adventure- Russian:12264:v:1:27500:1860:8190:0:81 -New DCP:12264:v:1:27500:8190:1220:0:300 -CCP:12264:v:1:27500:1260:8190:0:301 -Deutsche Bank / T2:12264:v:1:27500:1260:8190:0:2 -Channel Three:12264:v:1:27500:1360:8190:0:3 -Channel Four:12264:v:1:27500:1460:8190:0:4 -Channel Five:12264:v:1:27500:1560:8190:0:5 -Channel 6 = Sat 7 Arabic:12264:v:1:27500:1660:8190:0:6 -Channel Seven:12264:v:1:27500:1760:8190:0:7 -Q German:12264:v:1:27500:1760:8190:0:71 -Q French:12264:v:1:27500:1760:8190:0:72 -Q Dutch:12264:v:1:27500:1760:8190:0:73 -DTAG / T11:12264:v:1:27500:1360:8190:0:11 -DTAG 50 / T12:12264:v:1:27500:1360:8190:0:12 -Telekom TV:12264:v:1:27500:1460:8190:0:13 -Gerling / T26:12264:v:1:27500:1360:8190:0:26 -Hornbach-D / T36:12264:v:1:27500:1360:8190:0:36 -Hornbach-NL / T38:12264:v:1:27500:1360:8190:0:38 -Hornbach-CZ / T39:12264:v:1:27500:1360:8190:0:39 -Testkanal:12264:v:1:27500:1660:8190:0:99 -KENCAST:12264:v:1:27500:8190:8190:0:111 -SLO-TV1:12302:v:1:27500:200:8190:0:3201 -SLO-TV2:12302:v:1:27500:203:8190:0:3202 -POLONIA 1:12302:v:1:27500:205:8190:0:3203 -SLO-RA1-INF:12302:v:1:27500:8190:250:0:3204 -SLO-RA2:12302:v:1:27500:8190:251:0:3205 -SLO-RA3:12302:v:1:27500:8190:252:0:3206 -SUPER 1:12302:v:1:27500:207:8190:0:3207 -NAPOLI INT.:12302:v:1:27500:240:8190:0:3210 -MAGIC:12302:v:1:27500:245:8190:0:3211 -COUNTDOWN:12302:v:1:27500:235:8190:0:3212 -TBNE:12302:v:1:27500:230:8190:0:3213 -SICILSAT:12302:v:1:27500:225:8190:0:3214 -TVP1:10892:h:1:27500:257:6111:0:1 -TVP2:10892:h:1:27500:321:322:0:2 -POLSAT1:10892:h:1:27500:8190:8190:0:3 -TV4:10892:h:1:27500:257:6111:0:4 -POLSAT2:10892:h:1:27500:321:322:0:5 -WOT:10892:h:1:27500:8190:8190:0:6 -DISCOVERY:10892:h:1:27500:257:6111:0:15 -ANIMAL PLANET:10892:h:1:27500:321:322:0:16 -EpgOpenTV:10892:h:1:27500:8190:8190:0:3686 -P10:12341:v:1:27500:160:81:0:11601 -P11:12341:v:1:27500:161:85:0:11603 -P12:12341:v:1:27500:162:89:0:11605 -P13:12341:v:1:27500:163:93:0:11607 -P14:12341:v:1:27500:164:97:0:11609 -P15:12341:v:1:27500:165:101:0:11611 -P16:12341:v:1:27500:166:105:0:11613 -PREMIUM:12341:v:1:27500:8190:8190:0:11615 -+F1:12341:v:1:27500:160:664:0:11617 -+F1:12341:v:1:27500:161:85:0:11619 -+F1:12341:v:1:27500:162:667:0:11621 -+F1:12341:v:1:27500:163:674:0:11623 -+F1:12341:v:1:27500:164:96:0:11625 -+F1:12341:v:1:27500:165:676:0:11627 -+F1:12341:v:1:27500:166:666:0:11629 -RMC:12341:v:1:27500:8190:8190:0:11631 -R101:12341:v:1:27500:8190:8190:0:11632 -RRAD:12341:v:1:27500:8190:8190:0:11633 -ON:10892:h:1:27500:353:354:0:7 -DLA-CIEBIE:10892:h:1:27500:529:530:0:8 -KOMEDIA:10892:h:1:27500:353:354:0:9 -SMYK:10892:h:1:27500:529:530:0:10 -RELAKS:10892:h:1:27500:353:354:0:11 -INFO:10892:h:1:27500:529:530:0:12 -POLSAT SPORT:10892:h:1:27500:353:354:0:13 -Paris Première:12379:v:1:27500:3021:3031:0:3001 -OCC HB3:12379:v:1:27500:3022:3032:0:3002 -TELE 24 Switzerland:12379:v:1:27500:3023:3033:0:3003 -AIR MEDIA:12379:v:1:27500:8190:3537:0:3087 -Abu Dhabi TV:12379:v:1:27500:3024:3034:0:3004 -EMIRAT FM 1:12379:v:1:27500:8190:3533:0:3083 -EMIRAT FM2:12379:v:1:27500:8190:3534:0:3084 -Radio Italia :12379:v:1:27500:8190:3531:0:3081 -EQUIDIA INTER.:12379:v:1:27500:3321:3351:0:3051 -RTV MONTENEGRO:12379:v:1:27500:3026:3036:0:3006 -Radio Montenegro:12379:v:1:27500:8190:3538:0:3088 -SERTE TEST:12379:v:1:27500:3025:8190:0:3005 -GAME 1:12379:v:1:27500:3027:3037:0:3007 -SF 2:12398:h:1:27500:163:93:0:907 -SRG SSR Sat Access:12398:h:1:27500:165:99:0:910 -SF 1:12398:h:1:27500:160:81:0:901 -TSR 1:12398:h:1:27500:161:85:0:902 -TSI 1:12398:h:1:27500:162:89:0:903 -TSR 2:12398:h:1:27500:164:97:0:908 -TSI 2:12398:h:1:27500:166:101:0:909 -OPTION MUSIQUE:12398:h:1:27500:8190:204:0:957 -ESPACE 2:12398:h:1:27500:8190:205:0:958 -SRI-F-I:12398:h:1:27500:8190:199:0:951 -SRI-EUROPA:12398:h:1:27500:560:200:0:953 -POLO:12341:v:1:27500:160:80:0:11701 -PLANETE:12341:v:1:27500:161:84:0:11703 -JIMMY:12341:v:1:27500:162:88:0:11705 -INN:12341:v:1:27500:163:92:0:11707 -CIN1:12341:v:1:27500:164:96:0:11709 -CIN2:12341:v:1:27500:165:100:0:11711 -CINC:12341:v:1:27500:166:104:0:11713 -SEASONS:12341:v:1:27500:167:108:0:11715 -WISHLINE:12341:v:1:27500:168:89:0:11717 -MARCOPOLO:12341:v:1:27500:160:81:0:11719 -JAAM-E-JAM 1:12436:h:1:27500:160:81:0:1 -JAAM-E-JAM 2:12436:h:1:27500:161:83:0:2 -SAHAR:12436:h:1:27500:162:85:0:3 -TEST(SAHAR):12436:h:1:27500:163:87:0:4 -IRINN:12436:h:1:27500:164:89:0:5 -TEST 2:12436:h:1:27500:165:90:0:6 -IRIB1 RADIO:12436:h:1:27500:8190:81:0:7 -IRIB ARABIC /International 1 Radio:12436:h:1:27500:8190:83:0:8 -INT1 FAMILY RADIO:12475:h:1:27500:8190:961:0:10615 -RADIO 74:12475:h:1:27500:8190:921:0:10612 -R 74 INT.:12475:h:1:27500:8190:931:0:10613 -FAMILY Radio:12475:h:1:27500:8190:951:0:10614 -Temp:12475:h:1:27500:771:8190:0:10607 -SPREE Radio:12475:h:1:27500:8190:501:0:10652 - RVI ( VRT ) :12475:h:1:27500:8190:901:0:10610 -EbS:12475:h:1:27500:101:216:0:10601 -MOU.2:12475:h:1:27500:42:8190:0:10602 -MIZIK TROPICAL:12475:h:1:27500:435:436:0:10606 -MIZIK TROPICAL Radio:12475:h:1:27500:8190:801:0:10608 -Framboise Nord (CH):12475:h:1:27500:8190:971:0:10616 -Framboise Sud (CH):12475:h:1:27500:8190:981:0:10617 -PINK PLUS:12475:h:1:27500:308:257:0:10605 -LIBERTYTV.COM:12475:h:1:27500:941:942:0:10603 -KURDSAT:12475:h:1:27500:600:601:0:10618 -test2:12475:h:1:27500:3000:3001:0:10620 -HRT-TV1:12519:v:1:27500:100:101:0:8301 -HRT-TV2:12519:v:1:27500:103:104:0:8302 -HRT-TV3:12519:v:1:27500:105:106:0:8303 -HRT-HR1:12519:v:1:27500:8190:150:0:8305 -HRT-HR2:12519:v:1:27500:8190:151:0:8306 -HRT-HR3:12519:v:1:27500:8190:152:0:8307 -SICILIA INTERNATIONAL:12519:v:1:27500:501:8190:0:8309 -HRT-NATIONAL:12519:v:1:27500:107:108:0:8304 -HRT-TEST:12519:v:1:27500:109:110:0:8308 -SARDEGNA UNO:12519:v:1:27500:503:8190:0:8310 -R-HRVATSKA:12519:v:1:27500:8190:153:0:8311 -EuroMed:12519:v:1:27500:510:8190:0:8312 -TGRT:12519:v:1:27500:505:8190:0:8313 -HR-TEST:12519:v:1:27500:8190:154:0:8314 -MINI-BVN:12519:v:1:27500:210:8190:0:8315 -SIMS 91 LARIO:12713:h:1:27500:8190:8190:0:8802 -SKYPLEX TXP91:12713:h:1:27500:8190:8190:0:8801 -Skygate 18:12713:h:1:27500:8190:8190:0:2 -MA12_2905:12713:h:1:27500:8190:8190:0:8810 -ES13_1107:12713:h:1:27500:8190:8190:0:8811 -ASTONv0107:12713:h:1:27500:8190:8190:0:8815 -sisal:12713:h:1:27500:4356:8190:0:1 -service:12713:h:1:27500:4356:8190:0:3 -Skyplex 19:12713:h:1:27500:8190:8190:0:8991 -Network:12713:h:1:27500:8190:8190:0:8992 -www.travel:12713:h:1:27500:1180:1184:0:8993 -MagicStar:12713:h:1:27500:8190:1188:0:8994 -Skygate 8:12713:h:1:27500:8190:8190:0:8926 -UDLR:12713:h:1:27500:8190:6653:0:8927 -UDLR UDcast:12713:h:1:27500:8190:8190:0:8928 -Skygate 17:12713:h:1:27500:8190:8190:0:8804 -Netshow:12713:h:1:27500:8190:8190:0:8813 -MEDIOLANUM:12713:h:1:27500:4102:8190:0:8814 -Skygate 10:12713:h:1:27500:8190:8190:0:8901 -HitCast Data 1:12713:h:1:27500:8190:8190:0:8902 -HitCast S.Amer.:12713:h:1:27500:8190:8190:0:8903 -Skygate 1:12713:h:1:27500:8190:8190:0:8876 -MonteCarloSat:12713:h:1:27500:5127:5122:0:8877 -Bulgaria Radio:12713:h:1:27500:8190:4615:0:8828 -skygate 600:12713:h:1:27500:8190:8190:0:8826 -SKYPLEX TXP92:12558:v:1:27500:8190:8190:0:9101 -SKYPLEX TXP92:12558:v:1:27500:8190:8190:0:9361 -SKYPLEX TXP92:12558:v:1:27500:2825:2818:0:9362 -SKYPLEX TXP92:12558:v:1:27500:2825:2818:0:9363 -SKYPLEX TXP92:12558:v:1:27500:2825:2818:0:9364 -SKY_4:12558:v:1:27500:8190:8190:0:9351 -ESP Int'l:12558:v:1:27500:2575:2563:0:9352 -ESP Romanian:12558:v:1:27500:8190:2569:0:9353 -ESP Dutch:12558:v:1:27500:2575:2564:0:9354 -ESP PolisI:12558:v:1:27500:8190:2565:0:9355 -ESP PolisI:12558:v:1:27500:2575:2566:0:9356 -ESP PolisI:12558:v:1:27500:2575:2564:0:9357 -ESP PolisI:12558:v:1:27500:2575:2568:0:9358 -ESP PolisI:12558:v:1:27500:2575:2565:0:9359 -ESP PolisI:12558:v:1:27500:2575:2565:0:9251 -JSTV 1:12596:v:1:27500:2000:2002:0:8213 -JSTV 2:12596:v:1:27500:2011:2013:0:8214 -MBC:12596:v:1:27500:160:81:0:8201 -Service 2:12596:v:1:27500:161:84:0:8202 -NITV:12596:v:1:27500:163:92:0:8204 -SIMAYE AZADI:12596:v:1:27500:166:106:0:8207 -BET:12596:v:1:27500:167:109:0:8208 -CNNI:12596:v:1:27500:168:113:0:8209 -EuroNews:12596:v:1:27500:2221:2238:0:8211 -Canal Rural:12596:v:1:27500:2321:2332:0:8212 -MediaHW:12596:v:1:27500:8190:8190:0:8291 -MediaHW:12615:h:1:27500:8190:8190:0:65534 -MMOV:12615:h:1:27500:2576:8190:0:3910 -MMOV:12615:h:1:27500:2578:8190:0:3913 -MMOV:12615:h:1:27500:2580:8190:0:3917 -MMOV:12615:h:1:27500:2582:8190:0:3918 -MMOV:12615:h:1:27500:2584:8190:0:3919 -MMOV:12615:h:1:27500:2586:8190:0:3920 -SC 1:12615:h:1:27500:2567:8190:0:3921 -SC 2:12615:h:1:27500:2570:8190:0:3924 -SC 3:12615:h:1:27500:2573:8190:0:3927 -MC20:12615:h:1:27500:8190:2304:0:3935 -MC21:12615:h:1:27500:8190:2305:0:3938 -MC22:12615:h:1:27500:8190:2306:0:3941 -MC23:12615:h:1:27500:8190:2307:0:3944 -MC24:12615:h:1:27500:8190:2308:0:3947 -MC25:12615:h:1:27500:8190:2309:0:3950 -MC26:12615:h:1:27500:8190:2310:0:3953 -MC27:12615:h:1:27500:8190:2311:0:3956 -MC28:12615:h:1:27500:8190:2312:0:3959 -MC29:12615:h:1:27500:8190:2313:0:3962 -MC30:12615:h:1:27500:8190:2314:0:3965 -MC31:12615:h:1:27500:8190:2315:0:3968 -MC32:12615:h:1:27500:8190:2316:0:3971 -MC33:12615:h:1:27500:8190:2317:0:3974 -MC34:12615:h:1:27500:8190:2318:0:3977 -MC35:12615:h:1:27500:8190:2319:0:3980 -MC36:12615:h:1:27500:8190:2320:0:3983 -MC37:12615:h:1:27500:8190:2321:0:3986 -MC38:12615:h:1:27500:8190:2322:0:3989 -MC39:12615:h:1:27500:8190:2323:0:3992 -MC39:12635:v:1:27500:8190:2323:0:65534 -SC 4:12635:v:1:27500:2704:8190:0:4001 -SC 5:12635:v:1:27500:2696:8190:0:4002 -SC 6:12635:v:1:27500:2701:8190:0:4003 -MMOV:12635:v:1:27500:2692:8190:0:4007 -MMOV:12635:v:1:27500:2694:8190:0:4010 -MMOV:12635:v:1:27500:2707:8190:0:4016 -MMOV:12635:v:1:27500:2709:8190:0:4019 -MMOV:12635:v:1:27500:2711:8190:0:4022 -MMOV:12635:v:1:27500:2819:8190:0:4025 -MMOV:12635:v:1:27500:2821:8190:0:4028 -Sharjah Arabsat Bouquet:12654:h:1:27500:1160:8190:0:1 -Qatar Arabsat Bouquet:12654:h:1:27500:1260:8190:0:2 -Saudi 1 Arabsat Bouquet:12654:h:1:27500:1360:8190:0:3 -Kuwait Arabsat Bouquet:12654:h:1:27500:1460:8190:0:4 -Libya Arabsat Bouquet:12654:h:1:27500:1560:8190:0:5 -Sudan Arabsat Bouquet:12654:h:1:27500:1660:8190:0:6 -Oman Arabsat Bouquet:12654:h:1:27500:1760:8190:0:7 -Jordan Arabsat Bouquet:12654:h:1:27500:1860:8190:0:8 -IRAQ TV:12654:h:1:27500:1960:8190:0:9 -Dubai Sport:12654:h:1:27500:1060:8190:0:10 -Qatar A2 Arabsat Bouquet:12654:h:1:27500:8190:1221:0:12 -Saudi1 A2 Arabsat Bouquet:12654:h:1:27500:8190:1321:0:13 -Kuwait A2 Arabsat Bouquet:12654:h:1:27500:8190:1421:0:14 -Jordan A2 Arabsat Bouquet:12654:h:1:27500:8190:1821:0:18 -Radio dubai sport:12654:h:1:27500:8190:1021:0:19 -Digitaly:12673:v:1:27500:220:222:0:4203 -Telemarket:12673:v:1:27500:350:351:0:4211 -Internet data 1:12673:v:1:27500:8190:8190:0:4212 -eVision:12673:v:1:27500:360:7142:0:4214 -ANNI 60:12673:v:1:27500:8190:250:0:4230 -R. Reporter:12673:v:1:27500:8190:251:0:4231 -Radio Italia S.M.I.:12673:v:1:27500:8190:252:0:4232 -R. Tour:12673:v:1:27500:8190:253:0:4233 -R.Rinascente:12673:v:1:27500:8190:254:0:4234 -R. Cooky:12673:v:1:27500:8190:255:0:4235 -RadioBaby:12673:v:1:27500:8190:256:0:4236 -McDonalds:12673:v:1:27500:8190:257:0:4237 -TRBuonconsiglio:12673:v:1:27500:8190:401:0:4238 -R-Radio:12673:v:1:27500:8190:402:0:4239 -R. Donna:12673:v:1:27500:8190:403:0:4240 -R. Reporter 2:12673:v:1:27500:8190:404:0:4241 -R. West:12673:v:1:27500:8190:405:0:4242 -Melodia Russia:12673:v:1:27500:6646:406:0:4243 -Padre Pio:12673:v:1:27500:8190:407:0:4244 -Thai TV5:12673:v:1:27500:200:202:0:4201 -Studio Europa:12673:v:1:27500:230:231:0:4204 -Video Italia:12673:v:1:27500:340:342:0:4210 -PASSIONS:12692:h:1:27500:160:8190:0:501 -ONYX:12692:h:1:27500:161:8190:0:502 -MANGAS:12692:h:1:27500:162:88:0:503 -ENCYCLOPEDIA:12692:h:1:27500:163:92:0:504 -POLAR:12692:h:1:27500:164:96:0:505 -CINE PALACE:12692:h:1:27500:165:100:0:506 -ROMANCE:12692:h:1:27500:166:104:0:507 -RIRE:12692:h:1:27500:167:108:0:508 -ACTION:12692:h:1:27500:168:112:0:509 -ABsat test RADIO:12692:h:1:27500:8190:101:0:510 -ABsat test RADIO:12713:v:1:27500:8190:101:0:65534 -MMOV:12713:v:1:27500:2563:8190:0:4304 -MMOV:12713:v:1:27500:2565:8190:0:4307 -MMOV:12713:v:1:27500:2567:8190:0:4310 -MMOV:12713:v:1:27500:2308:8190:0:4313 -MMOV:12713:v:1:27500:2314:8190:0:4316 -MMOV:12713:v:1:27500:2310:8190:0:4324 -MMOV:12713:v:1:27500:2312:8190:0:4327 -MMOV:12713:h:1:27500:2312:8190:0:65534 -SINT:12713:h:1:27500:8190:8190:0:8802 -info:12713:h:1:27500:517:8190:0:8804 -SINT:12713:h:1:27500:8190:8190:0:8806 -CFN:12713:h:1:27500:523:8190:0:8809 -SINT:12713:h:1:27500:8190:8190:0:8812 -duel:12713:h:1:27500:518:8190:0:8815 -comedy:12713:h:1:27500:515:8190:0:8818 -fox kids:12713:h:1:27500:513:8190:0:8821 diff --git a/Tools/epg2timers/README b/Tools/epg2timers/README deleted file mode 100644 index 53888b1..0000000 --- a/Tools/epg2timers/README +++ /dev/null @@ -1,151 +0,0 @@ -Overview. -========= - -The 4 modules in this directory are designed to allow vdr timer -programming via the http://tvtv.de web EPG (Electronic Program Guide). - -Once you have these modules properly configured and installed, -you should be able to simply click on the things you want vdr -to record in the http://tvtv.de web EPG and be done with it. -Everything else can be handled automatically. - - - -Module description. -=================== - -The http://tvtv.de web EPG creates a so-called "merkliste" -("a list of items to remember") containing all the broadcasts -you selected. - -1. The perl script "get_merkliste.pl" transfers this "merkliste" - from the http://tvtv.de web site to a local file "merkliste.html". - -2. The C++ program "epg2timers" converts this HTML file into vdr's - timers.conf format. - -3. The perl script "loadvdr.pl" pumps these new timer entries - into a running vdr using telnet and the SVDRP protocol. - -4. The shell script "update_timers" implements the overall - control of the entire process. - It retrieves the latest merkliste from http://tvtv.de, - converts it to timers.conf format and sends the timer entries - to vdr. - - - -Configuration. -============== - -get_merkliste.pl requires configuration of the "files_to_fetch" -variable preset. -Log in to your http://tvtv.de account and click on the "Bookmark" -item in the "Setup" submenu of the "Mein Programm" side bar menu. -This will open a window with a URL in the location field that ends -with an ID value. Replace the xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -in the "files_to_fetch" variable preset with your ID value. -If you are using an HTTP proxy, uncomment the line containing -the $ua->proxy call and put your proxy details in. - -epg2timers.cxx allows various items to be configured, but it -should work out of the box. See "tvtv.de channel names" below. - -update_timers must know where to find the get_merkliste.pl -perl script and the compiled epg2timers binary. Both must be -in a directory pointed to by the TOOLDIR variable. -update_timers also must know where to find vdr's current -channels.conf file. Put that into the CHANPATH. - -Depending on the price of your internet access, you may want to -run update_timers more or less frequently. It may also be a good -idea to run it at times where it is unlikely to interfere with -your current use of vdr. Configure a crontab entry according to -these personal preferences. Here is the entry I use: -1 2 * * * /home/cko/bin/update_timers -It runs update_timers only once a night at 02:01 a.m. - - -Installation. -============= -Create your TOOLDIR directory if it does not already exist. -Copy get_merkliste.pl and loadvdr.pl into it, compile epg2timers.cxx -with the command: - g++ epg2timers.cxx -o epg2timers -and move the epg2timers binary into the TOOLDIR directory. - -The get_merkliste.pl script requires certain packages to run. -Besides of course perl, install perl-libwww-perl (at least -that's the name on SuSE 7.2, it may have a different name in -your distribution). - -If you have problems with SVDRP and loadvdr.pl, you may want to -try out the update_timers.old script, which replaces the timers.conf -file directly and kills vdr (assuming that it will be restarted -by the runvdr script) to make vdr reload the timers.conf file. - - -tvtv.de channel names. -====================== -The file epg_channel_names contains the names of all channels -currently (as of September 9, 2001) supported by the tvtv.de -web EPG. The variable "channel_map" in epg2timers.cxx maps -these names into PNRs (aka Service IDs). I have initialized -this table with provider names converted from a d-box channel -scan of Astra 19.2E, so the PNRs should be correct for that -satellite, but most of the names propably aren't yet- I simply -had not enough time yet to go through epg_channel_names -and insert all its channel names at the proper places in the -channel map. Consider the map supplied an example. ;-) -If you fix any of the entries, please send me a patch. -For my own humble purposes, the table works well as it is. -Of course, your channels.conf must contain the matching -PNRs (last field in each line). - - -To Do. -====== -These are just ideas. They MAY get implemented. -If you want them to happen, contribute a patch. ;-) - -* Support vdr hierarchical directories (after vdr does) - by mapping the http://tvtv.de genre texts into - directory names. -* start_time_safety_margin for epg2timers. - - -Authors. -======== -Carsten Koch: epg2timers.cxx, update_timers, this README file. - -Axel Gruber and -Rolf Hakenes: get_merkliste.pl - -Peter Ahlert: loadvdr.pl - - -Credits. -======== -I am grateful (in chronological order) to - -* Klaus Schmidinger for his excellent vdr program and for - keeping an open mind in all directions. - -* Suse (my wife, not the Linux distributor ;-) for encouraging me to - write epg2timers in June 2000 and for her constant patience and support. - -* Andreas Steinhauser for periodically criticizing the epg2timers - "manual mode" until I came up with the idea to fully automatize it - and for contributing ideas. - -* Axel Gruber for reminding me half a year later, for pushing - the idea until it got implemented, for asking for new features - all the time and for contributing ideas. - -* Axel Gruber and Rolf Hakenes for contributing the get_merkliste.pl - perl script. - -* Peter Ahlert for contributing the loadvdr.pl perl script. - - -Carsten, September 2001. diff --git a/Tools/epg2timers/epg2timers.cxx b/Tools/epg2timers/epg2timers.cxx deleted file mode 100644 index 94e1c8a..0000000 --- a/Tools/epg2timers/epg2timers.cxx +++ /dev/null @@ -1,656 +0,0 @@ -/* - * epg2timers.cxx: Convert an EPG "merkliste" HTML page (http://tvtv.de) - * to timers.conf format for Klaus Schmidinger's vdr - * (http://www.cadsoft.de/people/kls/vdr). - * - * Copyright (C) 2000, 2001 Carsten Koch - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * version 2 as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * Or, point your browser to http://www.gnu.org/copyleft/gpl.html - * - * The author can be reached at Carsten.Koch@icem.de - */ - - -#include <malloc.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> - -// User-configurable options. - -static const int stop_time_safety_margin = 10; // add 10 minutes to stop time in case start was delayed -static const int recording_priority = 50; // vdr recording priority setting for all timer entries generated -static const int recording_lifetime = 98; // vdr recording life time setting for all timer entries generated - - -// Usually, you should not want to change any of these. - -static const int max_title = 256; // maximum length+1 of title file name generated -static const int max_genre = 32; // maximum length+1 of genre text parsed -static const int max_line = 1024; // line buffer (not used when parsing summary text) -static const int max_summary = 9000; // Summary can be up to 9000 bytes long (a bit shorter than vdr's SVDRP command buffer) -static const int max_vdr_channel = 1000; // maximum size+1 of your channels.conf - -// The following table maps http://tvtv.de channel names into Astra 19.2E PIDs. -// It is incomplete. Contributions welcome. - -typedef struct -{ - const char * tvtv_name; - unsigned short pnr; -} map_entry; - - -static const map_entry channel_map[] = -{ - // Deutschsprachig - {"13th Street", 42}, - {"3sat", 28007}, - {"ARTE", 28109}, - {"B1", 28206}, - {"BR3", 28107}, - {"BR-alpha", 28112}, - {"ARD", 28106}, - {"Discovery", 14}, - {"Disney Channel", 34}, - {"Eins Extra", 28201}, - {"Eins Festival", 28202}, - {"Eins MuXx", 28203}, - {"Filmpalast", 516}, - {"FOX KIDS", 28}, - {"Heimatkanal", 517}, - {"HR", 28108}, - {"Junior", 19}, - {"Kabel 1", 899}, - {"Kinderkanal", 28008}, - {"Krimi&Co", 23}, - {"K-Toon", 12}, - {"Liberty TV.com", 12199}, - {"MDR", 28204}, - {"NDR", 28224}, - {"NEUN LIVE", 897}, - {"ORB", 28205}, - {"ORF1", 13001}, - {"ORF2", 13002}, - {"Phoenix", 28114}, - {"Planet", 13}, - {"Premiere 1", 10}, - {"Premiere 2", 11}, - {"Premiere 3", 43}, - {"Premiere Action", 20}, - {"Premiere Comedy", 29}, - {"Premiere SCI-FI", 41}, - {"Premiere Star", 9}, - {"PREMIERE WORLD", 8}, - {"ProSieben", 898}, - {"RTL", 12003}, - {"RTL2", 12020}, - {"SAT.1", 46}, - {"SeaSonS", 33}, - {"SR", 28110}, - {"Studio Universal", 36}, - {"Sunset", 16}, - {"Super RTL", 12040}, - {"Test-Z1", 28305}, - {"TW1", 13013}, - {"Via 1 - Schöner Reise", 44}, - {"VOX", 12060}, - {"WDR", 28111}, - {"ZDF", 28006}, - {"ZDF.doku", 28014}, - {"ZDF.info", 28011}, - // Movies - {"AXN", 29506}, - {"CANAL+", 29100}, - {"CANAL+ AZUL", 29101}, - {"CANAL+ ROJO", 29102}, - {"CANAL+ VERT", 8208}, - {"CANAL+ 16/9", 8204}, - {"CANAL+ 16|9", 29024}, - {"C+ROOD", 4005}, - {"CINE CINEMA I", 8206}, - {"CINE CINEMA II", 8002}, - {"CINE CINEMA III", 8003}, - {"CINE CLASSICS", 8709}, - {"CINE CINEMA 16/9", 8301}, - {"cinecinemas", 4008}, - {"CINECLASSICS", 29203}, - {"Cinedom 1", 176}, - {"Cinedom 1B", 178}, - {"Cinedom 1C", 180}, - {"Cinedom 1D", 190}, - {"Cinedom 2", 179}, - {"Cinedom 2B", 183}, - {"Cinedom 2C", 184}, - {"Cinedom 2D", 188}, - {"Cinedom 2E", 193}, - {"Cinedom 3", 182}, - {"Cinedom 3B", 185}, - {"Cinedom 3C", 192}, - {"Cinedom 3D", 195}, - {"Cinedom 4", 181}, - {"Cinedom 4B", 187}, - {"Cinedom 4C", 191}, - {"Cinedom 5", 186}, - {"Cinedom 5B", 194}, - {"Cindedom Deluxe", 189}, - {"CINEMANÍA AZUL", 29501}, - {"CINEMANÍA ROJO", 29605}, - {"CINEMANÍA", 29500}, - {"K1", 8401}, - {"K2", 8402}, - {"K3", 8403}, - {"K4", 8404}, - {"K5", 8405}, - {"K6", 8406}, - {"K7", 8407}, - {"K9", 8409}, - {"K12", 8412}, - {"TAQUILLA 1", 29206}, - {"TAQUILLA 2", 29207}, - {"TAQUILLA 3", 29502}, - {"TAQUILLA 4", 29503}, - {"TAQUILLA 5", 29504}, - {"TAQUILLA 6", 29301}, - {"TAQUILLA 7", 29302}, - {"TAQUILLA 8", 29303}, - {"TAQUILLA 11", 29316}, - {"TAQUILLA 12", 29610}, - {"TAQUILLA 13", 29402}, - {"TAQUILLA 14", 29212}, - {"TAQUILLA 16|9", 29606}, - // Music - {"40 LATINO", 29031}, - {"40 TV", 29110}, - {"CANAL+ JAUNE", 8203}, - {"CLASSICA", 15}, - {"GOLDSTAR TV", 518}, - {"MCM 2", 8305}, - {"MCM AFRICA", 8307}, - {"MCM", 8302}, - {"MTV 2", 28649}, - {"MTV 6", 28641}, - {"MTV Base", 28645}, - {"MTV Central", 28643}, - {"MTV F", 28642}, - {"MTV Hits", 28644}, - {"MUZZIK", 8007}, - {"RFM TV", 17008}, - {"TMF", 5015}, - {"VH1 Classic", 28647}, - {"VH1", 28646}, - {"Video Italia", 12220}, - {"VIVA ZWEI", 12120}, - {"VIVA", 12732}, - {"ZIK'/XXL", 17004}, - // News - {"BBC WORLD", 17007}, - {"Bloomberg TV", 12160}, - {"CNBC", 28010}, - {"CNBC", 35}, - {"CNBC-NBC", 29202}, - {"CNN", 28512}, - {"DW-tv", 9005}, - {"EuroNews", 28015}, - {"FOX NEWS", 29032}, - {"N24", 47}, - {"n-tv", 12730}, - {"Sky News", 3995}, - // Netherlands - {"NED1", 4011}, - {"NED2", 4012}, - {"NED3", 4013}, - {"NET5", 5004}, - {"RTL4", 2004}, - {"RTL5", 2005}, - {"SBS6", 5005}, - {"V8/Fox Kids", 5020}, - {"Yorin", 5010}, - // Porn - {"BEATE-UHSE.TV", 21}, - {"Blue Movie1", 513}, - {"Blue Movie2", 514}, - {"Blue Movie3", 515}, - {"K10", 8410}, - {"TAQUILLA X", 29213}, - {"TAQUILLA X", 29602}, - {"TAQUILLA XX", 29607}, - {"X-ZONE", 4009}, - // Sports - {"C+BLAUW", 4006}, - {"DSF", 900}, - {"EUROSPORT", 8101}, - {"Eurosport", 28009}, - {"EUROSPORT", 29310}, - {"EUROSPORTNEWS", 29037}, - {"PATHE SPORT|", 8009}, - {"PREMIERE SPORT 1", 17}, - {"PREMIERE SPORT 2", 27}, - {"SUPERDOM", 26}, - // French - {"13EME RUE", 8703}, - {"AB 1", 17001}, - {"AB MOTEURS", 17000}, - {"ACTION", 17010}, - {"ALLOCINE TV", 8308}, - {"ANIMAUX", 17002}, - {"ARTE", 9009}, - {"BLOOMBERG TV", 8004}, - {"CA TV", 8610}, - {"CANAL+", 8201}, - {"CANAL+ BLEU", 8202}, - {"CANAL J", 8108}, - {"CANAL JIMMY", 8006}, - {"CANALCLUB", 8812}, - {"Cartoon Network", 28511}, - {"CLUB TELEACHAT", 8303}, - {"COMEDIE !", 8702}, - {"CONTACT TV", 8804}, - {"CUISINE.TV", 8112}, - {"DEMAIN !", 8701}, - {"DISNEY CHANNEL", 8207}, - {"DT CSAT 10", 9159}, - {"ENCYCLOPEDIA", 17003}, - {"ESCALES", 17005}, - {"EURONEWS", 8505}, - {"FORUM", 8707}, - {"FRANCE 2", 8801}, - {"FRANCE 3", 8802}, - {"GAME ONE", 8717}, - {"i TELEVISION", 8010}, - {"KIOSQUE", 8704}, - {"KTO", 8304}, - {"LA CHAINE METEO", 8008}, - {"LA CINQUIEME", 8501}, - {"LaChaîneHistoire", 17006}, - {"LCI", 8107}, - {"LCP", 8506}, - {"L'EQUIPE TV", 8706}, - {"LibertyTV.com", 12280}, - {"MANGAS", 17011}, - {"MONTECARLO TMC", 8102}, - {"Motors TV", 12300}, - {"NAT GEOGRAPHIC", 8310}, - {"PAD", 8211}, - {"PARIS PREMIERE", 8104}, - {"PLANETE 2", 8507}, - {"PLANETE", 8103}, - {"PMU sur Canal+", 8210}, - {"RFO SAT", 8708}, - {"SANTE - VIE", 8110}, - {"SEASONS", 8001}, - {"TCM", 28515}, - {"TEST CDN 1", 8616}, - {"TEST CDN 3", 8627}, - {"TiJi", 8309}, - {"TV 5", 9001}, - {"TV BREIZH", 8502}, - {"TV Puls", 20601}, - {"TV5 Europe", 12240}, - {"VOYAGE", 8105}, - // Spanish - {"ANDALUCÍA TV", 29011}, - {"Bloomberg", 12721}, - {"CALLE 13", 29609}, - {"Canal Canarias", 29700}, - {"Cartoon Network", 29314}, - {"CNN+", 29020}, - {"DISCOVERY", 29116}, - {"DISNEY CHANNEL", 29111}, - {"DOCUMANÍA", 29200}, - {"ESTILO", 29305}, - {"ETB", 29035}, - {"FASHION TV", 29115}, - {"FOX KIDS", 29209}, - {"FOX", 29507}, - {"MOSAICO", 29315}, - {"MÉTEO", 29014}, - {"Nat Geo Channel", 29034}, - {"NICK-PARAMOUNT", 29312}, - {"RTPI", 9006}, - {"SEASONS", 29204}, - {"TAQUILLA 0", 29205}, - {"TCM.", 28516}, - {"TVC INT.", 29701}, - {"VIAJAR", 29306}, - // Miscellaneous - {"Alice", 12200}, - {"Canal Algerie", 9008}, - {"CANALPRO TV", 8516}, - {"ESC1 - EGYPTE", 9003}, - {"FASHION TV.COM", 17009}, - {"Home Shopping Euro", 45}, - {"Home Shopping Euro", 40}, - {"Kabel 1 Austria", 20004}, - {"Kabel 1 Schweiz", 20003}, - {"Polonia 1/Top Sho", 20366}, - {"ProSieben A", 20002}, - {"ProSieben Schweiz", 20001}, - {"QVC GERMANY", 12100}, - {"RAI 1", 9004}, - {"REAL MADRID TV", 29019}, - {"RealityTV", 20309}, - {"RTL TELE Letzebuerg", 3994}, - {"RTM - MAROC", 9002}, - {"SÜDWEST BW", 28113}, - {"SÜDWEST RP", 28231}, - {"Super 1", 20364}, - {"Travel", 28001}, - {"TV7", 9007}, - {"TV-NIEP II", 12740}, - {"Wishline", 12320} -}; - - -// Nothing user-configurable below this line. - -static const char date_line[] = "\t<td align=center valign=middle colspan=3><span id=fb-b10>"; -static const char start_time_line[] = " \t\t<td id=\"jobview-box-date\" align=center><nobr> "; -static const char stop_time_line[] = "\t\t\t<tr><td id=\"line\" align=center><span id=\"fn-w9\">bis "; -static const char channel_line[] = "\t\t\t<tr><td align=center><span id=\"fb-w9\">"; -static const char title_line[] = "\t\t\t\t<td align=left width=100%><span id=\"fb-w10\">"; -static const char summary_line[] = "<span id=\"fn-b8\">"; -static const char genre_line[] = "\t\t\t\t<td align=right valign=center nowrap><span id=\"fn-w10\">"; - -static const int month_lengths[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; - - - - -char map_special_char(const char * const word) - -{ - if (strcmp(word, "auml") == 0) - return 'ä'; - else if (strcmp(word, "ouml") == 0) - return 'ö'; - else if (strcmp(word, "uuml") == 0) - return 'ü'; - else if (strcmp(word, "Auml") == 0) - return 'Ä'; - else if (strcmp(word, "Ouml") == 0) - return 'Ö'; - else if (strcmp(word, "Uuml") == 0) - return 'Ü'; - else if (strcmp(word, "szlig") == 0) - return 'ß'; - else if (strcmp(word, "nbsp") == 0) - return ' '; - else if (strcmp(word, "amp") == 0) - return '&'; - return ' '; -} - - - - - -void read_file_name_and_title(const char * const line, char * const file_name, char * const title) - -{ - int line_index = sizeof(title_line) - 1; - int title_index = 0; - int file_name_index = 0; - char ch; - do - { - ch = line[line_index++]; - if (ch == '&') - { - char word[10]; - int i = 0; - while ((line[line_index + i] != ';') && (i < 9)) - { - word[i] = line[line_index + i]; i++; - } - if (line[line_index + i] == ';') - { - word[i] = 0; - ch = map_special_char(word); - line_index += i; - } - } - switch (ch) - { - case 'ä': file_name[file_name_index++] = 'a'; file_name[file_name_index++] = 'e'; break; - case 'ö': file_name[file_name_index++] = 'o'; file_name[file_name_index++] = 'e'; break; - case 'ü': file_name[file_name_index++] = 'u'; file_name[file_name_index++] = 'e'; break; - case 'Ä': file_name[file_name_index++] = 'A'; file_name[file_name_index++] = 'e'; break; - case 'Ö': file_name[file_name_index++] = 'O'; file_name[file_name_index++] = 'e'; break; - case 'Ü': file_name[file_name_index++] = 'U'; file_name[file_name_index++] = 'e'; break; - case 'ß': file_name[file_name_index++] = 's'; file_name[file_name_index++] = 's'; break; - case ' ': file_name[file_name_index++] = '_'; break; - case '&': - file_name[file_name_index++] = 'u'; file_name[file_name_index++] = 'n'; file_name[file_name_index++] = 'd'; - break; - default: - if (((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) || ((ch >= '0') && (ch <= '9')) || (ch == '-')) - file_name[file_name_index++] = ch; - } - title[title_index++] = ch; - } while ((file_name_index < max_title-5) && (ch != '<') && (ch != 0)); - file_name[file_name_index] = 0; - title[title_index-1] = 0; -} - - - -void read_summary(char * const summary) - -{ - int summary_index = 0; - int ch; - bool need_space = false; - bool done = false; - do - { - ch = getchar(); - switch (ch) - { - case '&': - { - char word[10]; - int i = 0; - ch = getchar(); - while ((ch != ';') && (ch != EOF) && (i < 9)) - { - word[i++] = ch; - ch = getchar(); - } - word[i] = 0; - if (need_space) {summary[summary_index++] = ' '; need_space = false;} - summary[summary_index++] = map_special_char(word); - } - break; - case '<': - { - char word[6]; - int word_index = 0; - do - { - ch = getchar(); - word[word_index++] = ch; - } while ((word_index < 6) && (ch != '>') && (ch != EOF)); - while ((ch != '>') && (ch != EOF)) ch = getchar(); - if (strncmp("/span", word, 4) == 0) - done = true; - } - break; - default: - { - if (ch <= ' ') - { - if (summary_index > 0) need_space = true; - } - else - { - if (need_space) {summary[summary_index++] = ' '; need_space = false;} - summary[summary_index++] = ch; - } - } - } - } while ((summary_index < max_summary - 2) && (!done) && (ch != EOF)); - summary[summary_index] = 0; -} - - - -int find_channel_number(const unsigned short * const vdr_pnrs, const char * const channel_name) - -{ - for (int tvtv_channel_number = 0; tvtv_channel_number < sizeof(channel_map)/sizeof(map_entry); tvtv_channel_number++) - if (strcmp(channel_name, channel_map[tvtv_channel_number].tvtv_name) == 0) - for (int vdr_channel_number = 0; vdr_pnrs[vdr_channel_number] != 0xFFFF; vdr_channel_number++) - if (vdr_pnrs[vdr_channel_number] == channel_map[tvtv_channel_number].pnr) - return vdr_channel_number; - fprintf(stderr, "Error - channel '%s' not recognized.\n", channel_name); - exit(1); - /*NOTREACHED*/ -} - - - - -unsigned short * read_vdr_pnrs(const char * const channels_conf_file_name) - -{ - FILE * channels_conf = fopen(channels_conf_file_name, "r"); - if (channels_conf == NULL) - { - perror("unable to open channels.conf."); - exit(1); - } - unsigned short * vdr_pnrs = (unsigned short *) malloc(max_vdr_channel * sizeof(unsigned short)); - int vdr_channel_number = 0; - while (!feof(channels_conf) && (vdr_channel_number < max_vdr_channel-1)) - { - char line[1024]; - fgets(line, sizeof(line)-1, channels_conf); - int pnr; - if ((line[0] != ':') && - (sscanf(line, "%*[^:]:%*[^:]:%*[^:]:%*[^:]:%*[^:]:%*[^:]:%*[^:]:%*[^:]:%*[^:]:%d", &pnr) == 1)) - vdr_pnrs[vdr_channel_number++] = pnr; - } - vdr_pnrs[vdr_channel_number++] = 0xFFFF; // sentinel - fprintf(stderr, "%d pnrs.\n", vdr_channel_number); - return (unsigned short *) realloc(vdr_pnrs, vdr_channel_number * sizeof(unsigned short)); -} - - - - -void process_input(const unsigned short * const vdr_pnrs) - -{ - - int channel = -1; - int day = -1; - int next_day = -1; - int start_time = -1; - int stop_hour = -1; - int stop_minute= -1; - char genre[max_genre] = {0}; - char summary[max_summary] = {0}; - char file_name[max_title] = {0}; - char title[max_title] = {0}; - - while (!feof(stdin)) - { - char line[max_line]; - fgets(line, max_line-1, stdin); - line[max_line-1] = 0; - if (strncmp(line, date_line, sizeof(date_line)-1) == 0) - { - const int month = (line[sizeof(date_line) + 6]- '0') * 10 + line[sizeof(date_line) + 7]-'0'; - day = (line[sizeof(date_line) + 3]- '0') * 10 + line[sizeof(date_line) + 4]-'0'; - next_day = day == month_lengths[month-1]? 1 : day + 1; - } - else if (strncmp(line, start_time_line, sizeof(start_time_line)-1) == 0) - start_time = (line[sizeof(start_time_line) - 1] - '0') * 1000 + - (line[sizeof(start_time_line) ] - '0') * 100 + - (line[sizeof(start_time_line) + 2] - '0') * 10 + - (line[sizeof(start_time_line) + 3] - '0'); - else if (strncmp(line, stop_time_line, sizeof(stop_time_line)-1) == 0) - { - stop_hour = (line[sizeof(stop_time_line) - 1] - '0') * 10 + - (line[sizeof(stop_time_line) ] - '0'); - stop_minute = (line[sizeof(stop_time_line) + 2] - '0') * 10 + - (line[sizeof(stop_time_line) + 3] - '0') + - stop_time_safety_margin; - if (stop_minute > 59) - { - stop_minute -= 60; - if (stop_hour == 23) - stop_hour = 0; - else - stop_hour++; - } - if ((day < 0) || (start_time < 0) || (file_name[0] == 0) || (channel == -1)) - { - fprintf(stderr, "Input data error.\n"); - exit(1); - } - else - printf("1:%03d:%02d:%04d:%02d%02d:%d:%d:%s:\"%s\" %s||%s||||||(epg2timers)\n", - channel+1, start_time < 600? next_day : day, start_time, stop_hour, stop_minute, - recording_priority, recording_lifetime, file_name, - title, genre, summary); - start_time = -1; channel = -1; - file_name[0] = 0; summary[0] = 0; genre[0] = 0; - } - else if (strncmp(line, title_line, sizeof(title_line)-1) == 0) - read_file_name_and_title(line, file_name, title); - else if (strncmp(line, channel_line, sizeof(channel_line)-1) == 0) - { - int i = sizeof(channel_line); - while ((line[i] != '<') && (line[i] != 0)) i++; - line[i] = 0; // end of string - channel = find_channel_number(vdr_pnrs, line + sizeof(channel_line) - 1); - } - else if (strncmp(line, summary_line, sizeof(summary_line)-1) == 0) - read_summary(summary); - else if (strncmp(line, genre_line, sizeof(genre_line)-1) == 0) - { - int genre_index; - for (genre_index = 0; genre_index < max_genre-1; genre_index++) - { - const char ch = line[genre_index + sizeof(genre_line)-1]; - if ((ch == 0) || (ch == '&') || (ch == '<')) - break; - genre[genre_index] = ch; - } - genre[genre_index] = 0; - } - } -} - - - - -main(int argc, char *argv[]) - -{ - fprintf(stderr, "epg2timers Version 0.5, 15-Sep-2001.\n"); - - if (argc != 2) - { - fprintf(stderr, "usage: %s channels.conf\n", argv[0]); - exit(1); - } - - const unsigned short * const vdr_pnrs = read_vdr_pnrs(argv[1]); - process_input(vdr_pnrs); - exit(0); -} diff --git a/Tools/epg2timers/epg_channel_names b/Tools/epg2timers/epg_channel_names deleted file mode 100644 index 2633a99..0000000 --- a/Tools/epg2timers/epg_channel_names +++ /dev/null @@ -1,400 +0,0 @@ -ATV,at -ORF1,at -ORF2,at -TW1,at - -Club RTL,be -Ketnet/Canvas,be -TVI,be -tv1,be - -SF1,ch -sf2,ch - -13th Street,de -3sat,de,at,ch -ARD,de -ARTE,de -B1,de -BBC World,de -BEATE-UHSE.TV,de -BR-alpha,de -BR3,de -Bet on Jazz,de -Bloomberg TV,de -Blue Movie1,de -Blue Movie2,de -Blue Movie3,de -CNBC,de -CNN,de -Cartoon,de -Cindedom Deluxe,de -Cinedom 1,de -Cinedom 2,de -Cinedom 3,de -Cinedom 4,de -Cinedom 5,de -Classica,de -DSF,de -Discovery,de -Disney Channel,de -Eins Extra,de -Eins Festival,de -Eins MuXx,de -EuroNews,de -Eurosport,de -FOX KIDS,de -Filmpalast,de -Goldstar TV,de -HH-1,de -HR,de -Heimatkanal,de -Junior,de -K-Toon,de -Kabel 1,de -Kinderkanal,de -Krimi&Co,de -MDR,de -MTV,de -MTV2,de -N24,de -NBC,de -NDR,de -NEUN LIVE,de -ONYX,de -ORB,de -Phoenix,de -Planet,de -Premiere 1,de -Premiere 2,de -Premiere 3,de -Premiere Action,de -Premiere Comedy,de -Premiere SCI-FI,de -Premiere Sport1,de -Premiere Sport2,de -Premiere Sport3,de -Premiere Star,de -Premiere analog,de -ProSieben,de -QVC,de -RTL,de -RTL2,de -SAT.1,de -SR,de -SWR BW,de -SWR RP,de -SeaSonS,de -Studio Universal,de -Sunset,de -Super RTL,de -TNT,de -TRT,de,tr -TV.BERLIN,de -Theaterkanal,de -VIVA,de -VIVA2,de -VOX,de -WDR,de -ZDF,de -ZDF.doku,de -ZDF.info,de -n-tv,de -skynews,de -tv.m,de - -Danmark 1,dk -TV2 Danmark,dk - -MTV3,fi -Nelonen 4,fi -Subtv,fi -TV1,fi -TV2,fi - -13ème Rue,fr -AB 1,fr -Arte,fr -Arte Sat,fr -Canal J,fr -Canal Jimmy,fr -Canal+,fr -Canal+ Bel. bleu,fr -Canal+ Bel. jaune,fr -Canal+ Belgique,fr -Canal+ bleu,fr -Canal+ jaune,fr -Canal+ vert,fr -Ciné Cinémas 1,fr -Ciné Cinémas 2,fr -Ciné Cinémas 3,fr -Ciné Classics,fr -Cinéfaz,fr -Cinéstar 1,fr -Cinéstar 2,fr -Cinétoile,fr -Comédie !,fr -Disney Channel,fr -Escale,fr -Eurosport,fr -Festival,fr -Fox Kids,fr -France 2,fr -France 3,fr -Histoire,fr -LCI,fr -La Cinquième Sat,fr -La chaîne histoire,fr -La cinquième,fr -M6,fr -M6 Music,fr -MCM,fr -MTV,fr -Mangas,fr -Mezzo,fr -Muzzik,fr -Odyssée,fr -Paris Première,fr -Pathé sport,fr -Planète,fr -RTBF 1,fr -RTBF 2,fr -RTL 9,fr -Série Club,fr -TCM,fr -TF1,fr -TMC,fr -TSR 1,fr -TSR 2,fr -TV5,fr -Télétoon,fr -Téva,fr -Voyage,fr -XXL,fr - -ANIMALplanet,hu -Budapest TV,hu -Duna TV,hu -FILMMÚZEUM,hu -FOX KIDS/SPORTS,hu -FÕNIX TV,hu -Game Channel,hu -HBO,hu -Hallmark,hu -MAGYAR ATV,hu -Minimax,hu -National Geographic,hu -Nickelodeon,hu -RTL Klub,hu -Romantica,hu -SATeLIT,hu -SPORT1,hu -Spektrum TV,hu -TV2,hu -VIASAT3,hu -VIVA+,hu -fix.tv,hu -m1,hu -m2,hu - -+ Calcio,it -+ F1,it -Adult +,it -CANALE 5,it -Canal Jimmy,it -Canale Viaggi,it -Cartoon Network,it -Cine Classics,it -CineCinemas 1,it -CineCinemas 2,it -Classica,it -Cult Network,it -Discovery Channel,it -Disney Channel,it -Euro News,it -Eurosport,it -Hallmark,it -Happy Channel,it -ITALIA 1,it -La 7,it -MTV,it -MTV - TMC 2,it -Marcopolo,it -Match Music,it -Milan Channel,it -Nuvolari Motor,it -Odeon,it -Planete,it -Primafila,it -RAI 1,it -RAI 2,it -RAI 3,it -RAI Sat Fiction,it -RETE 4,it -Raisat Album,it -Raisat Art,it -Raisat Cinema,it -Raisat Educational,it -Raisat Gambero Rosso,it -Raisat Nettuno 1,it -Raisat Nettuno 2,it -Raisat Ragazzi,it -Raisat Show,it -Raisat Sport,it -SNAI Sat,it -Salute e benessere,it -Sat 2000,it -Satisfation Club TV,it -Seasons,it -Stream Calcio,it -Stream News,it -Studio Universal,it -TSI 1,it -TSI 2,it -TVL,it -Tele+ 16:9,it -Tele+ Bianco,it -Tele+ Grigio,it -Tele+ Nero,it -VIVA - Rete A,it - -Netherland 1,nl -Netherland 2,nl -Netherland 3,nl - -ATV Avrupa,tr -Kanal D,tr -Kral TV,tr -NTV Turkey,tr -Show TV,tr -Star TV,tr - -Adult Channel,uk -Adventure One,uk -Anglia,uk -BBC Choice,uk -BBC Choice NI,uk -BBC Choice Scotland,uk -BBC Choice Wales,uk -BBC Knowledge,uk -BBC News 24,uk -BBC Parliament,uk -BBC Prime,uk -BBC World,uk -BBC1,uk -BBC1 North. Ireland,uk -BBC1 Scotland,uk -BBC1 Wales,uk -BBC2,uk -BBC2 North. Ireland,uk -BBC2 Scotland,uk -BBC2 Wales,uk -Bangla TV,uk -Bloomberg TV,uk -Border,uk -Bravo (Analogue),uk -Bravo (Digital),uk -British Eurosport,uk -CNBC Europe,uk -CNN,uk -Carlton Central,uk -Carlton Cinema,uk -Carlton Food,uk -Carlton Westcountry,uk -Carlton/LWT,uk -Cartoon Network,uk -Challenge TV,uk -Channel 4,uk -Channel 5,uk -Channel Television,uk -Disc. Animal Planet,uk -Disc. Channel (Ana.),uk -Disc. Civilisations,uk -Disc. Home Leisure,uk -Disc. Sci-Trek,uk -Disc. Travel Advent.,uk -Discovery Channel,uk -Discovery Kids,uk -Discovery Wings,uk -Disney,uk -Euronews,uk -Fantasy Ch. Dig.,uk -Fantasy Channel,uk -Film Four,uk -Fox Kids,uk -Grampian,uk -Granada,uk -Granada Breeze,uk -Granada Men & Motors,uk -Granada Plus,uk -HTV Wales,uk -HTV West,uk -Hallmark,uk -History Channel,uk -ITN News Channel,uk -ITV Sport Channel,uk -ITV Sport Plus,uk -ITV2,uk -Landscape,uk -Living,uk -MTV UK,uk -MUTV,uk -Meridian,uk -National Geographic,uk -Network 2,uk -Nick Junior,uk -Nick Junior Analogue,uk -Nickelodeon (dig.),uk -Nickleodeon (ana.),uk -Pakistani Channel,uk -Paramount Comedy,uk -Performance,uk -Play UK,uk -Playboy TV,uk -QVC,uk -RTE1,uk -Racing Channel,uk -Rapture TV,uk -S2,uk -S4C,uk -S4C digidol,uk -SKY Cinema,uk -SKY Movie Max(SDig.),uk -SKY Movie Max(ana.),uk -SKY News,uk -SKY Premier(Digital),uk -SKY Premier(OnDigi),uk -SKY Sports 1,uk -SKY Sports 2,uk -SKY Sports 3,uk -Sci-Fi Cable,uk -Sci-Fi Satelite,uk -Scottish,uk -Screenshop,uk -Shop!,uk -Sky Movie Max(OnDig),uk -Sky One,uk -Sky One (OnDigital),uk -Sky Premier(Ana.),uk -Sky Sports .com,uk -Sky Sports Extra,uk -Sky Travel,uk -Sony Entertainment,uk -TCM,uk -TCM (Analogue),uk -TG4,uk -TV3,uk -Tara Television,uk -The Box,uk -Trouble Analogue,uk -Trouble Digital,uk -Tyne Tees Television,uk -UK Drama,uk -UK Gold,uk -UK Gold 2,uk -UK Horizons,uk -UK Style,uk -Ulster ,uk -VH1,uk -Yorkshire,uk -Zee TV,uk diff --git a/Tools/epg2timers/get_merkliste.pl b/Tools/epg2timers/get_merkliste.pl deleted file mode 100755 index bb23fa3..0000000 --- a/Tools/epg2timers/get_merkliste.pl +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/perl -# Create a user agent object - -use HTML::Entities; -use HTML::Parser; -use LWP::UserAgent; -use IO::Handle; - -STDOUT->autoflush(1); - -$ua = new LWP::UserAgent; -$ua->agent("Mozilla/9.1 " . $ua->agent); -# $ua->proxy('http', 'http://localhost:8080/'); - -$filename = "merkliste.html"; -$base_url = "http://www.tvtv.de"; -# Hier das Bookmark von TVTV eintragen: -@files_to_fetch = ("/cgi-bin/bookmark.cgi?id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); - -$num = 0; -$state = 0; - -$p = HTML::Parser->new( api_version => 3, - start_h => [\&fparser_start, "tagname, attr"], - unbroken_text => 1 ); - -foreach $url (@files_to_fetch) { - $nurl = $base_url . $url; - print "Getting " . $nurl . "...\n"; - $req = new HTTP::Request GET => $nurl; - $res = $ua->request($req); - if ($res->is_success) { - open (OUTFILE, ">" . $filename); - print OUTFILE $res->content; - close (OUTFILE); - $p->parse ($res->content); - $p->eof; - } else { - print "...FAILED\n"; - } -} -# Zielordner fuer die Speicherung der Merkliste: - -print "...saved to 'merkliste.html'\n"; -sub fparser_start { - my($tagname, $attr_t) = @_; - my(%attr) = %$attr_t; - - if ($tagname eq "frame") { - if ($state == 1) { - if (($attr{name} eq "frame_main") || - ($attr{name} eq "frame_nav") || - ($attr{name} eq "frame_nav_bottom")) { - push @files_to_fetch, $attr{src}; - } - } - if ($state == 2) { - if (($attr{name} eq "frame_content")) { - push @files_to_fetch, $attr{src}; - } - } - } - if ($tagname eq "a") { - if ($attr{href} ne "") { - $last_href = $attr{href}; - if ($state == 0) { - push @files_to_fetch, $last_href; - $state = 1; - } - } - } - if ($tagname eq "img") { - if ($state == 1) { - if ($attr{src} =~ /b_joblist/i) { - $state = 2; - push @files_to_fetch, $last_href; - } - } - } -} - - diff --git a/Tools/epg2timers/loadvdr.pl b/Tools/epg2timers/loadvdr.pl deleted file mode 100755 index 485b0a4..0000000 --- a/Tools/epg2timers/loadvdr.pl +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/perl -# -# 0.01 loadvdr (peter) -# 0.02 delete old entries before updating (peter) -# 0.03 dumped Net::Telnet because of lost connections -# -# please submit diffs to petera@gmx.net -# -# ./epg2timers < merkliste.html | perl -w loadvdr.pl -# -# - -use Socket; -use Getopt::Std; - -@resp = (); - -$Dest = "localhost"; -$Port = 2001; - -$Timeout = 10; # max. seconds to wait for response - -$SIG{ALRM} = sub { Error("timeout"); }; -alarm($Timeout); - -$iaddr = inet_aton($Dest) || Error("no host: $Dest"); -$paddr = sockaddr_in($Port, $iaddr); - -$proto = getprotobyname('tcp'); -socket(SOCK, PF_INET, SOCK_STREAM, $proto) || Error("socket: $!"); -connect(SOCK, $paddr) || Error("connect: $!"); -select(SOCK); $| = 1; -Receive_void(); - -Send("lstt"); - -foreach $item (reverse @resp){ - if ($item =~ /^250.(\d{1,2}).*\(epg2timers\)/) { - Send_void("DELT $1"); - } -} - -while (defined ($line = <STDIN>)) { - chomp $line; - Send_void("UPDT $line"); -} - -Send("quit"); -close(SOCK) || Error("close: $!"); - - - -sub Send -{ - my $cmd = shift || Error("no command to send"); - print SOCK "$cmd\r\n"; - Receive(); -} - -sub Send_void -{ - my $cmd = $_[0]; - print SOCK "$cmd\r\n"; - Receive_void(); -} - -sub Receive -{ - while (<SOCK>) { - chomp; - push @resp,$_; - last if substr($_, 3, 1) ne "-"; - } -} - -sub Receive_void -{ - while (<SOCK>) { - last if substr($_, 3, 1) ne "-"; - } -} - -sub Error -{ - print STDERR "@_\n"; - close(SOCK); - exit 0; -} - diff --git a/Tools/epg2timers/update_timers b/Tools/epg2timers/update_timers deleted file mode 100755 index 3849841..0000000 --- a/Tools/epg2timers/update_timers +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# update_timers: retrieve a new "merkliste" from http://tvtv.de, -# convert it to vdr format and transmit it to vdr via SVDRP. - -TOOLDIR="/home/cko/bin" -CHANPATH="/home/cko/VDR/channels.conf" - -cd /tmp -rm -f merkliste.html - -# if you have a slow dial up connection to your name server and/or ISP, -# this will avoid a timeout in get_merkliste.pl. -ping -c 2 www.tvtv.de - -# get the "merkliste". -$TOOLDIR/get_merkliste.pl - -if [ -s merkliste.html ] ; then - # convert merkliste.html to timers.conf format and transmit it to vdr. - $TOOLDIR/epg2timers $CHANPATH < merkliste.html | $TOOLDIR/loadvdr.pl -fi diff --git a/Tools/epg2timers/update_timers.old b/Tools/epg2timers/update_timers.old deleted file mode 100755 index c4c3f5c..0000000 --- a/Tools/epg2timers/update_timers.old +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -# update_timers: load a new "merkliste" from http://tvtv.de -# and create a new VDR timer configuration file (timers.conf) -# from it. Restart VDR if the timers have changed. - -TOOLDIR="/home/cko/bin" -VDRDIR="/home/cko/VDR" - -cd /tmp -rm -f merkliste.html epgtimers.new epgtimers.old vdrtimers.old -ping -c 2 www.tvtv.de -$TOOLDIR/get_merkliste.pl -if [ -s merkliste.html ] ; then - $TOOLDIR/epg2timers $VDRDIR/channels.conf < merkliste.html | sort -t: +2.0 -5.0 > epgtimers.new - fgrep '(epg2timers)' $VDRDIR/timers.conf | sort -t: +2.0 -5.0 > epgtimers.old - if ! cmp -s epgtimers.old epgtimers.new ; then - /sbin/killproc $VDRDIR/vdr - fgrep -v '(epg2timers)' $VDRDIR/timers.conf > vdrtimers.old - cat epgtimers.new vdrtimers.old | sort -t: +2.0 -5.0 > $VDRDIR/timers.conf - echo "Timers updated." - fi -fi -rm -f merkliste.html epgtimers.new epgtimers.old vdrtimers.old diff --git a/Tools/master-timer/LIESMICH b/Tools/master-timer/LIESMICH deleted file mode 100644 index 8e53da9..0000000 --- a/Tools/master-timer/LIESMICH +++ /dev/null @@ -1,70 +0,0 @@ -Master-Timer -============ -(w) by Matthias Schniedermeyer (ms@citd.de) - - -1. Einleitung -------------- - -Master-Timer ist ein System zum automatischen Aufnehmen von Serien und Filmen. -Beim Aufruf werden die Konfigurationsdateien gelesen, die Datei "epg.data" im -aktuellen Verzeichnis nach passenden Sendungen durchsucht und die ermittelten -Timer per SVDRP in VDR programmiert. Danach beendet sich Master-Timer. - -Entsprechend empfiehlt es sich, Master-Timer per cronjob aufzurufen. - -2. Konfigurationsdateien ------------------------- - -Alle Konfigurationsdateien liegen unter "~/.master-timer". Es werden -regulaere Ausdruecke ohne Unterscheidung der Gross-/Kleinschreibung -benutzt. - -config: Die Hauptkonfigurationsdatei. - -deepblack: Eine Negativliste von Titeln, die man NIEMALS NIMMER sehen will. - Die epg-datensaetze werden beim Parsen einfach entfernt. - -subtitle-movies: Eine Liste der "Subtitel", die ein Zeichen fuer einen Film - sind (soweit die von den Sendern richtig ausgefuellt sind). Die - Einstellungen in dieser Datei werden fuer das Makro "MOVIE" in torecord - benutzt. - Kommentarzeilen sind nicht erlaubt. - -torecord: Liste der aufzunehmenden Filme. - -done: Liste der Titel/Subtitel, die bereits aufgenommen wurden. Timer, die - hier auftauchen, werden in VDR automatisch geloescht. - -channels-to-scan: Diese Kanaele werden vom Skript "scan-channels" durch- - geschaltet (zwecks Einlesen der EPG-Daten). Die Datei wird von Master- - Timer selbst nicht benutzt. - -3. Anmerkungen --------------- - -- einige Sender fuellen die EPG-Felder nicht korrekt aus. Diese Fehler - werden von Master-Timer automatisch korrigiert. - - Pro7: Title aus dem Subtitle entfernen '<Title> / <Subtitle>' - Pro7: Timer zwischen 00:00 und 05:00 werden einen Tag in die Zukunft - verschoben (Als unguten Nebeneffekt hat dies zur Folge das zum - aktuellen Tag NICHT die epg-Daten das folgenden Tags (=Das was in - der Fernsehzeitschrift noch auf der gleichen Seite ist) mehr gesendet - werden. Wenn man also "Last Minute" etwas aufnehmen will, dann muss - man (leider) einen Timer "per Hand" in VDR einprogrammieren!) - VOX/VIVA: Subtitle ist in "" eingeschlossen nd nach ". " steht die description - VIVA: Wenn der Subtitle mit einem Space beginnt, dann wird der komplette - Subtitle in die Description verschoben - RTL2: Wenn der EPG-Datensatz eine Dauer von kleiner/gleich 1 Sekunde hat, - wird er einfach verworfen. - -Bis auf den jeweils 2ten VIVA&Pro-7 Bug werden die Fixes an jedem -epg-Datensatz ausprobiert. - -4. Bekannte Bugs ----------------- - -- Es wird nicht geprueft ob noch genug DVB-Karten vorhanden sind -- "Joined timers" werden nur automatisch geloescht wenn alle dazugehoerigen - Sendungen "done" sind. diff --git a/Tools/master-timer/README b/Tools/master-timer/README deleted file mode 100644 index 05cc41a..0000000 --- a/Tools/master-timer/README +++ /dev/null @@ -1,58 +0,0 @@ -Master-Timer -============ -(w) by Matthias Schniedermeyer (ms@citd.de) - - -1. Introduction ---------------- - -Master-Timer is a system designed for automatically recording movies. -Upon execution it reads its configuration files, scans the file "epg.data" -in the current directory for matching titles and programs them via SVDRP -into VDR. - -You may for example run Master-Timer as a cron job. - -2. Config files ---------------- - -Configuration files are located in "~/.master-timer". Each entry is a -regular expression so you can use all Perl style REs you want. They are -processed case insensitive. - -config: Main configuration file. - -deepblack: Blacklist of "titles" you NEVER EVER want to see. - -subtitle-movies: A list of "Subtitles" which indicate a movie (used - by the "MOVIE" macro in torecord). - For channels that correctly fill out the subtitle e.g. it will not - work with *eRTL*. - -torecord: The titles you want to record. - -done: The titles/subtitles which are already recorded/should not be recorded - Programmed timers which got inserted into "done" will be deleted - automatically. - -channels-to-scan: Used only by the separate "scan-channels" script which - switches through channels in order to get EPG data. - -4. Notices ----------- - -- Recordings overlapping on the same channel will be joined into one timer -- Title/Subtitle/Descriptions are "fixed" for channels that don't fill them - out correctly (Pro-7/VOX/VIVA) - Pro7: Remove the Title from the Subtitle '<Title> / <Subtitle>' - VOX/VIVA: Subtitle is enclosed into "" and after ". " is the description - VIVA: When the Subtitle beginns with space the subtitle is moved to - description - All (except the second VIVA one) fixes are tried onto ALL Subtitles. - -5. Known-Bugs -------------- - -- It isn't checked if there are enough DVB-Cards -- Overlapping timers on the same channel are always joined -- Joined timers which are "done" don't get deleted automatically diff --git a/Tools/master-timer/THANKS b/Tools/master-timer/THANKS deleted file mode 100644 index 04bb13b..0000000 --- a/Tools/master-timer/THANKS +++ /dev/null @@ -1,18 +0,0 @@ -Klaus Schmidinger - - VDR - -Malte Kiesel - - Suggestions - - Bug Reports - - Documentation Updates for README/LIESMICH/torecord/deepblack/config - -Guido Fiala - - Suggestions - - Bug Repots - - finding bugs i found just before i read that part of his mails - (First the bug, then the errormessages! Otherwise i will search/find - the bug myself :-))) ) - -Axel Gruber - - Suggestions - - Bug Reports diff --git a/Tools/master-timer/Todo b/Tools/master-timer/Todo deleted file mode 100644 index 1757ade..0000000 --- a/Tools/master-timer/Todo +++ /dev/null @@ -1,6 +0,0 @@ - -- "Komfortable" Anzeige, mit Black & Whitelisten, fuer Genres/Titeln usw. -- Abspielen (mit automatischen "killen" des "Frontend"-VDRs) von - Aufzeichnungen -- "View"-Timer d.h. Timer der nicht Aufnimmt sondern nur den Kanal aendert -- "unwichtige" Timer "verdraengen" wenn andere Aufnahmen anstehen. diff --git a/Tools/master-timer/convert-DTV2VDR.pl b/Tools/master-timer/convert-DTV2VDR.pl deleted file mode 100755 index fb2a783..0000000 --- a/Tools/master-timer/convert-DTV2VDR.pl +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/perl -w - -use strict; - -# The EPG-Entrys -my (%Entry, %channel, $mode); - -# 0 = VDR -> DTV -# 1 = DTV -> VDR -$mode = 0; - -read_channel_list(); -if ($mode) { - &read_dtv(); - &read_epgdata(); -} else { - &read_epgdata(); - &read_dtv(); -} -&print_VDR(); - -sub read_epgdata { - my ($channel, $duration, $title, $subtitle, $description, $time); - open (FI,"epg.data") or die ("Can't open file \"epg.data\"\n"); - - while (<FI>) { - # Begin Channel - if (/^C\s(\d+)\s+(.+)/) { - $channel=$2; - while (<FI>) { - # End Channel - if (/^c$/) { - last; - } - # Begin Timer - elsif (/^E\s(\d+)\s+(\d+)\s+(\d+)$/) { - # Undef this Variables because it is possibel that not every timer uses this values - undef $duration; - undef $subtitle; - undef $description; - - $time=$2; - $duration=$3; - } - # Title - elsif (/^T\s(.*)/) { - $title=$1; - } - # Subtitle - elsif (/^S\s(.*)/) { - $subtitle=$1; - } - # Description - elsif (/^D\s(.*)/) { - $description=$1; - } - # End Timer - elsif (/^e$/) { - if ($mode) { - # DTV -> VDR - $Entry{$channel}{$time}{subtitle}=$subtitle if ($subtitle); - if ($description) { - if ($Entry{$channel}{$time}{description}) { - $Entry{$channel}{$time}{description} = "DTV: '$Entry{$channel}{$time}{description}' VDR: '$description'"; - } else { - $Entry{$channel}{$time}{description} = "DTV: '' VDR: '$description'"; - } - } - } else { - # VDR -> DTV - $Entry{$channel}{$time}{title}=$title; - $Entry{$channel}{$time}{duration}=$duration; - $Entry{$channel}{$time}{subtitle}=$subtitle if ($subtitle); - $Entry{$channel}{$time}{description}=$description if ($description); - } - } - } - } - } - close (FI); -} - -sub read_dtv { - my ($channel, $time, $duration, $title, $category, $subtitle, $description); - open (FI,$ARGV[0]) or die "Can't open DTV-File"; - - while (<FI>) { - chomp; - ($channel, $time, $duration, $title, $category, $subtitle, $description) = split (/\|/); - if (!$channel{$channel}) { - next; - } - $channel = $channel{$channel}; - if ($mode) { - # DTV -> VDR - if (!$subtitle && $description =~ /^\"(.*?)\"\:\s(.*)/) { - $Entry{$channel}{$time}{subtitle} = $1; - $description = $2; - } - $Entry{$channel}{$time}{title} = $title; - $Entry{$channel}{$time}{duration} = $duration; - $Entry{$channel}{$time}{subtitle} = $subtitle if ($subtitle); - $Entry{$channel}{$time}{category} = $category if ($category); - $Entry{$channel}{$time}{description} = $description if ($description); - } else { - # VDR -> DTV - $Entry{$channel}{$time}{category} = $category if ($category); - if ($description) { - if (!$Entry{$channel}{$time}{subtitle} && $description =~ /^\"(.*?)\"\:\s(.*)/) { - $Entry{$channel}{$time}{subtitle} = $1; - $description = $2; - } - if ($Entry{$channel}{$time}{description}) { - $Entry{$channel}{$time}{description} = "DTV: '$description' VDR: '$Entry{$channel}{$time}{description}'"; - } else { - $Entry{$channel}{$time}{description} = "DTV: '$description' VDR: ''"; - } - } - } - } - close (FI); -} - -sub read_channel_list { - my ($old, $new); - open (FI,"$ENV{HOME}/.master-timer/convert-channel-list") or die ("Can't read channel-List"); - while (<FI>) { - chomp; - ($old, $new) = split (/\|/); - $channel{$old} = $new; - } - close (FI); -} - -sub print_VDR() { - my ($channel, $title, $time); - foreach $channel (sort keys %Entry) { - print "C 1 $channel\n"; - foreach $time (sort keys %{%Entry->{$channel}}) { - if ($Entry{$channel}{$time}{duration}) { - print "E 1 $time $Entry{$channel}{$time}{duration}\n"; - print "K $Entry{$channel}{$time}{category}\n" if ($Entry{$channel}{$time}{category}); - print "T $Entry{$channel}{$time}{title}\n"; - print "S $Entry{$channel}{$time}{subtitle}\n" if ($Entry{$channel}{$time}{subtitle}); - print "D $Entry{$channel}{$time}{description}\n" if ($Entry{$channel}{$time}{description}); - print "e\n"; - } - } - print "c\n"; - } -} diff --git a/Tools/master-timer/convert-oldtorecord.pl b/Tools/master-timer/convert-oldtorecord.pl deleted file mode 100755 index 853c20b..0000000 --- a/Tools/master-timer/convert-oldtorecord.pl +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/perl - -while (<>) - { - chomp; - if ($_ && !(/^\#/)) - { - ($title, $subtitle, $description, $channel, $timeframe, $prio, $timer_title, $margin, $machine) = split (/\|/,$_); - - if ($timer_title) { - print "[$timer_title]\n"; - } elsif ($title) { - print "[$title]\n"; - } elsif ($subtitle) { - print "[$subtitle]\n"; - } elsif ($description) { - print "[$description]\n"; - } else { - die ("Illegal Format"); - } - - # Accept torecord only if it is for the current machine - if ($title) - { - print "Title = $title\n"; - } - if ($subtitle) - { - print "Subtitle = $subtitle\n"; - } - if ($description) - { - print "Description = $description\n"; - } - if ($channel) - { - print "Channel = $channel\n"; - } - if ($timeframe) - { - print "Timeframe = $timeframe\n"; - } - if ($prio) - { - print "Prio = $prio\n"; - } - if ($timer_title) - { - print "Timertitle = $timer_title\n"; - } - if ($margin) - { - print "Margin = $margin\n"; - } - if ($machine) - { - print "Instance = $machine\n"; - } - print "\n"; - } - } diff --git a/Tools/master-timer/master-timer.pl b/Tools/master-timer/master-timer.pl deleted file mode 100755 index 5ddf909..0000000 --- a/Tools/master-timer/master-timer.pl +++ /dev/null @@ -1,1412 +0,0 @@ -#!/usr/bin/perl -w - -use strict; -# For the TCP-Connection to VDR -use Socket; -# For converting the Timers, read from VDR, back to Unix-Timestamps -use Time::Local; -# For parsing the command line -use Getopt::Std; - -# Debugmode -# You have to add the following numbers to build the debug-var -# 1 : Dump the "torecord" -# 2 : Dump all timers -# 4 : Show when a timer will be deleted -# 8 : Dump the "Done" REs -# 16 : Verbose Config-Reading -# 32 : Dump Program Variable -# 64 : Excessive deepblack/torecord debuging -my $debug = 6; - -# The Supervariable Program -# %Program{$title}{$channel}{$time}{duration} -# {subtitle} -# {description} - -# The Supervariable Timer -# %Timer{$time}{$channel}{$title}{duration} -# {subtitle} -# {description} -# {prio} -# {lifetime} -# {real_title} -# {VDR} (Already programmed) -# The Value of VDR is ">0" for the position in the Timer-List or "R" for a "Repeating" Timer. -# A Value of >1.000.000 is a Master Timer-Timer which is already programmed into VDR - -# The Supervariable torecord/deepblack -# $torecord{timercount} -# {titleRE} -# {subtitleRE} -# {descriptionRE} -# {title}[COUNT] -# {subtitle}[COUNT] -# {description}[COUNT] -# {timeframe}[COUNT] -# {blackchannel}[COUNT] or {channel}[COUNT] -# {weekday}[COUNT] -# {minlength}[COUNT] -# {maxlength}[COUNT] -# {prio}[COUNT] -# {timertitle}[COUNT] -# {marginstart}[COUNT] -# {marginstop}[COUNT] -# {instance}[COUNT] - -# Variable-Definition -my (%Program, @channels, %channels, %Timer); - -# Which Subtitles are Movies -my ($subtitle_movie); -my ($test_subtitle_movie); - -# Blacklist -my (%deepblack); - -# What is already recorded/Should not be recorded -my ($title_done, $subtitle_done); - -# What to record -my (%torecord); - -# The Commandline -my (%Opts); - -# Default Priority for Timers (Config: defaultprio) -my $default_prio = 50; - -# How many DVB-S cards are there (Config: DVBCards) -my $DVB_cards = 1; - -# How many seconds to substract from the time and to add to the duration -my $marginstart = 60*10; # Config: Marginstart -my $marginstop = 60*10; # Config: Marginstop - -# Shall Timers, on the same channel, be joined if they overlap -my $jointimers = 0; - -# Hostname/IP of DVB-Computer and the Port of VDR -my @Dest = ("localhost:2001"); # Config: Dest - -# Which VDR-Instance shall be used -my $currentVDR = 1; - -# Where are the Config-Files -my $configdir = "$ENV{HOME}/.master-timer"; - -# Should the description be transfered to VDR? -my $Description = 0; - -# Working-Variables -my ($title, $duration, $subtitle, $channel, $time, $description, $category, $hit); -my (@time, @date); - -END { - &closesocket(); -} - -&init(); -&dumpdone() if ($debug & 8); -&dumptorecord("torecord") if ($debug & 1); -&dumptorecord("deepblack") if ($debug & 1); -print "Subtitle-Movie \"$subtitle_movie\"\n" if($debug & 1); -# If we only have to dump the running series then exit after dumping them -if ($Opts{s}) { - &dumpepgdata; - exit 0; -} -&processdone(); -&fetchVDRTimers(); -&process_torecord(); -print "Timers before joining\n" if ($debug & 2 && $jointimers); -&dumptimers() if ($debug & 2); - -if ($jointimers) { - &jointimers(); - print "Timers after joining\n" if ($debug & 2); - &dumptimers() if ($debug & 2); -} - -&dumpepgdata if ($debug & 32); - -&printtimers(); -&transfertimers(); - -# -# End of Program -# - -# -# Subfunctions -# - -sub dumpdone() { - print "Start Done-dump\n"; - print "Titledone: \"$title_done\"\n"; - print "Subtitledone \"$subtitle_done\"\n"; - print "End Done-dump\n"; -} - -sub dumpepgdata () { - print "Start EPG-Dump\n"; - foreach $title (sort keys %Program) { - foreach $channel (sort keys %{%Program->{$title}}) { - foreach $time (sort {$a <=> $b} keys %{%Program->{$title}->{$channel}}) { - print "Title: \"$title\" "; - if (!$Opts{s}) { - print "Subtitle: \"$Program{$title}{$channel}{$time}{subtitle}\" " if ($Program{$title}{$channel}{$time}{subtitle}); - print "Time: \"$time\""; - } - print "Channel: \"$channel\""; - print "\n"; - if ($Opts{s}) { - last; - } - } - } - } - print "End EPG-Dump\n"; -} - - -sub dumptorecord() { - my ($context) = shift; - my ($rContext); - - if ($context eq "torecord") { - $rContext = \%torecord; - } elsif ($context eq "deepblack") { - $rContext = \%deepblack; - } else { - die ("Illegal Context"); - } - - print "Start $context-dump\n"; - print "Regex-Title: $$rContext{titleRE}\n"; - print "Regex-Subtitle: $$rContext{subtitleRE}\n"; - print "Regex-Description: $$rContext{descriptionRE}\n"; - foreach my $num (0 .. $$rContext{timercount}) { - print "Entry Number $num: "; - - print "Title: \"$$rContext{title}[$num]\" " if ($$rContext{title}[$num]); - print "Title: \"\" " unless ($$rContext{title}[$num]); - - print "Subtitle: \"$$rContext{subtitle}[$num]\" "if ($$rContext{subtitle}[$num]); - print "Subtitle: \"\" " unless ($$rContext{subtitle}[$num]); - - print "Description: \"$$rContext{description}[$num]\" " if ($$rContext{description}[$num]); - print "Description: \"\" " unless ($$rContext{description}[$num]); - - print "Category: \"$$rContext{category}[$num]\" " if ($$rContext{category}[$num]); - print "Category: \"\" " unless ($$rContext{category}[$num]); - - print "Timeframe: \"$$rContext{timeframe}[$num]\" " if ($$rContext{timeframe}[$num]); - print "Timeframe: \"\" " unless ($$rContext{timeframe}[$num]); - - print "Weekday: \"$$rContext{weekday}[$num]\" " if ($$rContext{weekday}[$num]); - print "Weekday: \"\" " unless ($$rContext{weekday}[$num]); - - print "Channel: \"$$rContext{channel}[$num]\" " if ($$rContext{channel}[$num]); - print "Channel: \"\" " unless ($$rContext{channel}[$num]); - - print "Blackchannel: \"$$rContext{blackchannel}[$num]\" " if ($$rContext{blackchannel}[$num]); - print "Blackchannel: \"\" " unless ($$rContext{blackchannel}[$num]); - - print "Prio: \"$$rContext{prio}[$num]\" " if ($$rContext{prio}[$num]); - print "Prio: \"\" " unless ($$rContext{prio}[$num]); - - print "Timertitle: \"$$rContext{timertitle}[$num]\" " if ($$rContext{timertitle}[$num]); - print "Timertitle: \"\" " unless ($$rContext{timertitle}[$num]); - - print "Marginstart: \"$$rContext{marginstart}[$num]\" " if ($$rContext{marginstart}[$num]); - print "Marginstart: \"\" " unless ($$rContext{marginstart}[$num]); - - print "Marginstop: \"$$rContext{marginstop}[$num]\" " if ($$rContext{marginstop}[$num]); - print "Marginstop: \"\" " unless ($$rContext{marginstop}[$num]); - - print "Minlength: \"$$rContext{minlength}[$num]\" " if ($$rContext{minlength}[$num]); - print "Minlength: \"\" " unless ($$rContext{minlength}[$num]); - - print "Maxlength: \"$$rContext{maxlength}[$num]\" " if ($$rContext{maxlength}[$num]); - print "Maxlength: \"\" " unless ($$rContext{maxlength}[$num]); - - print "Instance: \"$$rContext{instance}[$num]\" " if ($$rContext{instance}[$num]); - print "Instance: \"\" " unless ($$rContext{instance}[$num]); - - print "\n"; - } - print "End $context-dump\n"; -} - -sub dumptimers() { - print "Start Timers-dump\n"; - foreach $time (sort {$a <=> $b} keys %Timer) { - foreach $channel (sort keys %{%Timer->{$time}}) { - foreach $title (sort keys %{%Timer->{$time}->{$channel}}) { - my ($prio, $lifetime, @time, @date, @time2); - my ($realtitle); - @time = &GetTime ($time); - @date = &GetDay ($time); - @time2 = &GetTime ($time + $Timer{$time}{$channel}{$title}{duration}); - $subtitle = $Timer{$time}{$channel}{$title}{subtitle}; - $prio = $Timer{$time}{$channel}{$title}{prio}; - $lifetime = $Timer{$time}{$channel}{$title}{lifetime}; - $realtitle = $Timer{$time}{$channel}{$title}{real_title}; - print "2:$channels{$channel}{number}:$date[1]:$time[0]$time[1]:$time2[0]$time2[1]:$prio:$lifetime:$title:Title: \"$realtitle\"||Subtitle: \"$subtitle\":$Timer{$time}{$channel}{$title}{VDR}\n"; - } - } - } - print "End Timers-dump\n"; -} - -sub printtimers() { - foreach $time (sort {$a <=> $b} keys %Timer) { - foreach $channel (sort keys %{%Timer->{$time}}) { - foreach $title (sort keys %{%Timer->{$time}->{$channel}}) { - my ($prio, $lifetime, @time, @date, @time2); - if ($Timer{$time}{$channel}{$title}{VDR} eq 0) { - my ($realtitle); - @time = &GetTime ($time); - @date = &GetDay ($time); - @time2 = &GetTime ($time + $Timer{$time}{$channel}{$title}{duration}); - $subtitle = $Timer{$time}{$channel}{$title}{subtitle}; - $prio = $Timer{$time}{$channel}{$title}{prio}; - $lifetime = $Timer{$time}{$channel}{$title}{lifetime}; - $realtitle = $Timer{$time}{$channel}{$title}{real_title}; - - print "2:$channels{$channel}{number}:$date[1]:$time[0]$time[1]:$time2[0]$time2[1]:$prio:$lifetime:$title:Title: \"$realtitle\"||Subtitle: \"$subtitle\"\n"; - } - } - } - } -} - -sub transfertimers() { - foreach $time (sort {$a <=> $b} keys %Timer) { - foreach $channel (sort keys %{%Timer->{$time}}) { - foreach $title (sort keys %{%Timer->{$time}->{$channel}}) { - my ($prio, $lifetime, $description, @time, @date, @time2, $realtitle, $result); - if ($Timer{$time}{$channel}{$title}{VDR} eq 0) { - @time = &GetTime ($time); - @date = &GetDay ($time); - @time2 = &GetTime ($time + $Timer{$time}{$channel}{$title}{duration}); - $subtitle = $Timer{$time}{$channel}{$title}{subtitle}; - $prio = $Timer{$time}{$channel}{$title}{prio}; - $lifetime = $Timer{$time}{$channel}{$title}{lifetime}; - if ($Description) { - $description = "||Description :\"$Timer{$time}{$channel}{$title}{description}\""; - } else { - $description = ""; - } - $realtitle = $Timer{$time}{$channel}{$title}{real_title}; - - ($result) = GetSend ("newt 2:$channels{$channel}{number}:$date[1]:$time[0]$time[1]:$time2[0]$time2[1]:$prio:$lifetime:$title:Title: \"$realtitle\"||Subtitle: \"$subtitle\"$description"); - print "Timer: $result" if ($debug & 2); - } - } - } - } -} - -# Convert the Unix-Time-Stamp into "month" and "Day of month" -sub GetDay { - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(shift); - $mon++; - $mon = sprintf ("%02i",$mon); - $mday = sprintf ("%02i",$mday); - return ($mon, $mday); -} -# Convert the Unix-Time-Stramp into Weekday -sub GetWDay { - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(shift); - return ($wday); -} - -# Convert the Unix-Time-Stramp into "hour" and "minute" -sub GetTime { - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(shift); - $hour = sprintf ("%02i",$hour); - $min = sprintf ("%02i",$min); - return ($hour, $min); -} - -# Workaround some EPG-Bugs -sub correct_epg_data { - if ($subtitle) { - # For Pro-7. Remove $title from $subtitle - $subtitle =~ s/\Q$title\E\s\/\s//; - - # For VOX & VIVA. The Format it '"<Subtitle>". <Description>' - if ($subtitle =~ /^\"(.*?)\"\.\s(.*)/) { - # Lets see if there are Channels that where the VOX/VIVA scheme matches, but also have a description - if ($description) { - my $one = $1; - my $two = $2; - if ($description =~ /^DTV\:\s\'(.*)\' VDR:\s\'\'$/) { - $description = "DTV: '$1' VDR: '$two'"; - $subtitle = $one; - } else { - die ("Title: \"$title\" Channel: \"$channel\" Subtitle: \"$subtitle\"\nDescription: \"$description\"\n"); - } - } - $subtitle = $1; - $description = $2; - } - elsif ($channel eq "VIVA") { - if ($subtitle =~ /^\s(.*)/) { - $subtitle = ""; - $description = $1; - } - } - } - - # Workaround for the broken PRO-7/Kabel-1 EPG-Date. If Time is between 00.00 and 05.00 the time is shifted forward by a day - if ($channel eq "Pro-7" || $channel eq "Kabel-1") { - my (@time); - @time = GetTime ($time); - if ($time[0] >= 0 && ($time[0] <= 4 || ($time[0] == 5 && $time[1] == 0))) { - $time += 24*60*60; - } - } -} - -# Add a Recording into the "to record"-List -sub addtimer { - my ($title, $realtitle, $subtitle, $channel, $time, $duration, $prio, $lifetime, $description, $VDR, $time2, $title2, $channel2, $marginstart, $marginstop); - ($title, $realtitle, $subtitle, $description, $channel, $time, $duration, $prio, $lifetime, $VDR, $marginstart, $marginstop) = @_; -# print "Title: \"$title\" Realtitle: \"$realtitle\" Subtitle: \"$subtitle\" Channel: \"$channel\" Time: \"$time\" Duration: \"$duration\" Prio: \"$prio\" VDR: \"$VDR\"\n"; - - foreach $time2 (sort keys %Timer) { - foreach $title2 (sort keys %{%Timer->{$time2}->{$channel}}) { - my ($ctime, $ctime2); - $ctime = $time2; - $ctime2 = $time2 + $Timer{$time2}{$channel}{$title2}{duration}; - - if (($time >= $ctime) && ($time <= $ctime2)) { - return; - } - } - } - - $time -= $marginstart; - $duration += $marginstart + $marginstop; - $Timer{$time}{$channel}{$title}{duration}=$duration; - $Timer{$time}{$channel}{$title}{subtitle}=$subtitle; - $Timer{$time}{$channel}{$title}{description}=$description; - $Timer{$time}{$channel}{$title}{prio}=$prio; - $Timer{$time}{$channel}{$title}{lifetime}=$lifetime; - $Timer{$time}{$channel}{$title}{VDR}=$VDR; - $Timer{$time}{$channel}{$title}{real_title}=$realtitle; -} - -sub deltimer() { - my ($time, $channel, $title, $delete_from_VDR); - ($time, $channel, $title, $delete_from_VDR) = @_; - -# if ($delete_from_VDR) { -# if ($Timer{$time}{$channel}{$title}{VDR}) { -# if ($Timer{$time}{$channel}{$title}{VDR} =~ s/ ^R/) { -# print "Error: A Repeating-Timer can't be deleted from VDR: \"$title\"\n"; -# } -# elsif ($Timer{$time}{$channel}{$title}{VDR} < 1000000) { -# print "A User-Programmed Timer has been deleted from VDR: \"$title\"\n"; -# } -# else { -# -# } -# } -# } - - delete $Timer{$time}{$channel}{$title}{duration}; - delete $Timer{$time}{$channel}{$title}{subtitle}; - delete $Timer{$time}{$channel}{$title}{prio}; - delete $Timer{$time}{$channel}{$title}{VDR}; - delete $Timer{$time}{$channel}{$title}{real_title}; - delete $Timer{$time}{$channel}{$title}; - delete $Timer{$time}{$channel} if (keys %{ $Timer{$time}{$channel} } == 1); - delete $Timer{$time} if (keys %{ $Timer{$time} } == 1); -} - -sub delprogram() { - my ($title, $channel, $time); - ($title, $channel, $time) = @_; - - delete $Program{$title}{$channel}{$time}; - delete $Program{$title}{$channel} if (keys %{ $Program{$title}{$channel} } == 1); - delete $Program{$title} if (keys %{ $Program{$title} } == 1); -} - -sub jointimers { - # - # FIXME: 2 Timers on the same channel will always be joined. - # It should be checked if there is another DVB-Card available. - # - # FIXME2: When one timer is already programmed in VDR, delete that timer in VDR. - my ($running, $counter, @times, $channel, $title, $channel2, $title2); - $running = 1; - outer: while ($running) { - $counter = 0; - @times = sort {$a <=> $b} keys %Timer; - - # We only need to check till the second last timer. The last one can't have a overlapping one. - while ($counter < $#times) { - foreach $channel (sort keys %{%Timer->{$times[$counter]}}) { - foreach $title (sort keys %{%Timer->{$times[$counter]}->{$channel}}) { - if ($times[$counter + 1] < ($times[$counter] + $Timer{$times[$counter]}{$channel}{$title}{duration})) { - foreach $channel2 (sort keys %{%Timer->{$times[$counter + 1]}}) { - foreach $title2 (sort keys %{%Timer->{$times[$counter + 1]}->{$channel}}) { - if ($channel eq $channel2) { - my ($duration, $subtitle, $description, $prio, $lifetime, $realtitle, $duration2, $subtitle2, $description2, $prio2, $lifetime2, $realtitle2); - # Values from Lower-Timer - $duration = $Timer{$times[$counter]}{$channel}{$title}{duration}; - $subtitle = $Timer{$times[$counter]}{$channel}{$title}{subtitle}; - $description = $Timer{$times[$counter]}{$channel}{$title}{description}; - $prio = $Timer{$times[$counter]}{$channel}{$title}{prio}; - $lifetime = $Timer{$times[$counter]}{$channel}{$title}{lifetime}; - $realtitle = $Timer{$times[$counter]}{$channel}{$title}{real_title}; - - # Values from Higher-Timer - $duration2 = $Timer{$times[$counter + 1]}{$channel2}{$title2}{duration}; - $subtitle2 = $Timer{$times[$counter + 1]}{$channel2}{$title2}{subtitle}; - $description2 = $Timer{$times[$counter + 1]}{$channel2}{$title2}{description}; - $prio2 = $Timer{$times[$counter + 1]}{$channel2}{$title2}{prio}; - $lifetime2 = $Timer{$times[$counter + 1]}{$channel2}{$title2}{lifetime}; - $realtitle2 = $Timer{$times[$counter + 1]}{$channel2}{$title2}{real_title}; - - # Use the Higher Priority/Lifetime for the new Timer - $prio = ($prio > $prio2) ? $prio : $prio2; - $lifetime = ($lifetime > $lifetime2) ? $lifetime : $lifetime2; - - # Delete the two "Obsolet" Timers - &deltimer ($times[$counter], $channel, $title); - &deltimer ($times[$counter + 1], $channel2, $title2); - - # And set the new one - &addtimer ("$title + $title2", "$realtitle\~$realtitle2", "$subtitle\~$subtitle2", "$description\~$description2", $channel, $times[$counter], $duration2 + ($times[$counter + 1 ] - $times[$counter]),$prio,$lifetime,0,0,0); - - # Now a Value is "missing", so we will redo the whole thing. (This will do three-times JOIN correct) - redo outer; - } - } - } - } - } - } - $counter++; - } - undef $running; - } -} - -sub process_torecord { - my ($subtitle, $description, $prio, $lifetime, $timertitle, $counter); - foreach $title (sort keys %Program) { - foreach $channel (sort keys %{%Program->{$title}}) { - foreach $time (sort {$a <=> $b} keys %{%Program->{$title}->{$channel}}) { - - $counter = &testtimer("torecord", $title, $channel, $time); - if ($counter ne "Nothing") { - - # What Priority - if ($torecord{prio}[$counter]) { - $prio = $torecord{prio}[$counter]; - } - else { - $prio = 50; - } - - # What Lifetime - if ($torecord{lifetime}[$counter]) { - $lifetime = $torecord{lifetime}[$counter]; - } - else { - $lifetime = 50; - } - - # What Title to use for the timer - if ($torecord{timertitle}[$counter]) { - $timertitle = $torecord{timertitle}[$counter] - } - elsif ($torecord{title}[$counter]) { - $timertitle = $torecord{title}[$counter] - } - else { - $timertitle = $title; - } - - # What subtitle to use - if ($Program{$title}{$channel}{$time}{subtitle}) { - $subtitle = $Program{$title}{$channel}{$time}{subtitle}; - } - else { - $subtitle = ""; - } - - # What Description to use - if ($Program{$title}{$channel}{$time}{description}) { - $description = $Program{$title}{$channel}{$time}{description}; - } - else { - $description = ""; - } - - &addtimer ($timertitle,$title,$subtitle,$description,$channel,$time,$Program{$title}{$channel}{$time}{duration},$prio,$lifetime,0,$torecord{marginstart}[$counter],$torecord{marginstop}[$counter]); - } - } - } - } -} - -# Test if a torecord/deepblack Entry matches the current EPG-Data-Field -sub testtimer { - my ($context) = shift; - my ($title) = shift; - my ($channel) = shift; - my ($time) = shift; - my ($counter, $rContext); - - if ($context eq "torecord") { - $rContext = \%torecord; - } elsif ($context eq "deepblack") { - $rContext = \%deepblack; - } else { - die ("Illegal Context"); - } - - if ($debug & 64) { - print "\n"; - print "Context: \"$context\"\nTitle: \"$title\"\n"; - print "Subtitle: \"$Program{$title}{$channel}{$time}{subtitle}\"\n" if ($Program{$title}{$channel}{$time}{subtitle}); - print "Description \"$Program{$title}{$channel}{$time}{description}\"\n" if ($Program{$title}{$channel}{$time}{description}); - print "Category \"$Program{$title}{$channel}{$time}{category}\"\n" if ($Program{$title}{$channel}{$time}{category}); - print "Channel: $channel\n"; - print "Time: $time\n"; - print "Duration: $Program{$title}{$channel}{$time}{duration}\n"; - } - - # First look if any of the Title/Subtitle/Description REs match - if ($title =~ /$$rContext{titleRE}/i) { - print "Title hit\n" if ($debug & 64); - } - elsif ($Program{$title}{$channel}{$time}{subtitle} && $Program{$title}{$channel}{$time}{subtitle} =~ /$$rContext{subtitleRE}/i) { - print "SubTitle hit\n" if ($debug & 64); - }elsif ($Program{$title}{$channel}{$time}{subtitle} && $test_subtitle_movie && $Program{$title}{$channel}{$time}{subtitle} =~ /$subtitle_movie/) { - print "SubTitle-Movie hit\n" if ($debug & 64); - } - elsif ($Program{$title}{$channel}{$time}{description} && $Program{$title}{$channel}{$time}{description} =~ /$$rContext{descriptionRE}/i) { - print "Description hit\n" if ($debug & 64); - } else { - # No "Fast"-hit. Exiting - return "Nothing"; - } - - # Now look if we have a "exact" hit - print "In Exact Hit Loop\n" if ($debug & 64); - foreach my $counter (0 .. $$rContext{timercount}) { - - print "Before Title Match\n" if ($debug & 64); - if ($$rContext{title}[$counter]) { - print "In Title Match \"$$rContext{title}[$counter]\"\n" if ($debug & 64); - if (!($title =~ /$$rContext{title}[$counter]/i)) { - print "Title rejected\n" if ($debug & 64); - next; - } - } - - print "Before Subtitle Match\n" if ($debug & 64); - if ($$rContext{subtitle}[$counter]) { - print "In Subtitle Match \"$$rContext{subtitle}[$counter]\"\n" if ($debug & 64); - if ($Program{$title}{$channel}{$time}{subtitle}) { - if ($$rContext{subtitle}[$counter] =~ /^movie$/i) { - if (!($Program{$title}{$channel}{$time}{subtitle} =~ /$subtitle_movie/i)) { - print "Subtitle rejected 1\n" if ($debug & 64); - next; - } - } - elsif ($$rContext{subtitle}[$counter] =~ /^\!movie$/i) { - if (($Program{$title}{$channel}{$time}{subtitle} =~ /$subtitle_movie/i)) { - print "Subtitle rejected 2\n" if ($debug & 64); - next; - } - } - elsif (!($Program{$title}{$channel}{$time}{subtitle} =~ /$$rContext{subtitle}[$counter]/i)) { - print "Subtitle rejected 3\n" if ($debug & 64); - next; - } - } else { - # We had a Subtitle, but epg.data did not have a subtitle for this record so no chance to record this - print "Subtitle rejected 4\n" if ($debug & 64); - next; - } - } - - print "Before Description Match\n" if ($debug & 64); - if ($$rContext{description}[$counter]) { - print "In Description Match \"$$rContext{description}[$counter]\"\n" if ($debug & 64); - if ($Program{$title}{$channel}{$time}{description}) { - if (!($Program{$title}{$channel}{$time}{description} =~ /$$rContext{description}[$counter]/i)) { - print "Description rejected 1\n" if ($debug & 64); - next; - } - } - elsif (!$$rContext{title}[$counter] && !$$rContext{subtitle}[$counter]) { - print "Description rejected 2\n" if ($debug & 64); - next; - } - } - - print "Before Category Match\n" if ($debug & 64); - if ($$rContext{category}[$counter]) { - print "In Category Match \"$$rContext{category}[$counter]\"\n" if ($debug & 64); - if ($Program{$title}{$channel}{$time}{category}) { - my ($left, $right); - ($left, $right) = split (/\//, $$rContext{category}[$counter]); - if ($left) { - print "In Category Match Left \"$left\"\n" if ($debug & 64); - if (!($Program{$title}{$channel}{$time}{category} =~ /^$left\//)) { - print "Category rejected 1\n" if ($debug & 64); - next; - } - } - if ($right) { - print "In Category Match Right \"$right\"\n" if ($debug & 64); - if (!($Program{$title}{$channel}{$time}{category} =~ /\/$right$/)) { - print "Category rejected 2\n" if ($debug & 64); - next; - } - } - } else { - # We had a Category, but the epg.data not. So discard this Entry - print "Category rejected 3\n" if ($debug & 64); - next; - } - } - - print "Before Channel Match\n" if ($debug & 64); - if ($$rContext{channel}[$counter]) { - print "In Channel Match Whitelist-Mode \"$$rContext{channel}[$counter]\"\n" if ($debug & 64); - if (!($channel =~ /$$rContext{channel}[$counter]/)) { - print "Channel rejected\n" if ($debug & 64); - next; - } - } - - if ($$rContext{blackchannel}[$counter]) { - print "In Channel Match Blacklist-Mode \"$$rContext{blackchannel}[$counter]\"\n" if ($debug & 64); - if ($channel =~ /$$rContext{blackchannel}[$counter]/) { - print "Channel rejected\n" if ($debug & 64); - next; - } - } - - print "Before Timeframe Match\n" if ($debug & 64); - if ($$rContext{timeframe}[$counter]) { - print "In Timeframe Match \"$$rContext{timeframe}[$counter]\"\n" if ($debug & 64); - my (@time, $time2, $ctime, $ctime2); - @time = GetTime($time); - $time2 = "$time[0]$time[1]"; - - ($ctime, $ctime2) = split (/\-/,$$rContext{timeframe}[$counter]); - - if (!$ctime) { - $ctime = "0"; - } - if (!$ctime2) { - $ctime2 = "2400"; - } - - if ($ctime < $ctime2) { - if (!($time2 >= $ctime && $time2 <= $ctime2)) { - print "Timeframe rejected 1\n" if ($debug & 64); - next; - } - } - else { - if (!(($time2 >= $ctime && $time2 <= "2400") || ($time2 >= "0" && $time2 <= $ctime2))) { - print "Timeframe rejected 2\n" if ($debug & 64); - next; - } - } - } - - print "Before Weekday Match\n" if ($debug & 64); - if ($$rContext{weekday}[$counter]) { - print "In Weekday Match \"$$rContext{weekday}\"\n" if ($debug & 64); - my ($wday); - $wday = getWDay($time); - $$rContext{weekday}[$counter] =~ /(.)(.)(.)(.)(.)(.)(.)/; - if ($$wday eq "-") { - print "Weekday rejected\n" if ($debug & 64); - next; - } - } - - print "Before Minlength Match\n" if ($debug & 64); - if ($$rContext{minlength}[$counter]) { - print "In Minlength Match \"$$rContext{minlength}[$counter]\"\n" if ($debug & 64); - if ($Program{$title}{$channel}{$time}{duration} < $$rContext{minlength}[$counter]) { - print "Minlength rejected\n" if ($debug & 64); - next; - } - } - - print "Before Maxlength Match\n" if ($debug & 64); - if ($$rContext{maxlength}[$counter]) { - print "In Maxlength Match \"$$rContext{maxlength}[$counter]\"\n" if ($debug & 64); - if ($Program{$title}{$channel}{$time}{duration} > $$rContext{maxlength}[$counter]) { - print "Maxlength rejected\n" if ($debug & 64); - next; - } - } - - # All test passed. Accept this timer - print "All Tests passed entry accepted/blacklisted\n" if ($debug & 64); - return ($counter); - } - # Foreach ran out without a hit - return "Nothing"; -} - -# Open the connection to VDR -sub initsocket { - my ($Dest, $Port) = split (/\:/,$Dest[$currentVDR - 1],2); - my $iaddr = inet_aton($Dest); - my $paddr = sockaddr_in($Port, $iaddr); - my $Timeout = 10; # max. seconds to wait for response - - $SIG{ALRM} = sub { die("Timeout while connecting to VDR"); }; - alarm($Timeout); - - socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')); - connect(SOCKET, $paddr) or die ("Can't connect to VDR\n"); - select(SOCKET); $| = 1; - select(STDOUT); - - while (<SOCKET>) { - last if substr($_, 3, 1) ne "-"; - } - alarm(0); -} - -# Send a command to VDR and read back the result -sub GetSend { - my ($command, @retval); - - while ($command = shift) { - print SOCKET "$command\r\n"; - while (<SOCKET>) { - s/\x0d//g; - (@retval) = (@retval, $_); - last if substr($_, 3, 1) ne "-"; - } - } - return (@retval); -} - -# Close the socket to VDR -sub closesocket { - print SOCKET "Quit\r\n"; - close(SOCKET); -} - - -# Fetch the timers-List from VDR via SVDR and process it. -sub fetchVDRTimers { - my (@timers, $timer, $position, $active, $channel, $day, $start, $end, $prio, $lifetime, $title, $subtitle, $minute, $duration); - my ($utime, $utime2); - - # First fetch the timers-list from VDR - @timers = GetSend ("lstt"); - - foreach $timer (@timers) { - chomp $timer; - # a Valid Timer-line beginns with "250" - if ($timer =~ s/250-|250\s//) { - # Extract the Position in front of the line - ($position, $timer) = split (/\s/,$timer,2); - -# print "Position: \"$position\" Timer: \"$timer\"\n"; - # Split the : seperated values - ($active, $channel, $day, $start, $end, $prio, $lifetime, $title, $subtitle) = split (/\:/,$timer,9); - - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); - - # If the string is exactly 7 char wide, then its a "repeating"-timer - if ($active >= 1) { - if ($day =~ /(.)(.)(.)(.)(.)(.)(.)/) { - my (@days); - @days = ($1, $2, $3, $4, $5, $6, $7); - ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); - - $start =~ /(\d\d)(\d\d)/; - $hour = $1; - $minute = $2; - $utime = timelocal 0, $minute, $hour, $mday, $mon, $year; - $end =~ /(\d\d)(\d\d)/; - $hour = $1; - $minute = $2; - $utime2 = timelocal 0, $minute, $hour, $mday, $mon, $year; - if ($end < $start) { - $utime2 += 24*60*60; - } - $duration = $utime2 - $utime; - - # "Normalize" the timestamp to monday - $utime = $utime - ($wday * 24 * 60 *60); - - foreach my $num (0 .. $#days) { - if ($days[$num] ne "-") { - my $utime3; - # Days before today will be shifted in the next week - if (($num + 1) < $wday) { - $utime3 = $utime + (($num + 7 + 1) * 24 * 60 * 60); - } - else { - $utime3 = $utime + (($num + 1) * 24 * 60 * 60); - } - &addtimer ($title,$title,$subtitle,"",$channels[$channel],$utime3,$duration,$prio,$lifetime,"R$position",0,0); - } - } - } - - # When the Day-Value is between 1 and 31, then its a "One time" Timer - elsif (($day >= 1) && ($day <= 31)) { - if ($active == "2") { - $position += 1000000; - } - # When the Day is before the Current-Day, then the Timer is for the next month - if ($day < $mday) { - $mon++; - if ($mon == 12) { - $mon = 0; - $year ++; - } - } - $start =~ /(\d\d)(\d\d)/; - $hour = $1; - $minute = $2; - $utime = timelocal 0, $minute, $hour, $day, $mon, $year; - $end =~ /(\d\d)(\d\d)/; - $hour = $1; - $minute = $2; - $utime2 = timelocal 0, $minute, $hour, $day, $mon, $year; - if ($end < $start) { - $utime2 += 24*60*60; - } - $duration = $utime2 - $utime; - - &addtimer ($title,$title,$subtitle,"",$channels[$channel],$utime,$duration,$prio,$lifetime,$position,0,0); - } - } - } - } -} - -# Parse file "epg.data" -sub initepgdata { - open (FI,"epg.data") or die ("Can't open file \"epg.data\"\n"); - - while (<FI>) { - # Begin Channel - if (/^C\s(\d+)\s+(.+)/) { - $channel=$2; - while (<FI>) { - # End Channel - if (/^c$/) { - last; - } - # Begin Timer - elsif (/^E\s(\d+)\s+(\d+)\s+(\d+)$/) { - # Undef this Variables because it is possibel that not every timer uses this values - undef $duration; - undef $subtitle; - undef $description; - undef $category; - - $time=$2; - $duration=$3; - } - # Title - elsif (/^T\s(.*)/) { - $title=$1; - } - # Subtitle - elsif (/^S\s(.*)/) { - $subtitle=$1; - } - # Description - elsif (/^D\s(.*)/) { - $description=$1; - } - elsif (/^K\s(.*)/) { - $category=$1; - } - # End Timer - elsif (/^e$/) { - # Only accept timers that are in the future - if ($time < time) { - next; - } - # Only accept timers that are at least 2 Seconds long - if ($duration <= 1) { - next; - } - - # Work around the different Bugs in the data - &correct_epg_data(); - - # Check if the Title & Subtitle is in the Done-List (Only if Subtitle exists) - if ($subtitle && $title =~ /$title_done/ && $subtitle =~ /$subtitle_done/) { - next; - } - - $Program{$title}{$channel}{$time}{duration}=$duration; - if ($subtitle) { - $Program{$title}{$channel}{$time}{subtitle}=$subtitle; - } - if ($description) { - $Program{$title}{$channel}{$time}{description}=$description; - } - if ($category) { - $Program{$title}{$channel}{$time}{category}=$category; - } - # Check if the title is in the DEEP-Blacklist - if (&testtimer("deepblack", $title, $channel, $time) ne "Nothing") { - print "Deepblack: \"$title\"" if ($debug & 64); - print " $subtitle" if ($debug & 64 && $subtitle); - print "\n" if ($debug & 64); - &delprogram ($title, $channel, $time); - } - } - } - } - } - close (FI); -} - -# What is a Movie (When correctly stored into Subtitle) -sub initmovie { - my (@list,$list); - open (FI,"${configdir}/subtitle-movie") or return; - @list = <FI>; - close(FI); - - foreach $list (@list) { - chomp $list; - } - $subtitle_movie = join ('|',@list); -} - -# What is already recorded/Should not be recorded -sub initdone { - my (@list,$list, %title_done, %subtitle_done, $title_temp, $subtitle_temp); - open (FI,"${configdir}/done") or return; - @list = <FI>; - close (FI); - - foreach $list (@list) { - chomp $list; - ($title_temp,$subtitle_temp) = split (/\|/,$list); - if ($title_temp) { - $title_done{"^\Q$title_temp\E\$"} = 1; - } - if ($subtitle_temp) { - $subtitle_done{"^\Q$subtitle_temp\E\$"} = 1; - } - } - $title_done = join ('|',sort keys %title_done); - $subtitle_done = join ('|',sort keys %subtitle_done); -} - -sub processdone { - # Now delete Timers in VDR that are already in the done-List - my ($list, @list, $position, $timer, $active, $g, $title, $subtitle, $counter, @todel); - $counter = 0; - @list = GetSend ("LSTT"); - - foreach $timer (@list) { - chomp $timer; - if ($timer =~ s/250-|250\s//) { - ($position, $timer) = split (/\s/,$timer,2); - # Split the : seperated values - ($active, $g, $g, $g, $g, $g, $g, $title, $subtitle) = split (/\:/,$timer,9); - if ($active == 2) { - # Title: "Shakespeare in Love"||Subtitle: "Romanze" - my ($ctitle, $csubtitle); - if ($subtitle && $subtitle =~ /^Title\:\s\"(.*)\"\|\|Subtitle\:\s\"(.*)\"/) { - $title = $1; - $subtitle = $2; - if ($subtitle) { - my (@titles, @subtitles, $num, $hit); - undef $hit; - @titles = split (/\~/,$title); - @subtitles = split (/\~/,$subtitle); - foreach $num (0 .. $#titles) { - if ($titles[$num] =~ /$title_done/ && $subtitles[$num] =~ /$subtitle_done/) { - $hit = 1; - } - else { - undef $hit; - last; - } - } - - if ($hit) { - my ($result); - print "Delete Timer: $title $subtitle\n" if ($debug & 4); - $position -= $counter; - ($result) = GetSend ("DELT $position"); - print "Result: $result" if ($debug & 4); - if ($result =~ /^250/) { - $counter++; - } - } - } - } - } - } - } -} - -# What should be recorded -sub inittorecord { - my ($context) = shift; - my ($rContext); - my (@title_list, @subtitle_list, @description_list, $line); - my (%Input); - my $counter = 0; - - if ($context eq "torecord") { - $rContext = \%torecord; - open (FI,"${configdir}/${context}") or die ("Can't open file \"$context\"\n"); - } elsif ($context eq "deepblack") { - $rContext = \%deepblack; - open (FI,"${configdir}/${context}") or return; - } else { - die ("Illegal Context"); - } - - - outer: while (<FI>) { - chomp if ($_); - if ($_ && !(/^\#/) && /^\[.*\]$/) { - $line = $.; - undef %Input; - while (<FI>) { - chomp; - if ($_ && !(/^\#/)) { - if (/^\[.*?\]$/) { - last; - } - - my ($key, $value); - ($key, $value) = split (/\s+=\s+/); - - if ($key =~ /^title$/i) { - if ($Input{title}) { - $Input{title} .= "|$value"; - } else { - $Input{title} = $value; - } - print "Titel = $value\n" if ($debug & 16); - } - elsif ($key =~ /^subtitle$/i) { - if ($Input{subtitle}) { - $Input{subtitle} .= "|$value"; - } else { - $Input{subtitle} = $value; - } - print "Subtitel = $value\n" if ($debug & 16); - } - elsif ($key =~ /^description$/i) { - if ($Input{description}) { - $Input{description} .= "|$value"; - } else { - $Input{description} = $value; - } - print "Description = $value\n" if ($debug & 16); - } - elsif ($key =~ /^category$/i) { - $Input{category} = $value; - print "Category = $value\n" if ($debug & 16); - } - elsif ($key =~ /^channel$/i) { - if ($Input{channel}) { - $Input{channel} .= "|^$value\$"; - } else { - $Input{channel} = $value; - } - print "Channel = $value\n" if ($debug & 16); - } - elsif ($key =~ /^timeframe$/i) { - $Input{timeframe} = $value; - print "Timeframe = $value\n" if ($debug & 16); - } - elsif ($key =~ /^weekday$/i) { - $Input{weekday} = $value; - print "Weekday = $value\n" if ($debug & 16); - } - elsif ($key =~ /^minlength$/i) { - $Input{minlength} = $value; - print "Minlength = $value\n" if ($debug & 16); - } - elsif ($key =~ /^maxlength$/i) { - $Input{maxlength} = $value; - print "Maxlength = $value\n" if ($debug & 16); - } - elsif ($key =~ /^prio$/i) { - $Input{prio} = $value; - print "Prio = $value\n" if ($debug & 16); - } - elsif ($key =~ /^lifetime$/i) { - $Input{lifetime} = $value; - print "Lifetime = $value\n" if ($debug & 16); - } - elsif ($key =~ /^timertitle$/i) { - $Input{timertitle} = $value; - print "Timertitel = $value\n" if ($debug & 16); - } - elsif ($key =~ /^margin$/i) { - $Input{margin} = $value; - print "Margin = $value\n" if ($debug & 16); - } - elsif ($key =~ /^instance$/i) { - $Input{instance} = $value; - print "Instance = $value\n" if ($debug & 16); - } else { - print "Unkown Key: \"$key\" with Value: \"$value\"\n"; - } - } - } - - # Accept entry only if it is for the current instance or for "no" instance - if (($Opts{s} && $Input{instance} && $Input{instance} eq "s") || !$Input{instance} || ($Input{instance} ne "s" && $Input{instance} == $currentVDR)) { - # Accept entry only if at least a Title/Subtitle/Description is provied - if (!$Input{title} && !$Input{subtitle} && !$Input{description}) { - print "No Title/Subtitle/Description Field. $context entry ignored. Block beginning at Line $line\n"; - redo outer; - } - - if ($Input{title}) { - $$rContext{title}[$counter] = $Input{title}; - $title_list[$#title_list + 1] = $Input{title}; - } - if ($Input{subtitle}) { - if ($Input{subtitle} =~ /^movie$/i || $Input{subtitle} =~ /^\!movie$/i) { - $test_subtitle_movie = 1; - } - $$rContext{subtitle}[$counter] = $Input{subtitle}; - $subtitle_list[$#subtitle_list + 1] = $Input{subtitle}; - } - if ($Input{description}) { - $$rContext{description}[$counter] = $Input{description}; - $description_list[$#description_list + 1] = $Input{description}; - } - if ($Input{category}) { - $$rContext{category}[$counter] = $Input{category}; - } - if ($Input{channel}) { - if ($Input{channel} =~ /\!/) { - $Input{channel} =~ s/\!//g; - $$rContext{blackchannel}[$counter] = $Input{channel}; - } else { - $$rContext{channel}[$counter] = $Input{channel}; - } - } - if ($Input{timeframe}) { - $$rContext{timeframe}[$counter] = $Input{timeframe}; - } - if ($Input{weekday}) { - $$rContext{weekday}[$counter] = $Input{weekday}; - } - if ($Input{minlength}) { - if ($Input{minlength} =~ /^(\d+)m$/) { - $Input{minlength} = $1 * 60 - } elsif ($Input{minlength} =~ /^(\d+)h$/) { - $Input{minlength} = $1 * 60 * 60 - } - $$rContext{minlength}[$counter] = $Input{minlength}; - } - if ($Input{maxlength}) { - if ($Input{maxlength} =~ /^(\d+)m$/) { - $Input{maxlength} = $1 * 60 - } elsif ($Input{maxlength} =~ /^(\d+)h$/) { - $Input{maxlength} = $1 * 60 * 60 - } - $$rContext{maxlength}[$counter] = $Input{maxlength}; - } - if ($Input{prio}) { - $$rContext{prio}[$counter] = $Input{prio}; - } - if ($Input{lifetime}) { - $$rContext{lifetime}[$counter] = $Input{lifetime}; - } - else { - $$rContext{prio}[$counter] = $default_prio; - } - if ($Input{timertitle}) { - $$rContext{timertitle}[$counter] = $Input{timertitle}; - } - if ($Input{margin}) { - my ($start, $stop); - ($start, $stop) = split (/;/,$Input{margin}, 2); - $$rContext{marginstart}[$counter] = $start if ($start); - $$rContext{marginstop}[$counter] = $stop if ($stop); - } - # Set Default-Margins if no margins defined - $$rContext{marginstart}[$counter] = $marginstart if (!$$rContext{marginstart}[$counter]); - $$rContext{marginstop}[$counter] = $marginstop if (!$$rContext{marginstop}[$counter]); - $counter++; - if ($Input{instance}) { - $$rContext{instance}[$counter] = $Input{instance}; - } - } - redo outer; - } - } - - $$rContext{timercount} = $counter - 1; - - $$rContext{titleRE} = join ('|',@title_list); - if ($$rContext{titleRE} && $$rContext{titleRE} =~ /\|.\|/) { - $$rContext{titleRE} = "."; - } - $$rContext{subtitleRE} = join ('|',@subtitle_list); - if ($$rContext{subtitleRE} && $$rContext{subtitleRE} =~ /\|.\|/) { - $$rContext{subtitleRE} = "."; - } - $$rContext{descriptionRE} = join ('|',@description_list); - if ($$rContext{descriptionRE} && $$rContext{descriptionRE} =~ /\|.\|/) { - $$rContext{descriptionRE} = "."; - } - - if (!$$rContext{titleRE}) { - $$rContext{titleRE} = "^Dieseshierwirdgarantiertnieundnimmeraufirgendetwassinnvollesmatchen\$"; - } - if (!$$rContext{subtitleRE}) { - $$rContext{subtitleRE} = "^Dieseshierwirdgarantiertnieundnimmeraufirgendetwassinnvollesmatchen\$"; - } - if (!$$rContext{descriptionRE}) { - $$rContext{descriptionRE} = "^Dieseshierwirdgarantiertnieundnimmeraufirgendetwassinnvollesmatchen\$"; - } -} - -# Parse "LSTC"-Command of VDR -sub initchannellist { - my ($counter, $chan, $garbage, $card, @temp_channels, $temp, $i); - - @temp_channels = GetSend ("LSTC"); - - foreach $i (0 .. $#temp_channels) { - $temp = $temp_channels[$i]; - chomp $temp; - - if ($temp =~ s/250-|250\s//) { - ($counter, $temp) = split (/\s/,$temp,2); - ($chan, $garbage,$garbage, $garbage, $garbage, $garbage, $garbage, $card, $garbage) = split (/\:/,$temp); - $channels[$counter] = $chan; - $channels{$chan}{number} = $counter; - $channels{$chan}{card} = $card; - $counter++; - } - } -} - -sub initconfigfile { - open (FI,"${configdir}/config") or return; - while (<FI>) { - s/\#.*//; - chomp; - if ($_) { - my ($key, $value); - ($key, $value) = split (/\s+=\s+/); - if ($key =~ /^debug$/i) { - $debug = $value; - print "Debug-Level = $value\n" if ($debug & 16); - } - elsif ($key =~ /^marginstart$/i) { - print "Marginstart = $value\n" if ($debug & 16); - $marginstart = $value; - } - elsif ($key =~ /^marginstop$/i) { - print "Marginstop = $value\n" if ($debug & 16); - $marginstop = $value; - } - elsif ($key =~ /^DVBCards$/i) { - print "DVB_Cards = $value\n" if ($debug & 16); - $DVB_cards = $value; - } - elsif ($key =~ /^defaultprio$/i) { - print "Default Priority = $value\n" if ($debug & 16); - $default_prio = $value; - } - elsif ($key =~ /^Dest$/i) { - print "Destination Host/IP:Port = $value\n" if ($debug & 16); - @Dest = split (/\s+/,$value); - } - elsif ($key =~ /^jointimers$/i) { - print "Join Timers = $value\n" if ($debug & 16); - $jointimers = $value; - } - elsif ($key =~ /^description$/i) { - print "Description = $value\n" if ($debug & 16); - $Description = $value; - } - else { - print "Unkown Key: \"$key\" with Value: \"$value\"\n"; - } - } - } - print "End Config\n" if ($debug & 16); -} - -sub initcommandline() { - my $Usage = qq{ -Usage: $0 [options] [Instance]... - -Options: -d hostname:Port hostname/ip:Port (localhost:2001) - -c configdir Directory where all config files are located - (~/.master-timer) - -i instance Which VDR-Instance, from the config-file, should be - used - -s Print all series from epg.data and exit - -v debuglevel Level of debug-messages to print - -h This Help-Page -}; - - # Only process commandline if not already processed - if (!$Opts{done}) { - die $Usage if (!getopts("d:p:c:i:sv:h",\%Opts)); - } - die $Usage if ($Opts{h}); - # Mark the options as already processed - $Opts{done} = 1; - - if ($Opts{v}) { - $debug = $Opts{v}; - } - if ($Opts{i}) { - $currentVDR = $Opts{i}; - } - if ($Opts{d}) { - @Dest = ($Opts{d}); - } - if ($Opts{c}) { - $configdir = $Opts{c}; - } -} - -sub init { - &initcommandline(); - &initconfigfile(); - # Process commandline a second time, so that configs from the config-file are overwritten - &initcommandline(); - &initsocket(); - &initmovie(); - &initdone(); - &initchannellist(); - &inittorecord("deepblack"); - &initepgdata(); - &inittorecord("torecord"); -} diff --git a/Tools/master-timer/process_summary.pl b/Tools/master-timer/process_summary.pl deleted file mode 100755 index ebe6300..0000000 --- a/Tools/master-timer/process_summary.pl +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/perl -w - -$dir = "/home/ms/.master-timer"; - -open (FI,"$dir/done") or die "Can't open \"done\"\n"; -while (<FI>) - { - chomp; - if ($_) - { - ($title,$subtitle) = split (/\|/,$_,2); - $Done{$title}{$subtitle}=1; - } - } -close (FI); - -&traverse('/video'); - -if ($hit) - { - rename ("$dir/done","$dir/done.bak"); - open (FO,">$dir/done"); - foreach $title (sort keys %Done) - { - foreach $subtitle (sort keys %{%Done->{$title}}) - { - print FO "$title\|$subtitle\n"; - } - } - } - -sub traverse - { - local($dir) = shift; - local($path); - unless (opendir(DIR, $dir)) - { - warn "Can't open $dir\n"; - closedir(DIR); - return; - } - foreach (readdir(DIR)) - { - next if $_ eq '.' || $_ eq '..'; - $path = "$dir/$_"; - if (-d $path) # a directory - { - &traverse($path); - } - if ($_ eq "summary.vdr") - { - open (FI,"$path") or die "Can't open \"$path\"\n"; - @lines = <FI>; - close (FI); - if ($lines[0] =~ /^Title\:\s\"(.*)\"/) - { - @titles = split (/\~/,$1); - if ($lines[2] && $lines[2] =~ /^Subtitle\:\s\"(.*)\"/) - { - @subtitles = split (/\~/,$1); - foreach $num (0 .. $#titles) - { - if ($titles[$num] && $subtitles[$num]) - { - if (!$Done{$titles[$num]}{$subtitles[$num]}) - { - $Done{$titles[$num]}{$subtitles[$num]}=1; - $hit = 1; - } - } - } - } - } - } - } - closedir(DIR); - } - - diff --git a/Tools/master-timer/sample/channels-to-scan b/Tools/master-timer/sample/channels-to-scan deleted file mode 100644 index 22f473d..0000000 --- a/Tools/master-timer/sample/channels-to-scan +++ /dev/null @@ -1,6 +0,0 @@ -1 -2 -3 -4 -5 -49 diff --git a/Tools/master-timer/sample/config b/Tools/master-timer/sample/config deleted file mode 100644 index 3180943..0000000 --- a/Tools/master-timer/sample/config +++ /dev/null @@ -1,32 +0,0 @@ -# Master-Timer config file. Values shown here are defaults. - -# How many seconds "too early" should the timer begin -marginstart = 600 - -# How many seconds "too long" should the timer end -marginstop = 600 - -# When the Prio isn't provided in the config file use this value -defaultprio = 50 - -# How many DVB cards are installed in the computer (not used yet) -DVBCards = 1 - -# IP/Hostname:Port of the destination (space is used for delimiter) -Dest = localhost:2001 - -# Should timers on the same channels be joined when they overlap (0 = off) -jointimers = 0 - -# Should the description be transfered to VDR? -description = 0 - -# Debug level -# 1 : Dump "torecord" -# 2 : Dump all timers -# 4 : Show when a timer will be deleted -# 8 : Dump the "Done" REs -# 16 : Verbose config reading -# 32 : Dump program variables -# 64 : Excessive deepblack/torecord debuging -debug = 0 diff --git a/Tools/master-timer/sample/convert-channel-list b/Tools/master-timer/sample/convert-channel-list deleted file mode 100644 index a97f3c5..0000000 --- a/Tools/master-timer/sample/convert-channel-list +++ /dev/null @@ -1,26 +0,0 @@ -Kabel 1|Kabel 1 -MTV|MTV Central -PRW 13TH Street|13th Street -PRW Discovery Channel|Discovery Channel -PRW Disney Channel|Disney Channel -PRW FOX KIDS|Fox Kids -PRW Junior|Junior -PRW K-Toon|K-Toon -PRW Krimi & Co|Krimi &Co -PRW Planet|Planet -PRW Sci-Fantasy|Premiere Sci-Fi -PRW Studio Universal|Studio Universal -PRW Sunset|Sunset -Premiere Action|Premiere Action -Premiere Comedy|Premiere Comedy -Premiere STAR|Premiere Star -Premiere World 1|Premiere 1 -Premiere World 2|Premiere 2 -Premiere World 3|premiere 3 -Pro Sieben|Pro-7 -RTL|RTL -RTL 2|RTL2 -Sat.1|Sat.1 -Super RTL|Super RTL -Viva|VIVA -Vox|VOX diff --git a/Tools/master-timer/sample/deepblack b/Tools/master-timer/sample/deepblack deleted file mode 100644 index 12884fe..0000000 --- a/Tools/master-timer/sample/deepblack +++ /dev/null @@ -1,172 +0,0 @@ -# [<Anytext>] -# This marks the beginning of a deepblack-entry -# Title = <text> -# This matches a title -# Subtitle = <text> -# This matches a subtitle -# Description = <text> -# This matches a description -# Category = <left>/<right> -# This matches a DTV-Category -# Channel = <Channel> -# Restricts a deepblack-entry to a specific channel. -# A single "!" at start of channel list negates the selection. -# Timeframe = <begin>-<end> -# Restricts a deepblack-entry to a specific timeframe. -# No timers with start time in the timeframe will be programmed. -# minlength = <Number> -# Restricts a deepblack-entry to a specific minimum length -# (postfix "m" for minutes, "h" for hours.) -# maxlength = <Number> -# Restricts a deepblack-entry to a specific maximum length -# (postfix "m" for minutes, "h" for hours.) -# weekday = MTWTFSS -# Restricts a deepblack-entry to a specific weekday -# instance = <Number> -# Only apply this deepblack-entry for a specific Instance -# "s" is a special value used for "-s"-Mode -# -# The "Title", "Subtitle", "Description", "Channel"-Lines can be -# supplied any number of times for a specific entry -# -# To deepblack something at least one of the "Title", "Subtitle" or -# "Description" (If you don't have anything "better" use "Title = ." -# for this matches everything) fields has to be provided. -# These three fields are "include" and the rest are "exclude" fields. - -[Blacklist all Talkshows] -Title = . -Category = Talk - -[Blacklist all Lifestyles] -Title = . -Category = /Lifestyles - -[Blacklist Sport/Tennis] -Title = . -Category = Sport/Tennis - -[Record only ZDF and Pro7] -Title = . -Channel = !ZDF -Channel = ProSieben - -[Blacklist a timeframe] -Title = . -Timeframe = 1000-1400 - -[Blacklist everything with less than 5 minutes duration] -Title = . -maxlength = 5m - -[Sinnlose Serien] -Title = Für alle Fälle Stefanie -Title = Chicago Hope - Endstation Hoffnung -Title = Chicago Hope -Title = Doppelter Einsatz -Title = Dr. Stefan Frank - Der Arzt, dem die Frauen vertrauen -Title = Ehekriege -Title = Ein Bayer auf Rügen -Title = Emergency Room -Title = Gute Zeiten, schlechte Zeiten -Title = Hallo, Onkel Doc! -Title = Hercules -Title = Hinter Gittern - Der Frauenknast -Title = OP ruft Dr. Bruckner -Title = Wolffs Revier -Title = alphateam -Title = SK Kölsch -Title = ^Becker$ -Title = Kommissar Rex -Title = Nur die Liebe zählt -Title = Unsere kleine Farm -Title = Die Waltons -Title = ^Die Zwei$ - -[Glueckspiele] -Title = Die Quiz Show -Title = Glücksrad -Title = Jeder gegen Jeden -Title = Kochduell - -[Infotainment und Boulevardzeug] -Title = 'MAX' - Das ganze Leben! -Title = ^BIZZ$ -Title = Big Brother -Title = GIRLSCAMP -Title = Call TV -Title = DIE REDAKTION -Title = EXCLUSIV -Title = EXTRA -Title = Explosiv - Das Magazin -Title = K1 DIE REPORTAGE -Title = K1 Das Magazin -Title = PROSIEBEN REPORTAGE -Title = Fit For Fun TV -Title = peep! -Title = s.a.m. -Title = taff. -Title = ^blitz$ -Title = Die Harald Schmidt Show -Title = Spiegel TV-Reportage - -[Nachrichten] -Title = 10 vor 11 -Title = 17:30 live -Title = 18:30 -Title = 24 Stunden -Title = Punkt 12 -Title = Punkt 6 -Title = Punkt 9 -Title = RTL II News -Title = RTL aktuell -Title = RTL-Nachtjournal -Title = K1 Nachrichten -Title = Nachrichten - -[Talkshows] -Title = Andreas Türck -Title = Arabella -Title = Britt - Der Talk um Eins -Title = Bärbel Schäfer -Title = Die Oliver Geissen Show -Title = Peter Imhof -Title = Vera am Mittag -Title = Hans Meiser -Title = Nicole - Entscheidung am Nachmittag -Title = Franklin - -[So richtig Sinnloses] -Title = Dauerwerbesendungen -Title = Infomercials -Title = Kickers -Title = RTL SHOP -Title = SAT.1-FRÜHSTÜCKSFERNSEHEN -Title = Zapping - -[PREMIERE WORLD - Das Programm] -Title = PREMIERE WORLD - Das Programm -Title = Programm ab -Title = Programm von - -[Fussball] -Title = fussball -Title = fußball -Title = UEFA Champions - -#Sonstiges -[^Sieben$] -Title = ^Sieben$ - -[Starporträt Kevin Spacey] -Title = Starporträt Kevin Spacey - - -[All Movies for -s] -Subtitle = MOVIE -Instance = s - -[All >= 65m for -s] -Title = . -minlength = 65m -Instance = s diff --git a/Tools/master-timer/sample/done b/Tools/master-timer/sample/done deleted file mode 100644 index 76819c7..0000000 --- a/Tools/master-timer/sample/done +++ /dev/null @@ -1 +0,0 @@ -Alles Routine|Komödie diff --git a/Tools/master-timer/sample/subtitle-movie b/Tools/master-timer/sample/subtitle-movie deleted file mode 100644 index 9bd3579..0000000 --- a/Tools/master-timer/sample/subtitle-movie +++ /dev/null @@ -1,52 +0,0 @@ -^Abenteuerfilm$ -^Actionfilm$ -^Actionkomödie$ -^Actionthriller$ -^Agentenfilm$ -^Beziehungskomödie$ -^Biografie$ -^Biographie$ -^Computeranimation$ -^Drama$ -^Episodenfilm$ -^Erotikfilm$ -^Familiendrama$ -^Fantasy$ -^Fantasykomödie$ -^Fantasy-Komödie$ -^Gangsterfilm$ -^Gerichtsfilm$ -^Gesellschaftsdrama$ -^Historiendrama$ -^Horrorfilm$ -^Horrorkomödie$ -^Jugenddrama$ -^Kinderfilm$ -^Komödie$ -^Kriegsfilm$ -^Krimikomödie$ -^Kriminalfilm$ -^Liebesfilm$ -^Liebeskomödie$ -^Melodram$ -^Melodrama$ -^Monumentalfilm$ -^Musical$ -^Politthriller$ -^Psychothriller$ -^Road Movie$ -^Romanze$ -^Satire$ -^Science-Fiction$ -^Science-Fiction-Komödie$ -^Spielfilm$ -^TV Movie$ -^TV-Drama$ -^Teil .$ -^Teil 0.$ -^Thriller$ -^Tragikomödie$ -^Western$ -^Westernkomödie$ -^Zeichentrick$ -^Zeichentrickkomödie$ diff --git a/Tools/master-timer/sample/torecord b/Tools/master-timer/sample/torecord deleted file mode 100644 index 0c97b91..0000000 --- a/Tools/master-timer/sample/torecord +++ /dev/null @@ -1,90 +0,0 @@ -# [<Anytext>] -# This marks the beginning of a timer entry -# Title = <text> -# This matches a title -# Subtitle = <text> -# This matches a subtitle. -# You may use the magic "MOVIE" or "!MOVIE" which matches -# all entries from file "subtitle-movie". -# Description = <text> -# This matches a description -# Category = <left>/<right> -# This matches a DTV-Category -# Channel = <Channel> -# Restricts a time to a specific channel. -# A single "!" at start of channel list negates the selection. -# Timeframe = <begin>-<end> -# Restricts timer to a specific timeframe. -# Only timers with start time in the timeframe will be programmed. -# minlength = <Number> -# Restricts timer entry to a specific minimum length -# (postfix "m" for minutes, "h" for hours.) -# maxlength = <Number> -# Restricts a timer entry to a specific maximum length -# (postfix "m" for minutes, "h" for hours.) -# weekday = MTWTFSS -# Restricts a timer to a specific weekday -# Timertitle = <text> -# The title used for this timer. -# If this is not provided "Title" will be used. -# If "Title" is not provided the EPG title will be used. -# Margin = <Number>;<Number> -# Seconds added to the beginning and end of the timer. -# Positive numbers will lengthen the recording. -# instance = <Number> -# The instance of VDR for which this timer is. -# If this is not provided the timer is valid for ALL instances. -# -# The "Title", "Subtitle", "Description", "Channel"-Lines can be -# supplied any number of times for a specific entry -# -# To record something at least one of the "Title", "Subtitle" or "Description" -# fields has to be provided. These three fields are "include" and the rest are -# "exclude" fields! - -[Dies ist ein Test-Timer] -Title = Titel -Subtitle = Subtitel -Description = Description -Category = Serie/Krimi -Channel = Pro-7 -Channel = VIVA -Timeframe = 1230-1830 -Prio = 50 -Lifetime = 50 -minlength = 10m -maxlength = 3h -weekday = ---T--- -Timertitle = Test -Margin = 600;600 -instance = 2 - -# Record Babylon 5 only if NOT playing on Pro 7; -# recording starts one minute too early and ends -# one minute too early (to skip following ads). -[Babylon 5] -Title = Babylon 5 -Channel = !Pro-7 -Prio = 99 -Margin = 60;-60 - -[DS9] -Title = Deep Space Nine -Prio = 99 -Timertitle = DS9 -Margin = 60;-60 - -[Seven Days] -Title = Seven Days -Prio = 99 - -[Stargate] -Title = Stargate -Prio = 99 - -[Aniston] -Description = Aniston -Prio = 99 - -[Matrix] -Title = Matrix diff --git a/Tools/master-timer/scan-channels b/Tools/master-timer/scan-channels deleted file mode 100755 index 324181b..0000000 --- a/Tools/master-timer/scan-channels +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -old=`svdrpsend.pl chan | grep 250 | cut -d " " -f2` -for dat in `cat $HOME/.master-timer/channels-to-scan` -do - svdrpsend.pl "chan $dat" - sleep 30s -done -svdrpsend.pl "chan $old" diff --git a/Tools/schnitt/README b/Tools/schnitt/README deleted file mode 100644 index 8e1cacc..0000000 --- a/Tools/schnitt/README +++ /dev/null @@ -1,111 +0,0 @@ - Sammlung von "Hilfs"-Scripten - von Matthias Schniedermeyer - ms@citd.de - -Diese Sammlung an "Hilfs"-Scripten habe ich mir zum scheiden und anderen -Zwecken zusammengeschrieben. - -Das ganze unterliegt natuerlich der GPL. - -Ich bin nicht sonderlich gut im "Dokumentieren". Also gilt die Devise -"Hilf dir selbst". - -Ein paar Worte zu den "Hart"-Codierten Pfaden. - -/dvb/video -/dvb2/video - -Sind die 2 DVB-Rechner. - -/x1/video - -Ist das Verzeichniss in das die Video zum schneiden verschoben werden. - -/x1/temp -/x2/temp - -Sind die beim schneiden verwendeten Temporaer-Verzeichnisse - - -Enthalten sind folgende Scripte: - -cutall -> "Master"-Script zum starten des Scheide vorgangs. - Ist ein "find" nach "cut" -Dateien -cutt -> Das "eigentliche" Schnitt-Script - Bei einem einzelnen Block wird diese direkt - gesplitet und dann zu einem ISO-Image verarbeitet - Wenn mehrere Teile (=War mit Werbung) vorhanden - sind, dann werden zuerst die einzelnen Teile, - legt nummerierte Verzeichniss ein und kopiert bzw - splitet die einzelnen Dateien in die Verzeichniss - und macht dann daraus die ISO-Images - (Leider funktioniert das aus irgendwelche Gruenden - (noch) nicht mit Serien die nur eine CD gross sind - aber das wird noch) -index.php -> PHP-Script zum finden der Schnitt-Punkte, mit - Testmoeglichkeit ob erfolgreich an diesem Punkt - geschnitten werden kann -mv2 -> Zum Moven der Aufnahmen von meinen DVB-Rechnern - auf mein "Arbeitsrechner" -play -> Zum Abspielen einer Aufnahme von meinem Recher auf - dem "Frontend" DVB-Rechner -schnitt.pl -> Extraiert ein einzelnes Bild um es anzuzeigen - (Fuer index.php) -schnitt2.pl -> Gibt alles zwischen 2 Schnittpunkten auf STDOUT aus -schnitt3.pl -> Testet ob erfolgreich geschnitten werden kann. -schnitt3.pl.new -> Version fuer PES-Datenstroeme -schnitt4.pl -> "Beschleunigtes" Schnitt-Programm fuer VIVA - aufnahmen. 1 "VIDEO" pro Zeile erzeugt - "a", "b" ... Dateien -schnitt5.pl -> Gibt Datei-Nummern von einer Schnittmarke - +- 15000 Frames aus -schnitt6.pl -> Loescht alle Dateien die nicht von in einer von - schnitt5.pl abgedeckt ist. (Damit mv2 nicht so - lange braucht) -show -> Wird auf einem X-Display gestartet und zeigt das - aktuelle Bild von "schnitt.pl" an -vdr-remote.pl -> "Skeleton" um ueber SVDR-Kommandos zu schicken -vdr2 -> Start-Script -vmount -> Mounten aller zusammengehoeriger ISO-Images zum - abspielen - -Hilfsscripte: ------------- -cut.pl -> Entspricht weitestgehend "split" aber mit - "Nummer" anstatt Buchstaben -cut2 -> Entfernt escapende Backslashes -cut2.pl/cut3.pl -> Fuer Aufnehmen die aus mehreren Bloecken bestehen - (=Mit Werbung) -cutall2 -> Springt ins Schnitt-Verzeichniss und ruft das - "eigentliche" Schnitt-Script auf -cutall3.pl -> Wenn in einem Verzeichniss mehrere Aufnahmen sind - splitet dies Programm diese und ruft fuer jede - Aufnahme das "cutt"-Script auf -schnittcommon.pli -> Das "Common" Script fuer schnitt?.pl -getpreviframe.pl -> Findet das vorherige I-Frame. -unsort -> Macht das Gegenteil von sort. - -dump.c -> Muss in der "libmpeg3"-Verzeichniss des - "mpeg2-movie"-Packets kopiert werden und dann mit - "make" compilieren - Dieses C-Programm ist dafuer da um fuer das - PHP-Script das Bild anzuzeigen wo man gerade ist. - Da mir der "urspruengliche" Source-Code dafuer - abhanden gekommen ist und ich den Patch neumachen - musste (Wie immer mit "Verbesserungen") ist index.php - nocht nicht auf die neue Version angepasst. Die - Anpassung besteht aber nur darin eine "1" an die - Kommandozeile anzuhaengen. - - -Im Gegensatz zur "alten"-Version ist diese Version "vollstaendig" -einsatzfaehig! - - -Wenn jemand Fragen zum Einsatz hat dann "loechern Sie mich" - -ms@citd.de - - -Ich kann auch gerne die Einrichtung per "Fernwartung" (=ssh) uebernehmen. -(Wenn noetig compiliere ich auch auch apache mit PHP usw.) diff --git a/Tools/schnitt/cut.pl b/Tools/schnitt/cut.pl deleted file mode 100755 index e055076..0000000 --- a/Tools/schnitt/cut.pl +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/perl - -chdir ($ARGV[0]) if ($ARGV[0]); - -$read = $size = 1024*1024; - -$filenum = "1"; -$count = 0; - -$fi = sprintf ("part%d",$filenum); -open (FI,">$fi"); - -while ($read == $size) - { - if ($count < 660*1024*1024) - { - $read = read (STDIN,$data,$size); - print FI $data; - $count += $size; - $a = $count /1024/1024; - if ($a % 10 == 0) { - print stderr "File: $filenum Size: ${a}MB\n"; - } - } - else - { - close (FI); - $filenum++; - $fi = sprintf ("part%d",$filenum); - open (FI,">$fi"); - $count = 0; - } - } - -close FI; diff --git a/Tools/schnitt/cut2 b/Tools/schnitt/cut2 deleted file mode 100755 index 09e9acb..0000000 --- a/Tools/schnitt/cut2 +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -cat cut2 | head -n 1 | tr -d [\\\\] diff --git a/Tools/schnitt/cut2.pl b/Tools/schnitt/cut2.pl deleted file mode 100755 index 6131e88..0000000 --- a/Tools/schnitt/cut2.pl +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/perl - -$titel = $ARGV[0]; - -chdir ("/x2/temp"); - -@files=<teil*.mpg>; -$cd = 1; -mkdir "/x2/temp/$cd"; -open (FF,">/x2/temp/$cd/$titel\ CD\ $cd"); -close (FF); - -foreach $file (@files) - { - $size = -s $file; - $total += $size; - if ($total <= 660*1024*1024) - { - print "Moving $file\n"; - system ("mv /x2/temp/$file /x2/temp/$cd/$file"); - } - else - { - print "Splitting $file\n"; - $file =~ s/\.mpg$//; - $total -= $size; - $size = (660*1024*1024) - $total; - $cd = `cut3.pl /x2/temp $cd $file $size \'$titel\' < $file.mpg`; - chomp $cd; - $total = 0; - @files2=</x2/temp/$cd/teil*>; - foreach $file2 (@files2) - { - $total += -s $file2; - } - print "CD: $cd Total $total\n"; - unlink "$file.mpg"; - } - } diff --git a/Tools/schnitt/cut3.pl b/Tools/schnitt/cut3.pl deleted file mode 100755 index ddaf0d6..0000000 --- a/Tools/schnitt/cut3.pl +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - -$read = $size = 1024*1024; - -$dir = $ARGV[0]; -$subdir = $ARGV[1]; -$teil = $ARGV[2]; -$count1 = $ARGV[3]; -$title = $ARGV[4]; - -$filenum = "1"; -$count = 0; - -open (FI,">$dir/$subdir/$teil.$filenum.mpg"); - -while ($read == $size) - { - if (($filenum == 1 && $count < $count1) || ($filenum > 1 && $count < 660*1024*1024)) - { - $read = read (STDIN,$data,$size); - print FI $data; - $count += $size; - $a = $count /1024/1024; - } - else - { - close (FI); - $filenum++; - $subdir++; - mkdir ("$dir/$subdir"); - open (FF,">$dir/$subdir/$title\ CD\ $subdir"); - close (FF); - open (FI,">$dir/$subdir/$teil.$filenum.mpg"); - $count = 0; - } - } - -close FI; - -print "$subdir\n"; diff --git a/Tools/schnitt/cutall b/Tools/schnitt/cutall deleted file mode 100755 index a6803e2..0000000 --- a/Tools/schnitt/cutall +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -find /x1/video/ -name "cut" -exec cutall2 {} \; diff --git a/Tools/schnitt/cutall2 b/Tools/schnitt/cutall2 deleted file mode 100755 index 962d577..0000000 --- a/Tools/schnitt/cutall2 +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -a=`echo $1 | cut -d / -f1-5` -cd $a -cutall3.pl -mv cut cut.bak diff --git a/Tools/schnitt/cutall3.pl b/Tools/schnitt/cutall3.pl deleted file mode 100755 index 6961666..0000000 --- a/Tools/schnitt/cutall3.pl +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/perl - -open (FI,"cut") or die "Kann Cut-Datei nicht oeffnen\n"; - -outer: while (<FI>) - { - chomp; - if (! ($_ > 1 || $_ eq "0")) - { - open (FO,">cut2"); - print FO "$_\n"; - while (<FI>) - { - chomp; - if ($_ > 1 || $_ eq "0") - { - print FO "$_\n"; - } - else - { - system ("cutt"); - redo outer; - } - } - } - } -if ( -f "cut2") - { - system ("cutt"); - unlink "cut2"; - } diff --git a/Tools/schnitt/cutt b/Tools/schnitt/cutt deleted file mode 100755 index 1942437..0000000 --- a/Tools/schnitt/cutt +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/sh - -DIRA=/x2/temp -DIRB=/x1/temp - -if [ ! -f cut2 ]; then - echo Keine Beschreibungsdatei - exit 1 -else - name="`cut2`" - echo $name - count=`cat cut2 | wc -l` - let count=count-1 - let test=count%2 - if [ "$test" == "1" ]; then - echo Ungerade Anzahl von Markierungen - exit 1 - fi - - file=1 - - if [ "$count" == "2" ]; then - start=`cat cut2 | tail -n $count | head -n 1` - let count=count-1 - end=`cat cut2 | tail -n $count | head -n 1` - schnitt2.pl $start $end | avpes2mpeg | cut.pl $DIRA - secondway=2 - else - while [ "$count" != "0" ] - do - start=`cat cut2 | tail -n $count | head -n 1` - let count=count-1 - end=`cat cut2 | tail -n $count | head -n 1` - let count=count-1 - echo Cutting \& Converting from $start to $end - schnitt2.pl $start $end | avpes2mpeg > $DIRA/teil$file.mpg -# schnitt2.pl $start $end | pvademux $DIRA teil$file - let file=file+1 - done - fi -fi - -# Ab hier mkimg - -rm cut2 - -sync - -if [ "$secondway" != "2" ]; then - cd $DIRA - cut2.pl "$name" - if [ -d 2 ]; then - count=1 - cond=0 - - while [ "$cond" != "1" ] - do - echo mkisofs Teil $count - mkisofs -r -o $DIRB/image1.raw $count - rm -rf $count - mv -- $DIRB/image1.raw "$DIRB/${name} CD $count" - sync - let count=count+1 - if [ ! -d $count ]; then - cond=1 - fi - done - else - echo mkisofs - mkisofs -r -o $DIRB/image1.raw $count - rm -rf $count - mv -- $DIRB/image1.raw "$DIRB/${name}" - fi -else - - cd $DIRA - - if [ -f part2 ]; then - count=1 - cond=0 - - while [ "$cond" != "1" ] - do - mkdir a - mv "part$count" "a/${name} CD $count.mpg" - echo mkisofs Teil $count - mkisofs -r -o $DIRB/image1.raw a - rm -rf a - mv -- $DIRB/image1.raw "$DIRB/${name} CD $count" - sync - - let count=count+1 - if [ ! -f "part$count" ]; then - cond=1 - fi - done - else - mkdir a - mv part1 "a/${name}.mpg" - echo mkisofs - mkisofs -r -o $DIRB/image1.raw a - rm -rf a - mv -- $DIRB/image1.raw "$DIRB/${name}" - fi -fi - diff --git a/Tools/schnitt/dump.c b/Tools/schnitt/dump.c deleted file mode 100644 index a362f68..0000000 --- a/Tools/schnitt/dump.c +++ /dev/null @@ -1,65 +0,0 @@ -#include "libmpeg3.h" -#include <stdlib.h> -#include <unistd.h> -#include <fcntl.h> -#include <string.h> - -int main(int argc, char *argv[]) -{ - mpeg3_t *file; - int x,y,ii,i,j,result,out; - int howmany; - unsigned char *output, **output_rows; - char filename[100]; - char header[100]; - char temp; - - howmany = atoi (argv[2]); - - if ((file = mpeg3_open(argv[1])) == NULL) - { - printf ("Open failed\n"); - return 1; - } - mpeg3_set_cpus(file,1); - mpeg3_set_mmx(file,0); - if (mpeg3_has_video == 0) - { - printf ("Stream has no Video\n"); - return 1; - } - x = mpeg3_video_width(file,0); - y = mpeg3_video_height(file, 0); - output = malloc (x*y*3 + 4); - output_rows = malloc (sizeof(unsigned char*) * y); - for(i = 0; i < y; i++) - output_rows[i] = &output[i * x * 3]; - - for (ii = 0; ii < howmany; ii++) - { - result = mpeg3_read_frame(file,output_rows,0,0,x,y,x,y,0,0); - - sprintf (filename,"/x2/temp/output%03i.ppm",ii); - sprintf (header,"P6\n%i %i\n255\n\r",x,y); - -/* printf ("Opening %s\n",filename); */ - - if ((out = open (filename,O_CREAT|O_WRONLY|O_TRUNC,0755)) == -1) - { - printf ("Can't open %s\n",filename); - return 1; - } - - write (out,header,strlen(header)); - - for (i = 0; i < y; i++) - for (j = 0; j < x; j++) - { - temp = output [(i*x+j)*3 + 1]; - output[(i*x+j)*3 + 1] = output [(i*x+j)*3 + 0]; - output[(i*x+j)*3 + 0] = temp; - } - write (out, output, x*y*3); - close (out); - } -} diff --git a/Tools/schnitt/getpreviframe.pl b/Tools/schnitt/getpreviframe.pl deleted file mode 100755 index 4829304..0000000 --- a/Tools/schnitt/getpreviframe.pl +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/perl - -require "/usr/local/bin/my/schnittcommon.pli"; - -if (!open (INDEX,"index.vdr")) - { - exit 1; - } -$index = $oindex = $ARGV[0]; -if ($index > 0) -{ - &prevI; - if ($oindex != $index) - { - print "$index\n"; - } - else - { - print "$oindex\n"; - } -} -else -{ - print "0\n"; -} diff --git a/Tools/schnitt/index.php b/Tools/schnitt/index.php deleted file mode 100644 index 58a288f..0000000 --- a/Tools/schnitt/index.php +++ /dev/null @@ -1,215 +0,0 @@ -<html> -<head> - <title>Schneiden</title> -</head> -<body bgcolor=#C0C0C0> -<? -if ($level == 0) - { - $dircount=0; - $handle=opendir('/x1/video'); - while ($file = readdir($handle)) { - if ($file != "." && $file != ".." && $file != "epg.data") { - $dir=$file; - $dircount++; - } - } - if ($dircount == 1) { - $level=1; - } - else - { -?> -<center><h1>Sender</h1></center> -<form action="index.php" method="post"> -<input type=hidden name=level value="1"> -<? - $handle=opendir('/x1/video'); - while ($file = readdir($handle)) { - if ($file != "." && $file != ".." && $file != "epg.data") { - echo "<input type=submit name=dir value=\"$file\">\n"; - } - } - closedir($handle); -?> -</form> -<? - } - } -if ($level == 1) - { - $dircount=0; - $handle=opendir("/x1/video/$dir"); - while ($file = readdir($handle)) { - if ($file != "." && $file != "..") { - $dira="$dir/$file"; - $dircount++; - } - } - if ($dircount == 1) { - $dir = $dira; - $level = 2; - } - else - { -?> -<form action="index.php" method="post"> -<input type=hidden name=level value="2"> -<? - echo "<center><h1>Filme/Serien fuer den Sender $dir</h1></center>"; - $handle=opendir("/x1/video/$dir"); - while ($file = readdir($handle)) { - if ($file != "." && $file != "..") { - echo "<input type=submit name=dir value=\"$dir/$file\"><br>\n"; - } - } - closedir($handle); -?> -</form> -<? - } - } -if ($level == 2) - { -if ($aindex) - $index = $aindex; -else if (!$index) - $index = 0; - -if ($dir) - chdir ("/x1/video/$dir"); - -switch ($cindex) { - case "-10000": - if ($index >=10000) - $index -= 10000; - break; - case "-4000": - if ($index >=4000) - $index -= 4000; - break; - case "-2000": - if ($index >=2000) - $index -= 2000; - break; - case "-1000": - if ($index >=1000) - $index -= 1000; - break; - case "-500": - if ($index >=500) - $index -= 500; - break; - case "-100": - if ($index >=100) - $index -= 100; - break; - case "Vorheriges I-Frame": - $pindex = $index - 1; - $fp = popen ("/usr/local/bin/my/getpreviframe.pl $pindex","r"); - $i = fgets($fp,1000); - $index = chop ($i); - pclose ($fp); - break; - case "Naechstes I-Frame": - $index ++; - break; - case "+100": - $index += 100; - break; - case "+500": - $index += 500; - break; - case "+1000": - $index += 1000; - break; - case "+2000": - $index += 2000; - break; - case "+4000": - $index += 4000; - break; - case "+10000": - $index += 10000; - break; - } - -if ($test) - { - $fp = popen ("/usr/local/bin/my/schnitt3.pl $index","r"); - $i = fgets($fp,1000); - pclose ($fp); - $index = chop ($i); - } - -if ($name) - { - $fp = fopen ("cut","w"); - fputs ($fp,"$name\n"); - fclose ($fp); - } - -if ($cut) - { - $fp = fopen ("cut","a"); - fputs ($fp,"$index\n"); - fclose ($fp); - } - -$fp = popen ("/usr/local/bin/my/schnitt.pl $index","r"); -$i = fgets($fp,1000); -pclose ($fp); -$index = chop ($i); - -system ("/usr/local/bin/my/dumpframe /x2/temp/bild.m2v"); -system ("mv output.ppm /x2/temp"); -system ("touch /x2/temp/newpic"); -system ("killall sleep"); -?> -<form action="index.php" method="post"> -<input type=hidden name=level value="2"> -<input type=hidden name=dir value="<?=$dir?>"> -<input type=hidden name=index value=<?=$index?>> -<table width=90% align=center> -<tr> -<td><h1>Index <?=$index?></h1></td> -<td><h1>Dir: <?=$dir?></h1></td> -</tr> -</table> -<table width=80% align=center> -<tr> -<td><input type=submit name=cindex value="-10000"></td> -<td><input type=submit name=cindex value="-4000"></td> -<td><input type=submit name=cindex value="-2000"></td> -<td><input type=submit name=cindex value="-1000"></td> -<td><input type=submit name=cindex value="-500"></td> -<td><input type=submit name=cindex value="-100"></td> -<td><input type=submit name=cindex value="Vorheriges I-Frame"></td> -<td><input type=submit name=cindex value="Naechstes I-Frame"</td> -<td><input type=submit name=cindex value="+100"></td> -<td><input type=submit name=cindex value="+500"></td> -<td><input type=submit name=cindex value="+1000"></td> -<td><input type=submit name=cindex value="+2000"></td> -<td><input type=submit name=cindex value="+4000"></td> -<td><input type=submit name=cindex value="+10000"></td> -</tr> -</table> -<table> -<tr> -<td>Absoluter Index: <input type=text name=aindex size=6></td> -<td><input type=submit name=test value="Schnitt-Test"></td> -<td><input type=submit name=cut value="Mark"></td> -</form> -<form action="index.php" method="post"> -<input type=hidden name=level value="2"> -<input type=hidden name=dir value="<?=$dir?>"> -<input type=hidden name=index value=<?=$index?>> -<td>Titel: <input type=text name=name size=50 maxlength=255></td> -</form> -</tr> -</table> -<? -} -?> -</body> -</html> diff --git a/Tools/schnitt/lmplex b/Tools/schnitt/lmplex deleted file mode 100755 index 8cbb50f..0000000 --- a/Tools/schnitt/lmplex +++ /dev/null @@ -1,51 +0,0 @@ -#! /usr/bin/perl - -### Calculate the number of CPUs we want to keep busy -open IN, "/proc/cpuinfo"; -$cpus = grep /processor.*:/, <IN>; -close IN; - -### This is a list of files to encode -@names = @ARGV; - -$dira = shift @names; -$dirb = shift @names; - -### This is the name of the encoder to use. -$coder = "/usr/local/bin/mplex "; -### - -### -### -### - -# Encode a single file -sub do_one { - my($m2v) = shift; - # Make mp3 from wav - $m2v =~ s/\.m2v$//; - - # In a subprocess, encode the file - printf "Multiplexing ${m2v}\n"; - unless($pid = fork) { - system ("$coder ${dira}/${m2v}.m2v ${dira}/${m2v}.mp2 ${dirb}/${m2v}.mpg"); - exit; - } -} - -# Go ahead and prefork $cpus encoders -foreach $i (0 .. $cpus-1) { - &do_one($names[0]) if ($names[0] ne ""); - shift @names; -} - -# Wait for the end of each encoder, start a new one... -foreach $i (@names) { - wait; - &do_one($i); -} - -# Wait for everything to close down. -while(wait > 0) { - ; -} diff --git a/Tools/schnitt/mv2 b/Tools/schnitt/mv2 deleted file mode 100755 index c27a9ff..0000000 --- a/Tools/schnitt/mv2 +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# -# Move files from DVB-Computer(s) to localmachine into $LOCALDIR -# - -LOCALDIR=/x1/video - -if [ ! "$UID" = 0 ]; then - if [ -d "$1" ]; then - if [ -f "$1/index.vdr" ]; then - cd $LOCALDIR - recdir=`echo "$1" | cut -d / -f4-` - mkdir -p "$recdir" - cd "$recdir" - dvbcomp=`echo "$1" | cut -d / -f2` - (echo cd "/video/video0/$recdir"; echo mget \*)| ftp -i $dvbcomp - cd $LOCALDIR - ssh $dvbcomp ls -Ls /video/video0/$recdir > /tmp/dvb - ls -Ls $recdir > /tmp/local - diff -u /tmp/dvb /tmp/local &> /dev/null && rm -rfv /$dvbcomp/video?/$recdir - rm /tmp/dvb - rm /tmp/local - rmdir --ignore-fail-on-non-empty `find /$dvbcomp/video?/ -type d -mindepth 1 | cut -d \/ -f-4 | grep -v temp | sort | uniq` - fi - fi -else - echo Not as root -fi - -/usr/local/bin/my/process_summary.pl diff --git a/Tools/schnitt/play b/Tools/schnitt/play deleted file mode 100755 index 0c43bff..0000000 --- a/Tools/schnitt/play +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -if [ "$1" != "" ]; then - vmount "$1" -fi -ssh dvb2 /usr/local/bin/my/novdr -sleep 1s -cat /mnt/*/* | buffer -b 1000 -S 1024 | ssh dvb2 play2 -ssh dvb2 rm /tmp/novdr -umount /mnt/* - diff --git a/Tools/schnitt/schnitt.pl b/Tools/schnitt/schnitt.pl deleted file mode 100755 index ac72a14..0000000 --- a/Tools/schnitt/schnitt.pl +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/perl - -require "/usr/local/bin/my/schnittcommon.pli"; - -if (!open (INDEX,"index.vdr")) - { - exit 1; - } -$index = $ARGV[0]; -&nextI; -$offset1 = $offset; -&readnext; -$off = $offset - $offset1; -close (FI); -$fi = sprintf ("%03d.vdr",$file); -open (FI,$fi); -open (FO,">bild"); -sysseek (FI,$offset1,0); -sysread (FI,$temp,200000); -syswrite (FO,$temp,200000); -close (FI); -close (FO); - -`cat bild | /usr/local/bin/avpes2mpeg > avpes`; -`/usr/local/bin/my/dumpframe avpes 1`; -#`/usr/local/bin/pes2av_pes bild | /usr/local/bin/pvademux /x2/temp bild`; -print "$index\n"; diff --git a/Tools/schnitt/schnitt2.pl b/Tools/schnitt/schnitt2.pl deleted file mode 100755 index d81b5fd..0000000 --- a/Tools/schnitt/schnitt2.pl +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/perl - -require "/usr/local/bin/my/schnittcommon.pli"; - -if (!open (INDEX,"index.vdr")) - { - print "Error opening index.vdr"; - exit 1; - } - -$index = $ARGV[0]; -&nextI; -#&readnext; -$file1 = $file; -$offset1 = $offset; -$index = $ARGV[1]; -&nextI; -#&readnext; -$file2 = $file; -$offset2 = $offset; - -if ($file1 == $file2) - { - $count = $offset2 - $offset1; - $cond = 0; - $size = 1024*1024; - $fi = sprintf ("%03d.vdr",$file); - open (FI,$fi); - sysseek (FI,$offset1,0); - while ($cond == 0) - { - if ($count > $size) - { - $read = sysread (FI,$data,$size); - print $data; - $count -= $size; - } - else - { - $read = sysread (FI,$data,$count); - print $data; - $cond = 1; - } - } - } -else - { - $count = $offset2; - $cond = 0; - $read = $size = 1024*1024; - $fi = sprintf ("%03d.vdr",$file1); - open (FI,$fi); - sysseek (FI,$offset1,0); - while ($read == $size) - { - $read = sysread (FI,$data,$size); - print $data; - } - close (FI); - - $file1++; - while ($file1 != $file2) - { - $fi = sprintf ("%03d.vdr",$file1); - open (FI,$fi); - $read = 1024*1024; - while ($read == $size) - { - $read = sysread (FI,$data,$size); - print $data; - } - close (FI); - $file1++; - } - - $fi = sprintf ("%03d.vdr",$file2); - open (FI,$fi); - while ($cond == 0) - { - if ($count > $size) - { - $read = sysread (FI,$data,$size); - print $data; - $count -= $size; - } - else - { - $read = sysread (FI,$data,$count); - print $data; - $cond = 1; - } - } - } diff --git a/Tools/schnitt/schnitt3.pl b/Tools/schnitt/schnitt3.pl deleted file mode 100755 index 7cc0f7f..0000000 --- a/Tools/schnitt/schnitt3.pl +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/perl - -require "/usr/local/bin/my/schnittcommon.pli"; - -open (INDEX,"index.vdr"); -$index = $ARGV[0]; -&nextI; - -$oldindex = $index; -$tempindex = $index; - -$add = -1; - -$fi = sprintf ("%03d.vdr",$file); -open (FI2,$fi); -open (FO,">test"); -sysseek (FI2,$offset,0); -sysread (FI2,$temp,3000000); -syswrite (FO,$temp,3000000); -close (FI2); -close (FO); -`/usr/local/bin/pvademux.old . test`; -if ( -s "test.mp2") - { - `rm test*`; - print "$index\n"; - exit 0; - } - -while (1) - { - if ($index == 0) - { - $add = 1; - } - if ($add = -1) - { - $index--; - &prevI; - } - else - { - nextI; - } - $fi = sprintf ("%03d.vdr",$file); - open (FI2,$fi); - open (FO,">test"); - sysseek (FI2,$offset,0); - sysread (FI2,$temp,3000000); - syswrite (FO,$temp,3000000); - close (FI2); - close (FO); - `/usr/local/bin/pvademux.old . test`; - if ( -s "test.mp2") - { - `rm test*`; - if ($index < 0) - { - $index *= -1; - } - print "$index\n"; - exit 0; - } - } diff --git a/Tools/schnitt/schnitt3.pl.new b/Tools/schnitt/schnitt3.pl.new deleted file mode 100755 index 04a6239..0000000 --- a/Tools/schnitt/schnitt3.pl.new +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/perl - -require "/usr/local/bin/my/schnittcommon.pli"; - -open (INDEX,"index.vdr"); - -$index = $ARGV[0]; -&nextI; - -$oldindex = $index; -$tempindex = $index; - -$add = -1; - -$fi = sprintf ("%03d.vdr",$file); -open (FI2,$fi); -open (FO,">test2"); -sysseek (FI2,$offset,0); -sysread (FI2,$temp,3000000); -syswrite (FO,$temp,3000000); -close (FI2); -close (FO); - -system ("pes2av_pes test2 > test 2>/dev/null"); -open (PVA,"/usr/local/bin/pvademux.old . test 2>&1 |"); - -@a=<PVA>; close PVA; -@b=split (/\s/,$a[2]); - -if (!($b[4] =~ /\-/) && $b[4] < 2000) - { - unlink <test*>; - print "$index\n"; - exit 0; - } - -while (1) - { - if ($index == 0) - { - $add = 1; - } - if ($add = -1) - { - $index--; - &prevI; - } - else - { - nextI; - } - $fi = sprintf ("%03d.vdr",$file); - open (FI2,$fi); - open (FO,">test2"); - sysseek (FI2,$offset,0); - sysread (FI2,$temp,3000000); - syswrite (FO,$temp,3000000); - close (FI2); - close (FO); - -system ("/usr/local/bin/pes2av_pes test2 > test 2>/dev/null"); -open (PVA,"/usr/local/bin/pvademux.old . test 2>&1 |"); - -@a=<PVA>; close PVA; -@b=split (/\s/,$a[2]); - -if (!($b[4] =~ /\-/) && $b[4] < 2000) - { - unlink <test*>; - if ($index < 0) - { - $index *= -1; - } - print "$index\n"; - exit 0; - } -} diff --git a/Tools/schnitt/schnitt4.pl b/Tools/schnitt/schnitt4.pl deleted file mode 100755 index 75f2ad1..0000000 --- a/Tools/schnitt/schnitt4.pl +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/perl - -open (FI,$ARGV[0]) or die "Kann Input-Datei nicht oeffnen"; -$count = 1; - -while (<FI>) - { - chomp; - $char = sprintf ("%c",$count + 96); - print "Cutting from/to $_ into /x2/clips/$char\n"; - system ("/usr/local/bin/my/schnitt2.pl $_ > /x2/clips/$char"); - $count++; - } diff --git a/Tools/schnitt/schnitt5.pl b/Tools/schnitt/schnitt5.pl deleted file mode 100755 index 7626ab5..0000000 --- a/Tools/schnitt/schnitt5.pl +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/perl -require "/usr/local/bin/my/schnittcommon.pli"; - -open (INDEX,"index.vdr"); -$index = $ARGV[0] - 15000; -&nextI; - -$file1 = $file; - -$index += 30000; -&nextI; - -$file2 = $file; - -print "$file1 $file2\n"; - diff --git a/Tools/schnitt/schnitt6.pl b/Tools/schnitt/schnitt6.pl deleted file mode 100755 index 92d9eb4..0000000 --- a/Tools/schnitt/schnitt6.pl +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/perl - -open (FI,"a"); - -while (<FI>) -{ - open (SCH,"/usr/local/bin/my/schnitt5.pl $_|"); - $files = <SCH>; - chomp $files; - ($a,$b) = split (/\s/,$files); - $files[$a] = 1; - $files[$b] = 1; - close (SCH); -} - -while (<0*.vdr>) -{ - $_ =~ /\d(\d\d)\.vdr/; - if ($files[$1]) - { - print "Keeping $1\n"; - } - else - { - print "Deleting $_\n"; - unlink $_; - } -} - -close (FI); diff --git a/Tools/schnitt/schnittcommon.pli b/Tools/schnitt/schnittcommon.pli deleted file mode 100755 index f221f41..0000000 --- a/Tools/schnitt/schnittcommon.pli +++ /dev/null @@ -1,64 +0,0 @@ -sub nextI - { - if (!$size) - { - $size = -s INDEX; - } - local ($a,$b,$c,$dummy); - $cond = 0; - seek (INDEX,$index * 8,0); - - while ($cond == 0) - { - &readnext; - if ($frame == 1) - { - $cond = 1; - } - else - { - $index++; - if ($index > ($size/8-1)) - { - $index = $size/8-1; - &prevI; - print "$index\n"; - exit 1; - } - } - } - } - -sub readnext - { - read (INDEX,$a,4); - read (INDEX,$b,1); - read (INDEX,$c,1); - read (INDEX,$dummy,2); - $offset = unpack ("L",$a); - $frame = unpack ("C",$b); - $file = unpack ("C",$c); - } - -sub prevI - { - local ($a,$b,$c,$dummy); - $cond = 0; - seek (INDEX,$index * 8,0); - - while ($cond == 0) - { - &readnext; - if ($frame == 1) - { - $cond = 1; - } - else - { - $index--; - seek (INDEX,$index * 8,0); - } - } - } - -1; diff --git a/Tools/schnitt/show b/Tools/schnitt/show deleted file mode 100755 index bfcc58a..0000000 --- a/Tools/schnitt/show +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -cd /x2/temp -while true -do - if [ -f newpic ]; then - killall xli - rm -f newpic - xli output000.ppm & - fi -sleep 24h -done diff --git a/Tools/schnitt/unsort b/Tools/schnitt/unsort deleted file mode 100755 index 83adfb6..0000000 --- a/Tools/schnitt/unsort +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/perl - -while (<>) -{ - $h{$_}=1; -} - -foreach $key (sort shuffle keys %h) -{ - print $key; -} - -sub shuffle { - $ran = rand(1); - - if ($ran > 0.5) - { - return -1; - } - else - { - return 1; - } -} - diff --git a/Tools/schnitt/vdr-remote.pl b/Tools/schnitt/vdr-remote.pl deleted file mode 100755 index 32d408e..0000000 --- a/Tools/schnitt/vdr-remote.pl +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl -w - -use strict; -use Socket; - -my ($dest, $port, $iaddr, $paddr, $proto, $line); - -$dest = "localhost"; -$port = "2001"; - -$iaddr = inet_aton($dest) || Error("no host: $dest"); -$paddr = sockaddr_in($port, $iaddr); - -$proto = getprotobyname('tcp'); -socket(SOCK, PF_INET, SOCK_STREAM, $proto) || Error("socket: $!"); -connect(SOCK, $paddr) || Error("connect: $!"); -select (SOCK); $| = 1; -$a=<SOCK>; - -for (;;) - { - open (FI,"/tmp/vdr-keys"); - while (<FI>) - { - chomp; - print "$_\r\n"; - $a=<SOCK>; - } - close (FI); - } - -print "quit\r\n"; -$a=<SOCK>; -close (SOCK) || Error("close: $!"); - -sub Error -{ - print STDERR "@_\n"; - exit 0; -} diff --git a/Tools/schnitt/vdr2 b/Tools/schnitt/vdr2 deleted file mode 100755 index 96557bf..0000000 --- a/Tools/schnitt/vdr2 +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -irpty ~/.lircrc-vdr -- vdr -c /home/ms/.vdr -v /video/video0 diff --git a/Tools/schnitt/vmount b/Tools/schnitt/vmount deleted file mode 100755 index ab16e45..0000000 --- a/Tools/schnitt/vmount +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -count=1 -cond=0 - -if [ -f "$1" ]; then - mount "$1" /mnt/1 -o loop - cond=1 -else - while [ "$cond" != "1" ] - do - if [ -f "$1$count" ]; then - mount "$1$count" /mnt/$count -o loop - else - cond=1 - fi - let count=count+1 - done -fi diff --git a/Tools/statdvb2vdr/ch.pl b/Tools/statdvb2vdr/ch.pl deleted file mode 100644 index 91e918d..0000000 --- a/Tools/statdvb2vdr/ch.pl +++ /dev/null @@ -1,250 +0,0 @@ -#!/usr/bin/perl - -# Reads the file statdvb.dat produced by the Siemens windows -# software (1.50), which contains the scanned channels of an -# DVB-C (-S). The file ist located in the windows directory. -# -# Output is suitable for VDR (channels.conf). Only tested for -# the cable version. Should work with slight modifications for -# the sat version. -# -# 8. März 2001 - Hans-Peter Raschke - - -# file structure derived from "DvbGlobalDef.h" of the Siemens -# DVB kit. - -# typedef int TABLETYPE; -# enum TunStandard -# { -# PAL_BG, //B/G stereo or mono -# PAL_I, //I mono (with Nicam stereo) -# PAL_DK, //D/K mono -# SECAM_L, //L mono (with Nicam stereo) -# SECAM_LI, //Secam L’ (with Nicam stereo) -# SECAM_DK, -# SECAM_BG, -# NTSC_M, -# DVB_C, -# DVB_S, -# DVB_T -# }; -# -# typedef struct TunProgDataTag //xx bytes+1string -# { -# int nNumber; //logical number of the program -# DWORD dwFrequency; //frequency in khz -# CString csName; //name of the program -# TunStandard eStandard; //standard of the program -# DWORD dwExtraInfo; //specific info, like teletext,reserved data -# //0x8 == external input 1-CVBS -# //0x10 == external input 2-Y/C -# //0x20 == scrambled Program stream -# //0x40 == ASTRA Sattable -# //0x80 == Eutelsat Sattable -# //0xC0 == Sattable from File -# //0x100 == Pulsed switch to other satellite dish -# //0x1000-0xF000 = Other Satellite Nr(if Sattable from File) -# //Digital only params beginning from here -# WORD ProgNr; //DVB Nr for the prog (PAS related) -# WORD wTS_ID; //Transport-Stream ID orig. -# WORD wNW_ID; //Network ID orig. -# WORD wService_ID; //Service /Programm Id -# BYTE nModulation; //Modulation-Type QAM,QPSK,other -# BYTE nFEC_outerinner; //outer(high nibble) and inner(low n.) -# DWORD dwSymbolrate; //in symbol/s -# BOOL b22kHz; //east or west(TRUE) position in Sat -# BOOL bVertical_pos; //horizontal or vertical(TRUE) position in SAT -# BYTE nProgtype; //type of service (e.g. tv, radio) -# WORD wVideo_PID; //video-pid of the channel -# WORD wAudio_PID; //audio-pid of the channel -# WORD wPMT_PID; //PID of the associated PMT -# WORD wTxt_PID; //teletext PID for the program -# WORD wSubtitling_PID; //subtitling PID for the program -# WORD wData_PID; //PID for data broadcast -# BYTE nIPFilter; //filter for different ip's -# DWORD dwReserved1; //Shows some extended Information LOWORD=DataBroadcast_Id, -# //MSB showing Databroadcast, (HIWORD & 0xFF)=ComponentTag from the stream ident desc -# DWORD dwReserved2; //reserved dword -# }DVBTunProgData; -# - -use strict; -use FileHandle; - -# for a full dump -my @varNames = ("nNumber", # logical number of the program - "dwFrequency", # frequency in khz - "csName", # name of the program - "eStandard", # standard of the program - "dwExtraInfo", # specific info, like teletext,reserved data - # 0x8 == external input 1-CVBS - # 0x10 == external input 2-Y/C - # 0x20 == scrambled Program stream - # 0x40 == ASTRA Sattable - # 0x80 == Eutelsat Sattable - # 0xC0 == Sattable from File - # 0x100 == Pulsed switch to other satellite dish - # 0x1000-0xF000 = Other Satellite Nr(if Sattable from File) - "ProgNr", # DVB Nr for the prog (PAS related) - "wTS_ID", # Transport-Stream ID orig. - "wNW_ID", # Network ID orig. - "wService_ID", # Service /Programm Id - "nModulation", # Modulation-Type QAM,QPSK,other - "nFEC_outerinner", # outer(high nibble) and inner(low n.) - "dwSymbolrate", # in symbol/s - "b22kHz", # east or west(TRUE) position in Sat - "bVertical_pos", # horizontal or vertical(TRUE) position in SAT - "nProgtype", # type of service (e.g. tv, radio) - "wVideo_PID", # video-pid of the channel - "wAudio_PID", # audio-pid of the channel - "wPMT_PID", # PID of the associated PMT - "wTxt_PID", # teletext PID for the program - "wSubtitling_PID", # subtitling PID for the program - "wData_PID"); # PID for data broadcast - -my @outVar = ("csName", - "dwFrequency", - "bVertical_pos", - "b22kHz", - "dwSymbolrate", - "wVideo_PID", - "wAudio_PID", - "wTxt_PID", - "dwExtraInfo", - "ProgNr"); - -# channels that need a valid smartcard -my @addCrypted = ("Extreme Sport", - "Bloomberg", - "Fashion TV", - "BET ON JAZZ", - "LANDSCAPE", - "Einstein", - "Single TV"); - -my @chNames = (); # list of scanned channels -my $camNo = 1; # number of CI/CAM to use -my %chData; # all channel data -my $buff; # input buffer -my $fh = new FileHandle("$ARGV[0]") or die "Datei $ARGV[0] nicht gefunden!"; - -binmode($fh); # could be run on windows -$fh->seek(4, 0); # skip id - -my $chCnt = 0; -while (!$fh->eof()) { - $chCnt++; - - last if ($fh->read($buff, 7) != 7); - my ($nNumber, - $dwFrequency, - $sLen - ) = unpack("SLC", $buff); - - last if ($fh->read($buff, $sLen) != $sLen); - my ($csName) = unpack("A$sLen", $buff); - $csName =~ s/:/./g; - $csName =~ s/^\s+//; - $csName =~ s/\s+$//; - - last if ($fh->read($buff, 54) != 54); - my ($eStandard, - $dwExtraInfo, - $ProgNr, - $wTS_ID, - $wNW_ID, - $wService_ID, - $nModulation, - $nFEC_outerinner, - $dwSymbolrate, - $b22kHz, - $bVertical_pos, - $nProgtype, - $wVideo_PID, - $wAudio_PID, - $wPMT_PID, - $wTxt_PID, - $wSubtitling_PID, - $wData_PID - ) = unpack("LLSSSSCCLLLCSSSSSS", $buff); - - # some modifications for VDR - $dwFrequency /= 1000; - $bVertical_pos = $bVertical_pos ? "v" : "h"; - $dwSymbolrate /= 1000; - $dwExtraInfo = ($dwExtraInfo == 32 || grep(($_ cmp $csName) == 0, @addCrypted)) ? $camNo : 0; - - my $x = 1; - my $orgName = $csName; - while (exists($chData{$csName})) { - $csName = "$orgName" . "_$x"; - $x++; - } - push(@chNames, $csName); - - my %tmp = ("nNumber" => $nNumber, - "dwFrequency" => $dwFrequency, - "csName" => $orgName, - "eStandard" => $eStandard, - "dwExtraInfo" => $dwExtraInfo, - "ProgNr" => $ProgNr, - "wTS_ID" => $wTS_ID, - "wNW_ID" => $wNW_ID, - "wService_ID" => $wService_ID, - "nModulation" => $nModulation, - "nFEC_outerinner" => $nFEC_outerinner, - "dwSymbolrate" => $dwSymbolrate, - "b22kHz" => $b22kHz, - "bVertical_pos" => $bVertical_pos, - "nProgtype" => $nProgtype, - "wVideo_PID" => $wVideo_PID, - "wAudio_PID" => $wAudio_PID, - "wPMT_PID" => $wPMT_PID, - "wTxt_PID" => $wTxt_PID, - "wSubtitling_PID" => $wSubtitling_PID, - "wData_PID" => $wData_PID); - $chData{$csName} = {%tmp}; -} - -print STDERR "$chCnt channels found!\n"; - -# now we print the channels.conf -# crypted TV -print ":verschlüsselte Fernsehprogramme\n"; -for my $n (@chNames) { - my %tmp = %{$chData{$n}}; - printChannel($chData{$n}) if ($tmp{"nProgtype"} == 1 && $tmp{"dwExtraInfo"}); -} - -# TV -print ":Fernsehprogramme\n"; -for my $n (@chNames) { - my %tmp = %{$chData{$n}}; - printChannel($chData{$n}) if ($tmp{"nProgtype"} == 1 && !$tmp{"dwExtraInfo"}); -} - -# crypted radio -print ":verschlüsselte Radioprogramme\n"; -for my $n (@chNames) { - my %tmp = %{$chData{$n}}; - printChannel($chData{$n}) if ($tmp{"nProgtype"} == 2 && $tmp{"dwExtraInfo"}); -} - -# radio -print ":Radioprogramme\n"; -for my $n (@chNames) { - my %tmp = %{$chData{$n}}; - printChannel($chData{$n}) if ($tmp{"nProgtype"} == 2 && !$tmp{"dwExtraInfo"}); -} - -sub printChannel { - my $p = shift; - my @tmp = (); - - for my $n (@outVar) { - push(@tmp, ${$p}{$n}); - } - - print join(":", @tmp), "\n"; -} diff --git a/Tools/xtvrc2vdr/Makefile b/Tools/xtvrc2vdr/Makefile deleted file mode 100644 index be50541..0000000 --- a/Tools/xtvrc2vdr/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Makefile for xtvrc2vdr utility -# - -OBJS = xtvrc2vdr.o - -%.o: %.c - gcc -g -O2 -Wall -c $(DEFINES) $< - -all: xtvrc2vdr - -xtvrc2vdr: $(OBJS) - gcc -g -O2 $(OBJS) -o xtvrc2vdr - -clean: - -rm -f $(OBJS) xtvrc2vdr diff --git a/Tools/xtvrc2vdr/hotbird.conf b/Tools/xtvrc2vdr/hotbird.conf deleted file mode 100644 index 3431d5c..0000000 --- a/Tools/xtvrc2vdr/hotbird.conf +++ /dev/null @@ -1,191 +0,0 @@ -TV Polonia:10719:v:1:27500:163:92:0:0 -Credit Agricole:10834:v:1:27500:5321:5333:0:0 -La Chaine Parlementaire:10873:v:1:27500:1020:1030:0:0 -TMT:10892:v:1:27500:163:92:0:0 -Multivision Accueil:10911:v:1:27500:320:330:0:0 -RTL:11054:v:1:27500:160:80:0:0 -VOX:11054:v:1:27500:500:501:0:0 -Sat 1 A:11054:v:1:27500:511:512:0:0 -RTL II Austria:11054:v:1:27500:520:521:0:0 -NBC Europe:11054:v:1:27500:550:551:0:0 -ZDF:11054:v:1:27500:570:571:0:0 -K-T9:11054:v:1:27500:580:581:0:0 -Sat 1 Schweiz:11604:v:1:27500:101:102:0:0 -MKT9:11623:v:1:27500:222:242:0:0 -Olisat TV Promo:11623:v:1:27500:226:246:0:0 -Bloomberg TV Germany:11642:v:1:27500:1460:1420:0:0 -Bloomberg TV UK:11642:v:1:27500:1560:1520:0:0 -SAT 7:11642:v:1:27500:1660:1620:0:0 -Multivision 1:11662:v:1:27500:120:130:0:0 -Dubai EDT9:11746:v:1:27500:4130:4131:0:0 -Dubai Sport Channel:11746:v:1:27500:4386:4387:0:0 -Dubai Business Channel:11746:v:1:27500:4642:4643:0:0 -Dubai EDT9:11746:v:1:27500:4898:4899:0:0 -RAI Uno:11766:v:1:27500:160:80:0:0 -RAI Due:11766:v:1:27500:161:84:0:0 -RAI Tre:11766:v:1:27500:162:88:0:0 -RAI Mosaico:11766:v:1:27500:518:8191:0:0 -RAI SportSat:11804:v:1:27500:512:650:0:0 -RAI Nettuno Sat 2:11804:v:1:27500:513:651:0:0 -RAI Educational:11804:v:1:27500:514:652:0:0 -TelePace :11804:v:1:27500:515:653:0:0 -RAI News24:11804:v:1:27500:516:654:0:0 -Camera dei Deputati:11804:v:1:27500:517:655:0:0 -SAT 2000:11804:v:1:27500:518:656:0:0 -RAI NettunoSat 1:11804:v:1:27500:519:657:0:0 -ERT Sat:11823:v:1:27500:521:740:0:0 -INT9:11843:v:1:27500:2324:2325:0:0 -TVL:11843:v:1:27500:2441:2442:0:0 -Team TV :11881:v:1:27500:2305:2306:0:0 -Ante Prima:11881:v:1:27500:2435:2436:0:0 -SNAI:11881:v:1:27500:2561:2562:0:0 -Italia 1 :11919:v:1:27500:512:650:0:0 -Canale 5:11919:v:1:27500:513:660:0:0 -Rete 4 :11919:v:1:27500:514:670:0:0 -ART Europe:12015:v:1:27500:164:96:0:0 -ESC 2:12015:v:1:27500:166:104:0:0 -ART Iqra:12015:v:1:27500:168:112:0:0 -Vetrina D+:12034:v:1:27500:166:105:0:0 -D+ Info:12073:v:1:27500:160:80:0:0 -Palco Promo:12073:v:1:27500:161:84:0:0 -Vacaciones T9:12092:v:1:27500:4112:4113:0:0 -TvL - TV Locale:12092:v:1:27500:4160:4161:0:0 -Satisfaction T9:12092:v:1:27500:4192:4193:0:0 -TVE Internacional:12092:v:1:27500:4208:4209:0:0 -TVG - TV de Galicia :12092:v:1:27500:4224:4225:0:0 -La Cadena Del Milagro:12092:v:1:27500:4368:4369:0:0 -Fiesta:12092:v:1:27500:4432:4433:0:0 -Visions Europe:12092:v:1:27500:4416:4417:0:0 -SateliTV/TV Sex Channel:12092:v:1:27500:4480:4481:0:0 -Krisma:12111:v:1:27500:200:201:0:0 -NT9:12111:v:1:27500:210:211:0:0 -Armenia TV 1:12111:v:1:27500:240:241:0:0 -SMAU Channel :12111:v:1:27500:260:261:0:0 -JSC - Al Jazeera Satellite Ch :12111:v:1:27500:270:271:0:0 -Il Tirreno Sat:12111:v:1:27500:280:301:0:0 -Coming Soon T9:12111:v:1:27500:310:311:0:0 -Alice:12149:v:1:27500:160:161:0:0 -Nuvolari Promo:12149:v:1:27500:176:177:0:0 -CCTV 4:12169:v:1:27500:516:690:0:0 -Kanali Vuolis:12169:v:1:27500:517:700:0:0 -Nova Promo:12169:v:1:27500:521:740:0:0 -ERT Sat :12188:v:1:27500:514:652:0:0 -Kanali Voulis:12188:v:1:27500:515:653:0:0 -OTE Promo:12188:v:1:27500:517:655:0:0 -TV 5 Europe:12245:v:1:27500:121:131:0:0 -Fashion T9:12245:v:1:27500:123:133:0:0 -TV Ajara:12245:v:1:27500:127:137:0:0 -Telekom T9:12265:v:1:27500:1460:1420:0:0 -SLO-TV1:12303:v:1:27500:200:201:0:0 -Polonia 1:12303:v:1:27500:205:206:0:0 -Super 1:12303:v:1:27500:207:208:0:0 -Sicilia Internacional:12303:v:1:27500:210:211:0:0 -SicilSat:12303:v:1:27500:225:226:0:0 -TBNE Italy:12303:v:1:27500:230:231:0:0 -Countdown T9:12303:v:1:27500:235:236:0:0 -Napoli International:12303:v:1:27500:240:241:0:0 -Magic T9:12303:v:1:27500:245:246:0:0 -TEST:12341:v:1:27500:165:108:0:0 -Colour Bars:12380:v:1:27500:3022:3032:0:0 -Tele 24 :12380:v:1:27500:3023:3033:0:0 -Abu Dhabi TV :12380:v:1:27500:3024:3034:0:0 -LCA:12380:v:1:27500:3025:3035:0:0 -RTV Montenegro:12380:v:1:27500:3026:3036:0:0 -SRG SSR Sat Access :12399:v:1:27500:165:98:0:0 -Jam-e-Jam Network 1 (IRIB 1):12437:v:1:27500:160:80:0:0 -Jam-e-Jam Network 2 (IRIB 2):12437:v:1:27500:161:82:0:0 -Sahar University Network:12437:v:1:27500:162:84:0:0 -Maharishi Open University:12476:v:1:27500:42:43:0:0 -Europe by Satellite:12476:v:1:27500:101:201:0:0 -Pink Backup:12476:v:1:27500:308:256:0:0 -Mizik Tropical:12476:v:1:27500:435:436:0:0 -TLI info card:12476:v:1:27500:771:768:0:0 -Liberty T9:12476:v:1:27500:941:942:0:0 -HRT TV 1:12520:v:1:27500:100:101:0:0 -HRT National:12520:v:1:27500:107:108:0:0 -BVN TV:12520:v:1:27500:210:211:0:0 -Sicilia International:12520:v:1:27500:501:502:0:0 -Sardegna Uno:12520:v:1:27500:503:504:0:0 -TGRT:12520:v:1:27500:505:506:0:0 -Euro Mediterraneo:12520:v:1:27500:510:511:0:0 -WWWTravel T9:12540:v:1:27500:1180:1183:0:0 -WWWTravel T9:12540:v:1:27500:1180:1184:0:0 -WWWTravel T9:12540:v:1:27500:1180:1185:0:0 -Bulgaria T9:12540:v:1:27500:4612:4613:0:0 -MC Sat Monte Carlo:12540:v:1:27500:5126:5122:0:0 -MBC:12597:v:1:27500:160:80:0:0 -SIMA-YEH-MOGHAVEMENT:12597:v:1:27500:161:84:0:0 -NITV (National Iran TV ):12597:v:1:27500:163:92:0:0 -BET International:12597:v:1:27500:167:108:0:0 -JSTV 2 Info Card:12597:v:1:27500:2011:2012:0:0 -EuroNews:12597:v:1:27500:2221:2231:0:0 -EuroNews:12597:v:1:27500:2221:2232:0:0 -EuroNews:12597:v:1:27500:2221:2233:0:0 -EuroNews:12597:v:1:27500:2221:2234:0:0 -EuroNews:12597:v:1:27500:2221:2235:0:0 -EuroNews:12597:v:1:27500:2221:2236:0:0 -EuroNews:12597:v:1:27500:2221:2237:0:0 -Canal Agro Rual:12597:v:1:27500:2321:2331:0:0 -MMO9:12616:v:1:27500:2561:2562:0:0 -Dubai Sport Channel:12654:v:1:27500:1060:1020:0:0 -Sharjah TV :12654:v:1:27500:1160:1120:0:0 -Qatar T9:12654:v:1:27500:1260:1220:0:0 -Saudi Channel 1 :12654:v:1:27500:1360:1320:0:0 -Kuwait Space Channel :12654:v:1:27500:1460:1420:0:0 -Libya T9:12654:v:1:27500:1560:1520:0:0 -Sudan T9:12654:v:1:27500:1660:1620:0:0 -Oman T9:12654:v:1:27500:1760:1720:0:0 -Jordan Satellite Channel:12654:v:1:27500:1860:1820:0:0 -Iraq Satellite Channel:12654:v:1:27500:1960:1920:0:0 -Thai TV 5 Global Network :12673:v:1:27500:200:201:0:0 -DigItaly:12673:v:1:27500:220:221:0:0 -Studio Europa:12673:v:1:27500:230:231:0:0 -Game Network:12673:v:1:27500:291:292:0:0 -Video Italia :12673:v:1:27500:340:341:0:0 -Telemarket:12673:v:1:27500:350:351:0:0 -Evision:12673:v:1:27500:360:361:0:0 -AB Passion:12692:v:1:27500:160:80:0:0 -Onyx T9:12692:v:1:27500:161:84:0:0 -EWTN:10723:v:1:29900:1001:1201:0:0 -Test (Newslynx):10723:v:1:29900:1002:1202:0:0 -MTA International:10723:v:1:29900:1004:1204:0:0 -J TV Test:10992:v:1:27500:2436:2437:0:0 -Bloomberg UK Test Card:11242:v:1:27500:162:88:0:0 -Channel SUN Test (KBT):11604:v:1:27500:111:112:0:0 -Racing Channel Test:11623:v:1:27500:223:243:0:0 -Test Card (pgm 4):11623:v:1:27500:224:244:0:0 -Olisat TLC test card:11623:v:1:27500:225:245:0:0 -Channel SUN Test (KBT):11623:v:1:27500:229:249:0:0 -Rai way 3 test card:11766:v:1:27500:164:96:0:0 -Rai way 1 test card:11766:v:1:27500:515:653:0:0 -Rai way 2 test card:11766:v:1:27500:516:654:0:0 -Test (Local Satellite):12092:v:1:27500:4176:4177:0:0 -Retelsat Test:12092:v:1:27500:4464:4465:0:0 -AIT Test Card:12111:v:1:27500:220:221:0:0 -Fucino Test Card:12111:v:1:27500:230:231:0:0 -Espresso(Antenna Hungaria Test Card):12149:v:1:27500:36:37:0:0 -Antenna Hungaria Test Card:12149:v:1:27500:96:97:0:0 -Antenna Hungaria Test Card:12149:v:1:27500:112:113:0:0 -Leonardo (Antenna Hungaria Test):12149:v:1:27500:128:129:0:0 -Test (Sahar):12437:v:1:27500:163:86:0:0 -Test 1:12437:v:1:27500:164:88:0:0 -Test 2:12437:v:1:27500:165:90:0:0 -CNES-Toulouse test:12558:v:1:27500:6143:6142:0:0 -Test Card:12597:v:1:27500:161:84:0:0 -FEED:11242:v:1:27500:167:108:0:0 -Feed :11623:v:1:27500:221:241:0:0 -Quantum 24 :10913:v:1:3998:1160:1120:0:0 -Quantum 24:10913:v:1:3998:1160:1220:0:0 -VIVA Polska:11131:v:1:4340:98:99:0:0 -Deutsche Welle T9:11196:v:1:9096:101:102:0:0 -Canal 24 Horas :11205:v:1:4000:4130:4131:0:0 -TV 5 Asie :11338:v:1:5632:512:640:0:0 -RAI4IFA:11548:v:1:4398:512:650:0:0 -Pro TV International:12201:v:1:5632:1160:1120:0:0 -TVN Polnoc:12211:v:1:5632:4194:4195:0:0 -WorldNet Europe:12484:v:1:8298:4260:4220:0:0 -WorldNet Europe:12484:v:1:8298:4360:4320:0:0 -WorldNet Europe:12484:v:1:8298:4460:4420:0:0 -WorldNet Europe:12484:v:1:8298:4560:4520:0:0 -TVN Polnoc:12573:v:1:5632:4194:4195:0:0 -APTN:12582:v:1:5632:308:256:0:0 diff --git a/Tools/xtvrc2vdr/xtvrc.hotbird b/Tools/xtvrc2vdr/xtvrc.hotbird deleted file mode 100644 index c809eee..0000000 --- a/Tools/xtvrc2vdr/xtvrc.hotbird +++ /dev/null @@ -1,1337 +0,0 @@ -* -Channel: TV Polonia -Frequency: 10719 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 163 92 0 10 - -* -Channel: Credit Agricole -Frequency: 10834 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 5321 5333 0 10 - -* -Channel: La Chaine Parlementaire -Frequency: 10873 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 1020 1030 0 10 - -* -Channel: TMT -Frequency: 10892 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 163 92 0 10 - -* -Channel: Multivision Accueil -Frequency: 10911 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 320 330 0 10 - -* -Channel: RTL -Frequency: 11054 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 4 160 80 0 10 - -* -Channel: VOX -Frequency: 11054 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 4 500 501 0 10 - -* -Channel: Sat 1 A -Frequency: 11054 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 4 511 512 0 10 - -* -Channel: RTL II Austria -Frequency: 11054 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 4 520 521 0 10 - -* -Channel: NBC Europe -Frequency: 11054 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 4 550 551 0 10 - -* -Channel: ZDF -Frequency: 11054 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 4 570 571 0 10 - -* -Channel: K-T9 -Frequency: 11054 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 4 580 581 0 10 - -* -Channel: Sat 1 Schweiz -Frequency: 11604 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 4 101 102 0 10 - -* -Channel: MKT9 -Frequency: 11623 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 222 242 0 10 - -* -Channel: Olisat TV Promo -Frequency: 11623 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 226 246 0 10 - -* -Channel: Bloomberg TV Germany -Frequency: 11642 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1460 1420 0 10 - -* -Channel: Bloomberg TV UK -Frequency: 11642 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1560 1520 0 10 - -* -Channel: SAT 7 -Frequency: 11642 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1660 1620 0 10 - -* -Channel: Multivision 1 -Frequency: 11662 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 120 130 0 10 - -* -Channel: Dubai EDT9 -Frequency: 11746 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4130 4131 0 10 - -* -Channel: Dubai Sport Channel -Frequency: 11746 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4386 4387 0 10 - -* -Channel: Dubai Business Channel -Frequency: 11746 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4642 4643 0 10 - -* -Channel: Dubai EDT9 -Frequency: 11746 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4898 4899 0 10 - -* -Channel: RAI Uno -Frequency: 11766 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 160 80 0 10 - -* -Channel: RAI Due -Frequency: 11766 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 161 84 0 10 - -* -Channel: RAI Tre -Frequency: 11766 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 162 88 0 10 - -* -Channel: RAI Mosaico -Frequency: 11766 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 518 8191 0 10 - -* -Channel: RAI SportSat -Frequency: 11804 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 512 650 0 10 - -* -Channel: RAI Nettuno Sat 2 -Frequency: 11804 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 513 651 0 10 - -* -Channel: RAI Educational -Frequency: 11804 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 514 652 0 10 - -* -Channel: TelePace -Frequency: 11804 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 515 653 0 10 - -* -Channel: RAI News24 -Frequency: 11804 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 516 654 0 10 - -* -Channel: Camera dei Deputati -Frequency: 11804 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 517 655 0 10 - -* -Channel: SAT 2000 -Frequency: 11804 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 518 656 0 10 - -* -Channel: RAI NettunoSat 1 -Frequency: 11804 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 519 657 0 10 - -* -Channel: ERT Sat -Frequency: 11823 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 521 740 0 10 - -* -Channel: INT9 -Frequency: 11843 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2324 2325 0 10 - -* -Channel: TVL -Frequency: 11843 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2441 2442 0 10 - -* -Channel: Team TV -Frequency: 11881 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2305 2306 0 10 - -* -Channel: Ante Prima -Frequency: 11881 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2435 2436 0 10 - -* -Channel: SNAI -Frequency: 11881 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2561 2562 0 10 - -* -Channel: Italia 1 -Frequency: 11919 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 512 650 0 10 - -* -Channel: Canale 5 -Frequency: 11919 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 513 660 0 10 - -* -Channel: Rete 4 -Frequency: 11919 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 514 670 0 10 - -* -Channel: ART Europe -Frequency: 12015 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 164 96 0 10 - -* -Channel: ESC 2 -Frequency: 12015 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 166 104 0 10 - -* -Channel: ART Iqra -Frequency: 12015 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 168 112 0 10 - -* -Channel: Vetrina D+ -Frequency: 12034 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 166 105 0 10 - -* -Channel: D+ Info -Frequency: 12073 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 160 80 0 10 - -* -Channel: Palco Promo -Frequency: 12073 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 161 84 0 10 - -* -Channel: Vacaciones T9 -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4112 4113 0 10 - -* -Channel: TvL - TV Locale -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4160 4161 0 10 - -* -Channel: Satisfaction T9 -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4192 4193 0 10 - -* -Channel: TVE Internacional -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4208 4209 0 10 - -* -Channel: TVG - TV de Galicia -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4224 4225 0 10 - -* -Channel: La Cadena Del Milagro -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4368 4369 0 10 - -* -Channel: Fiesta -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4432 4433 0 10 - -* -Channel: Visions Europe -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4416 4417 0 10 - -* -Channel: SateliTV/TV Sex Channel -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4480 4481 0 10 - -* -Channel: Krisma -Frequency: 12111 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 200 201 0 10 - -* -Channel: NT9 -Frequency: 12111 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 210 211 0 10 - -* -Channel: Armenia TV 1 -Frequency: 12111 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 240 241 0 10 - -* -Channel: SMAU Channel -Frequency: 12111 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 260 261 0 10 - -* -Channel: JSC - Al Jazeera Satellite Ch -Frequency: 12111 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 270 271 0 10 - -* -Channel: Il Tirreno Sat -Frequency: 12111 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 280 301 0 10 - -* -Channel: Coming Soon T9 -Frequency: 12111 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 310 311 0 10 - -* -Channel: Alice -Frequency: 12149 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 160 161 0 10 - -* -Channel: Nuvolari Promo -Frequency: 12149 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 176 177 0 10 - -* -Channel: CCTV 4 -Frequency: 12169 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 516 690 0 10 - -* -Channel: Kanali Vuolis -Frequency: 12169 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 517 700 0 10 - -* -Channel: Nova Promo -Frequency: 12169 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 521 740 0 10 - -* -Channel: ERT Sat -Frequency: 12188 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 514 652 0 10 - -* -Channel: Kanali Voulis -Frequency: 12188 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 515 653 0 10 - -* -Channel: OTE Promo -Frequency: 12188 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 517 655 0 10 - -* -Channel: TV 5 Europe -Frequency: 12245 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 121 131 0 10 - -* -Channel: Fashion T9 -Frequency: 12245 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 123 133 0 10 - -* -Channel: TV Ajara -Frequency: 12245 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 127 137 0 10 - -* -Channel: Telekom T9 -Frequency: 12265 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 1460 1420 0 10 - -* -Channel: SLO-TV1 -Frequency: 12303 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 200 201 0 10 - -* -Channel: Polonia 1 -Frequency: 12303 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 205 206 0 10 - -* -Channel: Super 1 -Frequency: 12303 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 207 208 0 10 - -* -Channel: Sicilia Internacional -Frequency: 12303 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 210 211 0 10 - -* -Channel: SicilSat -Frequency: 12303 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 225 226 0 10 - -* -Channel: TBNE Italy -Frequency: 12303 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 230 231 0 10 - -* -Channel: Countdown T9 -Frequency: 12303 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 235 236 0 10 - -* -Channel: Napoli International -Frequency: 12303 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 240 241 0 10 - -* -Channel: Magic T9 -Frequency: 12303 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 245 246 0 10 - -* -Channel: TEST -Frequency: 12341 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 165 108 0 10 - -* -Channel: Colour Bars -Frequency: 12380 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 3022 3032 0 10 - -* -Channel: Tele 24 -Frequency: 12380 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 3023 3033 0 10 - -* -Channel: Abu Dhabi TV -Frequency: 12380 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 3024 3034 0 10 - -* -Channel: LCA -Frequency: 12380 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 3025 3035 0 10 - -* -Channel: RTV Montenegro -Frequency: 12380 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 3026 3036 0 10 - -* -Channel: SRG SSR Sat Access -Frequency: 12399 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 165 98 0 10 - -* -Channel: Jam-e-Jam Network 1 (IRIB 1) -Frequency: 12437 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 160 80 0 10 - -* -Channel: Jam-e-Jam Network 2 (IRIB 2) -Frequency: 12437 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 161 82 0 10 - -* -Channel: Sahar University Network -Frequency: 12437 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 162 84 0 10 - -* -Channel: Maharishi Open University -Frequency: 12476 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 42 43 0 10 - -* -Channel: Europe by Satellite -Frequency: 12476 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 101 201 0 10 - -* -Channel: Pink Backup -Frequency: 12476 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 308 256 0 10 - -* -Channel: Mizik Tropical -Frequency: 12476 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 435 436 0 10 - -* -Channel: TLI info card -Frequency: 12476 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 771 768 0 10 - -* -Channel: Liberty T9 -Frequency: 12476 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 941 942 0 10 - -* -Channel: HRT TV 1 -Frequency: 12520 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 100 101 0 10 - -* -Channel: HRT National -Frequency: 12520 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 107 108 0 10 - -* -Channel: BVN TV -Frequency: 12520 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 210 211 0 10 - -* -Channel: Sicilia International -Frequency: 12520 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 501 502 0 10 - -* -Channel: Sardegna Uno -Frequency: 12520 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 503 504 0 10 - -* -Channel: TGRT -Frequency: 12520 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 505 506 0 10 - -* -Channel: Euro Mediterraneo -Frequency: 12520 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 510 511 0 10 - -* -Channel: WWWTravel T9 -Frequency: 12540 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1180 1183 0 10 - -* -Channel: WWWTravel T9 -Frequency: 12540 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1180 1184 0 10 - -* -Channel: WWWTravel T9 -Frequency: 12540 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1180 1185 0 10 - -* -Channel: Bulgaria T9 -Frequency: 12540 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4612 4613 0 10 - -* -Channel: MC Sat Monte Carlo -Frequency: 12540 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 5126 5122 0 10 - -* -Channel: MBC -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 160 80 0 10 - -* -Channel: SIMA-YEH-MOGHAVEMENT -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 161 84 0 10 - -* -Channel: NITV (National Iran TV ) -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 163 92 0 10 - -* -Channel: BET International -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 167 108 0 10 - -* -Channel: JSTV 2 Info Card -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2011 2012 0 10 - -* -Channel: EuroNews -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2221 2231 0 10 - -* -Channel: EuroNews -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2221 2232 0 10 - -* -Channel: EuroNews -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2221 2233 0 10 - -* -Channel: EuroNews -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2221 2234 0 10 - -* -Channel: EuroNews -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2221 2235 0 10 - -* -Channel: EuroNews -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2221 2236 0 10 - -* -Channel: EuroNews -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2221 2237 0 10 - -* -Channel: Canal Agro Rual -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2321 2331 0 10 - -* -Channel: MMO9 -Frequency: 12616 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 2561 2562 0 10 - -* -Channel: Dubai Sport Channel -Frequency: 12654 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1060 1020 0 10 - -* -Channel: Sharjah TV -Frequency: 12654 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1160 1120 0 10 - -* -Channel: Qatar T9 -Frequency: 12654 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1260 1220 0 10 - -* -Channel: Saudi Channel 1 -Frequency: 12654 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1360 1320 0 10 - -* -Channel: Kuwait Space Channel -Frequency: 12654 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1460 1420 0 10 - -* -Channel: Libya T9 -Frequency: 12654 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1560 1520 0 10 - -* -Channel: Sudan T9 -Frequency: 12654 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1660 1620 0 10 - -* -Channel: Oman T9 -Frequency: 12654 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1760 1720 0 10 - -* -Channel: Jordan Satellite Channel -Frequency: 12654 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1860 1820 0 10 - -* -Channel: Iraq Satellite Channel -Frequency: 12654 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 1960 1920 0 10 - -* -Channel: Thai TV 5 Global Network -Frequency: 12673 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 200 201 0 10 - -* -Channel: DigItaly -Frequency: 12673 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 220 221 0 10 - -* -Channel: Studio Europa -Frequency: 12673 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 230 231 0 10 - -* -Channel: Game Network -Frequency: 12673 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 291 292 0 10 - -* -Channel: Video Italia -Frequency: 12673 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 340 341 0 10 - -* -Channel: Telemarket -Frequency: 12673 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 350 351 0 10 - -* -Channel: Evision -Frequency: 12673 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 360 361 0 10 - -* -Channel: AB Passion -Frequency: 12692 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 160 80 0 10 - -* -Channel: Onyx T9 -Frequency: 12692 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 161 84 0 10 - -* -Channel: EWTN -Frequency: 10723 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 29900 2 1001 1201 0 10 - -* -Channel: Test (Newslynx) -Frequency: 10723 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 29900 2 1002 1202 0 10 - -* -Channel: MTA International -Frequency: 10723 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 29900 2 1004 1204 0 10 - -* -Channel: J TV Test -Frequency: 10992 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 2436 2437 0 10 - -* -Channel: Bloomberg UK Test Card -Frequency: 11242 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 162 88 0 10 - -* -Channel: Channel SUN Test (KBT) -Frequency: 11604 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 4 111 112 0 10 - -* -Channel: Racing Channel Test -Frequency: 11623 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 223 243 0 10 - -* -Channel: Test Card (pgm 4) -Frequency: 11623 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 224 244 0 10 - -* -Channel: Olisat TLC test card -Frequency: 11623 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 225 245 0 10 - -* -Channel: Channel SUN Test (KBT) -Frequency: 11623 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 229 249 0 10 - -* -Channel: Rai way 3 test card -Frequency: 11766 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 164 96 0 10 - -* -Channel: Rai way 1 test card -Frequency: 11766 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 515 653 0 10 - -* -Channel: Rai way 2 test card -Frequency: 11766 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 1 516 654 0 10 - -* -Channel: Test (Local Satellite) -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4176 4177 0 10 - -* -Channel: Retelsat Test -Frequency: 12092 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 4464 4465 0 10 - -* -Channel: AIT Test Card -Frequency: 12111 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 220 221 0 10 - -* -Channel: Fucino Test Card -Frequency: 12111 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 230 231 0 10 - -* -Channel: Espresso(Antenna Hungaria Test Card) -Frequency: 12149 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 36 37 0 10 - -* -Channel: Antenna Hungaria Test Card -Frequency: 12149 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 96 97 0 10 - -* -Channel: Antenna Hungaria Test Card -Frequency: 12149 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 112 113 0 10 - -* -Channel: Leonardo (Antenna Hungaria Test) -Frequency: 12149 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 128 129 0 10 - -* -Channel: Test (Sahar) -Frequency: 12437 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 163 86 0 10 - -* -Channel: Test 1 -Frequency: 12437 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 164 88 0 10 - -* -Channel: Test 2 -Frequency: 12437 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 27500 2 165 90 0 10 - -* -Channel: CNES-Toulouse test -Frequency: 12558 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 6143 6142 0 10 - -* -Channel: Test Card -Frequency: 12597 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 161 84 0 10 - -* -Channel: FEED -Frequency: 11242 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 167 108 0 10 - -* -Channel: Feed -Frequency: 11623 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 27500 2 221 241 0 10 - -* -Channel: Quantum 24 -Frequency: 10913 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 3998 0 1160 1120 0 10 - -* -Channel: Quantum 24 -Frequency: 10913 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 3998 0 1160 1220 0 10 - -* -Channel: VIVA Polska -Frequency: 11131 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 4340 2 98 99 0 10 - -* -Channel: Deutsche Welle T9 -Frequency: 11196 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 9096 0 101 102 0 10 - -* -Channel: Canal 24 Horas -Frequency: 11205 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 4000 2 4130 4131 0 10 - -* -Channel: TV 5 Asie -Frequency: 11338 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 5632 2 512 640 0 10 - -* -Channel: RAI4IFA -Frequency: 11548 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 4398 6 512 650 0 10 - -* -Channel: Pro TV International -Frequency: 12201 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 5632 6 1160 1120 0 10 - -* -Channel: TVN Polnoc -Frequency: 12211 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 5632 2 4194 4195 0 10 - -* -Channel: WorldNet Europe -Frequency: 12484 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 8298 2 4260 4220 0 10 - -* -Channel: WorldNet Europe -Frequency: 12484 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 8298 2 4360 4320 0 10 - -* -Channel: WorldNet Europe -Frequency: 12484 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 8298 2 4460 4420 0 10 - -* -Channel: WorldNet Europe -Frequency: 12484 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 9 8298 2 4560 4520 0 10 - -* -Channel: TVN Polnoc -Frequency: 12573 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 5632 2 4194 4195 0 10 - -* -Channel: APTN -Frequency: 12582 -CBHC: 255 0 0 255 -NI: -1 0 -SAT: 10 5632 2 308 256 0 10 - diff --git a/Tools/xtvrc2vdr/xtvrc2vdr.c b/Tools/xtvrc2vdr/xtvrc2vdr.c deleted file mode 100644 index 772db66..0000000 --- a/Tools/xtvrc2vdr/xtvrc2vdr.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * * xtvrc2vdr.c: Converts 'xtvrc' files to 'vdr' channel format - * * - * * Copyright (C) 2000 Plamen Ganev - * * - * * This program is free software; you can redistribute it and/or - * * modify it under the terms of the GNU General Public License - * * as published by the Free Software Foundation; either version 2 - * * of the License, or (at your option) any later version. - * * - * * This program is distributed in the hope that it will be useful, - * * but WITHOUT ANY WARRANTY; without even the implied warranty of - * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * * GNU General Public License for more details. - * * - * * You should have received a copy of the GNU General Public License - * * along with this program; if not, write to the Free Software - * * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * * Or, point your browser to http://www.gnu.org/copyleft/gpl.html - * * - * * The author can be reached at pganev@comm.it - * * - * */ - - -#include <stdio.h> -#include <ctype.h> -#include <string.h> -#include <stdlib.h> - -#define MAX_LINE_LEN 1024 -#define MAX_NAME 100 -#define TOKS ": \n\r" -#define NAMETOKS ":\n\r" - -typedef struct { - char Name[MAX_NAME+1]; - int freq; - int color, hue, bright, saturation ; - int nitv, input ; - int pol, srate, fec, vpid, apid, lnbnum, type; -} CHANNEL_DATA ; - -void strlwr( char *s ){ - while ( s && *s ){ - *s = tolower(*s); - s++; - } -} - -int ReadChannel( FILE *f, CHANNEL_DATA *channel ) { - static char s[MAX_LINE_LEN+1]; - char *p; - - memset( channel, sizeof( CHANNEL_DATA ), 0 ) ; - - while ((p=fgets( s, MAX_LINE_LEN, f ))!=NULL){ -// printf("%s", s ) ; - if (s[0] == '*') - break ; - } - - if ( !p ) { /* EOF? */ -// printf("EOF\n"); - return 0 ; - } - - while (fgets( s, MAX_LINE_LEN, f )){ - if ( s[0] == '\n' ) - return channel->freq ? 1 : 0; - p = strtok( s, TOKS ) ; - if ( !p ) { - return 0; - } - strlwr( p ) ; - if ( !strcmp( p, "channel" )){ - p=strtok( NULL, NAMETOKS ); - while ( p && *p==' ') - p++; - strcpy( channel->Name, p ); -// printf("%d ", channel->freq ) ; - } else if ( !strcmp( p, "frequency")) { - channel->freq = atoi( p=strtok( NULL, TOKS )); -// printf("%d ", channel->freq ) ; - } else if ( !strcmp( p, "cbhc")) { - channel->color = atoi(p=strtok(NULL,TOKS)); - channel->hue = atoi(p=strtok(NULL,TOKS)); - channel->bright = atoi(p=strtok(NULL,TOKS)); - channel->saturation = atoi(p=strtok(NULL,TOKS)); - } else if ( !strcmp( p, "ni")) { - channel->nitv = atoi(p=strtok(NULL,TOKS)); - channel->input = atoi(p=strtok(NULL,TOKS)); - } else if ( !strcmp( p, "sat")) { - channel->pol = atoi(p=strtok(NULL,TOKS)); - channel->srate = atoi(p=strtok(NULL,TOKS)); - channel->fec = atoi(p=strtok(NULL,TOKS)); - channel->vpid = atoi(p=strtok(NULL,TOKS)); - channel->apid = atoi(p=strtok(NULL,TOKS)); - channel->lnbnum = atoi(p=strtok(NULL,TOKS)); - channel->type = atoi(p=strtok(NULL,TOKS)); - } else - printf("Unknown token %s\n", p ) ; - } - return 1 ; -} - -int main ( int argc, char *argv[] ){ - FILE *f, *fo ; - int cnt = 0; - CHANNEL_DATA channel ; - - if ( argc != 3 ){ - printf("USAGE: %s <xtvrc file> <vdr file>\n\n", argv[0] ) ; - return 0; - } - - if ( !(f=fopen(argv[1], "rt"))){ - printf("Can't open %s for reading\n\n", argv[1]); - return 0; - } - - if ( !(fo=fopen(argv[2], "wt"))){ - printf("Can't open %s for writing\n\n", argv[2]); - return 0; - } - - while ( ReadChannel( f, &channel ) ) { - cnt++; - fprintf(fo, "%s:%d:%c:%d:%d:%d:%d:%d:%d\n", - channel.Name , - channel.freq , - channel.pol ? 'v' : 'h' , - 1, //channel.lnbnum , - channel.srate , - channel.vpid , - channel.apid , - 0, //channel.type , - 0 ); //channel.fec ) ; - } - - printf( "%d channels read.\n\n", cnt ) ; - - fclose(f); - fclose(fo); - return 1; -} diff --git a/channels.conf b/channels.conf index 2cc3975..a2bd32f 100644 --- a/channels.conf +++ b/channels.conf @@ -22,7 +22,7 @@ ZDF.info:11954:h:0:27500:610:620:0:0:28011 CNN:12168:v:0:27500:165:100:0:0:28512 Super RTL:12188:h:0:27500:165:120:65:0:12040 VOX:12188:h:0:27500:167:136:0:0:12060 -DW TV:12363:v:0:27500:305:306:0:0:8905 +DW TV:10788:v:0:22000:305:306:0:0:8905 Kabel 1:12480:v:0:27500:511:512:33:0:899 Neun Live:12480:v:0:27500:767:768:0:0:897 DSF:12480:v:0:27500:1023:1024:0:0:900 @@ -80,7 +80,7 @@ Cinedom 1A:11758:h:0:27500:511:512,513:0:3:190 Cinedom 1B:12070:h:0:27500:1535:1536,1537:0:3:178 Cinedom 1C:11720:h:0:27500:511:512,513:0:3:180 Cinedom 1D:11720:h:0:27500:1535:1536,1537:0:3:176 -Cinedom 2A:11758:h:0:27500:1023:1024:0:3:193 +Cinedom 2A:11758:h:0:27500:1023:1024,1025:0:3:193 Cinedom 2B:11720:h:0:27500:1279:1280:0:3:183 Cinedom 2C:12070:h:0:27500:1791:1792:0:3:179 Cinedom 2D:12070:h:0:27500:511:512:0:3:184 diff --git a/channels.conf.cable b/channels.conf.cable index 6e0f43b..b6d5c05 100644 --- a/channels.conf.cable +++ b/channels.conf.cable @@ -1,6 +1,6 @@ :verschlüsselte Fernsehprogramm PREMIERE ONE:378:h:0:6900:3071:3072:0:1:51 -PREMIERE MOVIE 1:370:h:0:6900:511:512:0:1:10 +PREMIERE MOVIE 1:370:h:0:6900:511:512;515:0:1:10 PREMIERE MOVIE 2:370:h:0:6900:1791:1792:0:1:11 PREMIERE MOVIE 3:370:h:0:6900:2303:2304:0:1:43 PREMIERE ACTION:370:h:0:6900:1023:1024,1025:0:1:20 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.c 1.76 2001/10/20 13:09:38 kls Exp $ + * $Id: config.c 1.77 2002/01/19 16:06:42 kls Exp $ */ #include "config.h" @@ -807,6 +807,7 @@ cSetup::cSetup(void) DefaultPriority = 50; DefaultLifetime = 50; UseSubtitle = 1; + RecordingDirs = 1; VideoFormat = VIDEO_FORMAT_4_3; ChannelInfoPos = 0; OSDwidth = 52; @@ -848,6 +849,7 @@ bool cSetup::Parse(char *s) else if (!strcasecmp(Name, "DefaultPriority")) DefaultPriority = atoi(Value); else if (!strcasecmp(Name, "DefaultLifetime")) DefaultLifetime = atoi(Value); else if (!strcasecmp(Name, "UseSubtitle")) UseSubtitle = atoi(Value); + else if (!strcasecmp(Name, "RecordingDirs")) RecordingDirs = atoi(Value); else if (!strcasecmp(Name, "VideoFormat")) VideoFormat = atoi(Value); else if (!strcasecmp(Name, "ChannelInfoPos")) ChannelInfoPos = atoi(Value); else if (!strcasecmp(Name, "OSDwidth")) OSDwidth = atoi(Value); @@ -924,6 +926,7 @@ bool cSetup::Save(const char *FileName) fprintf(f, "DefaultPriority = %d\n", DefaultPriority); fprintf(f, "DefaultLifetime = %d\n", DefaultLifetime); fprintf(f, "UseSubtitle = %d\n", UseSubtitle); + fprintf(f, "RecordingDirs = %d\n", RecordingDirs); fprintf(f, "VideoFormat = %d\n", VideoFormat); fprintf(f, "ChannelInfoPos = %d\n", ChannelInfoPos); fprintf(f, "OSDwidth = %d\n", OSDwidth); @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 1.86 2001/11/25 15:57:08 kls Exp $ + * $Id: config.h 1.88 2002/01/19 16:06:53 kls Exp $ */ #ifndef __CONFIG_H @@ -18,7 +18,7 @@ #include "eit.h" #include "tools.h" -#define VDRVERSION "0.99" +#define VDRVERSION "0.99pre2" #define MAXPRIORITY 99 #define MAXLIFETIME 99 @@ -292,6 +292,7 @@ public: int PrimaryLimit; int DefaultPriority, DefaultLifetime; int UseSubtitle; + int RecordingDirs; int VideoFormat; int ChannelInfoPos; int OSDwidth, OSDheight; @@ -7,7 +7,7 @@ * DVD support initially written by Andreas Schultz <aschultz@warp10.net> * based on dvdplayer-0.5 by Matjaz Thaler <matjaz.thaler@guest.arnes.si> * - * $Id: dvbapi.c 1.141 2001/11/25 16:38:09 kls Exp $ + * $Id: dvbapi.c 1.146 2002/01/26 15:39:48 kls Exp $ */ //#define DVDDEBUG 1 @@ -116,7 +116,7 @@ public: cIndexFile(const char *FileName, bool Record); ~cIndexFile(); bool Ok(void) { return index != NULL; } - void Write(uchar PictureType, uchar FileNumber, int FileOffset); + bool Write(uchar PictureType, uchar FileNumber, int FileOffset); bool Get(int Index, uchar *FileNumber, int *FileOffset, uchar *PictureType = NULL, int *Length = NULL); int GetNextIFrame(int Index, bool Forward, uchar *FileNumber = NULL, int *FileOffset = NULL, int *Length = NULL, bool StayOffEnd = false); int Get(uchar FileNumber, int FileOffset); @@ -146,7 +146,7 @@ cIndexFile::cIndexFile(const char *FileName, bool Record) delta = buf.st_size % sizeof(tIndex); if (delta) { delta = sizeof(tIndex) - delta; - esyslog(LOG_ERR, "ERROR: invalid file size (%d) in '%s'", buf.st_size, fileName); + esyslog(LOG_ERR, "ERROR: invalid file size (%ld) in '%s'", buf.st_size, fileName); } last = (buf.st_size + delta) / sizeof(tIndex) - 1; if (!Record && last >= 0) { @@ -249,7 +249,7 @@ bool cIndexFile::CatchUp(int Index) return false; } -void cIndexFile::Write(uchar PictureType, uchar FileNumber, int FileOffset) +bool cIndexFile::Write(uchar PictureType, uchar FileNumber, int FileOffset) { if (f >= 0) { tIndex i = { FileOffset, PictureType, FileNumber, 0 }; @@ -257,10 +257,11 @@ void cIndexFile::Write(uchar PictureType, uchar FileNumber, int FileOffset) esyslog(LOG_ERR, "ERROR: can't write to index file"); close(f); f = -1; - return; + return false; } last++; } + return f >= 0; } bool cIndexFile::Get(int Index, uchar *FileNumber, int *FileOffset, uchar *PictureType, int *Length) @@ -506,7 +507,7 @@ cRecordBuffer::~cRecordBuffer() bool cRecordBuffer::RunningLowOnDiskSpace(void) { if (time(NULL) > lastDiskSpaceCheck + DISKCHECKINTERVAL) { - uint Free = FreeDiskSpaceMB(fileName.Name()); + int Free = FreeDiskSpaceMB(fileName.Name()); lastDiskSpaceCheck = time(NULL); if (Free < MINFREEDISKSPACE) { dsyslog(LOG_INFO, "low disk space (%d MB, limit is %d MB)", Free, MINFREEDISKSPACE); @@ -2305,6 +2306,7 @@ void cTransferBuffer::Output(void) class cCuttingBuffer : public cThread { private: + const char *error; bool active; int fromFile, toFile; cFileName *fromFileName, *toFileName; @@ -2315,10 +2317,12 @@ protected: public: cCuttingBuffer(const char *FromFileName, const char *ToFileName); virtual ~cCuttingBuffer(); + const char *Error(void) { return error; } }; cCuttingBuffer::cCuttingBuffer(const char *FromFileName, const char *ToFileName) { + error = NULL; active = false; fromFile = toFile = -1; fromFileName = toFileName = NULL; @@ -2367,6 +2371,10 @@ void cCuttingBuffer::Action(void) int FileOffset, Length; uchar PictureType; + // Make sure there is enough disk space: + + AssertFreeDiskSpace(); + // Read one frame: if (fromIndex->Get(Index++, &FileNumber, &FileOffset, &PictureType, &Length)) { @@ -2376,11 +2384,15 @@ void cCuttingBuffer::Action(void) } if (fromFile >= 0) { Length = ReadFrame(fromFile, buffer, Length, sizeof(buffer)); - if (Length < 0) + if (Length < 0) { + error = "ReadFrame"; break; + } } - else + else { + error = "fromFile"; break; + } } else break; @@ -2392,14 +2404,22 @@ void cCuttingBuffer::Action(void) break; if (FileSize > MEGABYTE(Setup.MaxVideoFileSize)) { toFile = toFileName->NextFile(); - if (toFile < 0) + if (toFile < 0) { + error = "toFile 1"; break; + } FileSize = 0; } LastIFrame = 0; } - safe_write(toFile, buffer, Length); - toIndex->Write(PictureType, toFileName->Number(), FileSize); + if (safe_write(toFile, buffer, Length) != Length) { + error = "safe_write"; + break; + } + if (!toIndex->Write(PictureType, toFileName->Number(), FileSize)) { + error = "toIndex"; + break; + } FileSize += Length; if (!LastIFrame) LastIFrame = toIndex->Last(); @@ -2418,8 +2438,10 @@ void cCuttingBuffer::Action(void) CurrentFileNumber = 0; // triggers SetOffset before reading next frame if (Setup.SplitEditedFiles) { toFile = toFileName->NextFile(); - if (toFile < 0) + if (toFile < 0) { + error = "toFile 2"; break; + } FileSize = 0; } } @@ -2438,10 +2460,14 @@ void cCuttingBuffer::Action(void) char *cVideoCutter::editedVersionName = NULL; cCuttingBuffer *cVideoCutter::cuttingBuffer = NULL; +bool cVideoCutter::error = false; +bool cVideoCutter::ended = false; bool cVideoCutter::Start(const char *FileName) { if (!cuttingBuffer) { + error = false; + ended = false; cRecording Recording(FileName); const char *evn = Recording.PrefixFileName('%'); if (evn && RemoveVideoFile(evn) && MakeDirs(evn, true)) { @@ -2456,8 +2482,17 @@ bool cVideoCutter::Start(const char *FileName) void cVideoCutter::Stop(void) { + bool Interrupted = cuttingBuffer && cuttingBuffer->Active(); + const char *Error = cuttingBuffer ? cuttingBuffer->Error() : NULL; delete cuttingBuffer; cuttingBuffer = NULL; + if ((Interrupted || Error) && editedVersionName) { + if (Interrupted) + isyslog(LOG_INFO, "editing process has been interrupted"); + if (Error) + esyslog(LOG_ERR, "ERROR: '%s' during editing process", Error); + RemoveVideoFile(editedVersionName); //XXX what if this file is currently being replayed? + } } bool cVideoCutter::Active(void) @@ -2465,16 +2500,32 @@ bool cVideoCutter::Active(void) if (cuttingBuffer) { if (cuttingBuffer->Active()) return true; + error = cuttingBuffer->Error(); Stop(); - cRecordingUserCommand::InvokeCommand(RUC_EDITEDRECORDING, editedVersionName); + if (!error) + cRecordingUserCommand::InvokeCommand(RUC_EDITEDRECORDING, editedVersionName); delete editedVersionName; editedVersionName = NULL; + ended = true; } return false; } -// --- cDvbApi --------------------------------------------------------------- +bool cVideoCutter::Error(void) +{ + bool result = error; + error = false; + return result; +} +bool cVideoCutter::Ended(void) +{ + bool result = ended; + ended = false; + return result; +} + +// --- cDvbApi --------------------------------------------------------------- static const char *OstName(const char *Name, int n) { @@ -2842,7 +2893,11 @@ void cDvbApi::Open(int w, int h) } else if (d == 0) { //XXX full menu osd->Create(0, 0, w, lineHeight, 2); - osd->Create(0, lineHeight, w, (Setup.OSDheight - 3) * lineHeight, 2, true, clrBackground, clrCyan, clrWhite, clrBlack); + osd->Create(0, lineHeight, w, (Setup.OSDheight - 3) * lineHeight, 2); + osd->AddColor(clrBackground); + osd->AddColor(clrCyan); + osd->AddColor(clrWhite); + osd->AddColor(clrBlack); osd->Create(0, (Setup.OSDheight - 2) * lineHeight, w, 2 * lineHeight, 4); } else { //XXX progress display @@ -3197,7 +3252,7 @@ eSetChannelResult cDvbApi::SetChannel(int ChannelNumber, int Frequency, char Pol } } else - esyslog(LOG_ERR, "ERROR %d in frontend get event", res); + esyslog(LOG_ERR, "ERROR %d in frontend get event (channel %d, card %d)", res, ChannelNumber, CardIndex() + 1); } else esyslog(LOG_ERR, "ERROR: timeout while tuning"); @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbapi.h 1.59 2001/11/24 11:03:16 kls Exp $ + * $Id: dvbapi.h 1.60 2002/01/26 13:01:16 kls Exp $ */ #ifndef __DVBAPI_H @@ -69,10 +69,14 @@ class cVideoCutter { private: static char *editedVersionName; static cCuttingBuffer *cuttingBuffer; + static bool error; + static bool ended; public: static bool Start(const char *FileName); static void Stop(void); static bool Active(void); + static bool Error(void); + static bool Ended(void); }; class cDvbApi { @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbosd.c 1.10 2001/07/24 16:25:34 kls Exp $ + * $Id: dvbosd.c 1.12 2002/01/13 16:25:18 kls Exp $ */ #include "dvbosd.h" @@ -257,25 +257,35 @@ const char *cBitmap::Data(int x, int y) class cWindow : public cBitmap { private: + int handle; // the index within the OSD's window array (0...MAXNUMWINDOWS - 1) int x0, y0; + int bpp; + bool tiled; bool shown; public: - cWindow(int x, int y, int w, int h, int Bpp, bool ClearWithBackground = true); + cWindow(int Handle, int x, int y, int w, int h, int Bpp, bool ClearWithBackground, bool Tiled); int X0(void) { return x0; } int Y0(void) { return y0; } + int Bpp(void) { return bpp; } + bool Tiled(void) { return tiled; } bool Shown(void) { bool s = shown; shown = true; return s; } + int Handle(void) { return handle; } bool Contains(int x, int y); + void Relocate(int x, int y); void Fill(int x1, int y1, int x2, int y2, eDvbColor Color); void SetBitmap(int x, int y, const cBitmap &Bitmap); void Text(int x, int y, const char *s, eDvbColor ColorFg = clrWhite, eDvbColor ColorBg = clrBackground); const char *Data(int x, int y); }; -cWindow::cWindow(int x, int y, int w, int h, int Bpp, bool ClearWithBackground) +cWindow::cWindow(int Handle, int x, int y, int w, int h, int Bpp, bool ClearWithBackground, bool Tiled) :cBitmap(w, h, Bpp, ClearWithBackground) { + handle = Handle; x0 = x; y0 = y; + bpp = Bpp; + tiled = Tiled; shown = false; } @@ -286,19 +296,39 @@ bool cWindow::Contains(int x, int y) return x >= 0 && y >= 0 && x < width && y < height; } +void cWindow::Relocate(int x, int y) +{ + x0 = x; + y0 = y; +} + void cWindow::Fill(int x1, int y1, int x2, int y2, eDvbColor Color) { - cBitmap::Fill(x1 - x0, y1 - y0, x2 - x0, y2 - y0, Color); + if (tiled) { + x1 -= x0; + y1 -= y0; + x2 -= x0; + y2 -= y0; + } + cBitmap::Fill(x1, y1, x2, y2, Color); } void cWindow::SetBitmap(int x, int y, const cBitmap &Bitmap) { - cBitmap::SetBitmap(x - x0, y - y0, Bitmap); + if (tiled) { + x -= x0; + y -= y0; + } + cBitmap::SetBitmap(x, y, Bitmap); } void cWindow::Text(int x, int y, const char *s, eDvbColor ColorFg, eDvbColor ColorBg) { - cBitmap::Text(x - x0, y - y0, s, ColorFg, ColorBg); + if (tiled) { + x -= x0; + y -= y0; + } + cBitmap::Text(x, y, s, ColorFg, ColorBg); } const char *cWindow::Data(int x, int y) @@ -325,14 +355,28 @@ cDvbOsd::cDvbOsd(int VideoDev, int x, int y, int w, int h, int Bpp) cDvbOsd::~cDvbOsd() { if (videoDev >= 0) { - while (numWindows > 0) { - Cmd(OSD_SetWindow, 0, numWindows--); - Cmd(OSD_Close); - delete window[numWindows]; - } + for (int i = 0; i < numWindows; i++) { + SetWindow(window[i]); + Cmd(OSD_Close); + delete window[i]; + } + numWindows = 0; } } +bool cDvbOsd::SetWindow(cWindow *Window) +{ + // Window handles are counted 0...(MAXNUMWINDOWS - 1), but the actual window + // numbers in the driver are used from 1...MAXNUMWINDOWS. + int Handle = Window->Handle(); + if (0 <= Handle && Handle < MAXNUMWINDOWS) { + Cmd(OSD_SetWindow, 0, Handle + 1); + return true; + } + esyslog(LOG_ERR, "ERROR: illegal window handle: %d", Handle); + return -1; +} + void cDvbOsd::Cmd(OSD_Command cmd, int color, int x0, int y0, int x1, int y1, const void *data) { if (videoDev >= 0) { @@ -347,62 +391,77 @@ void cDvbOsd::Cmd(OSD_Command cmd, int color, int x0, int y0, int x1, int y1, co // must block all signals, otherwise the command might not be fully executed sigset_t set, oldset; sigfillset(&set); + sigdelset(&set, SIGALRM); sigprocmask(SIG_BLOCK, &set, &oldset); ioctl(videoDev, OSD_SEND_CMD, &dc); - usleep(5000); // XXX Workaround for a driver bug (cInterface::DisplayChannel() displayed texts at wrong places - // XXX and sometimes the OSD was no longer displayed). - // XXX Increase the value if the problem still persists on your particular system. - // TODO Check if this is still necessary with driver versions after 0.7. + if (cmd == OSD_SetBlock) // XXX this is the only command that takes longer + usleep(5000); // XXX Workaround for a driver bug (cInterface::DisplayChannel() displayed texts at wrong places + // XXX and sometimes the OSD was no longer displayed). + // XXX Increase the value if the problem still persists on your particular system. + // TODO Check if this is still necessary with driver versions after 0.7. sigprocmask(SIG_SETMASK, &oldset, NULL); } } -bool cDvbOsd::Create(int x, int y, int w, int h, int Bpp, bool ClearWithBackground, eDvbColor Color0, eDvbColor Color1, eDvbColor Color2, eDvbColor Color3) +tWindowHandle cDvbOsd::Create(int x, int y, int w, int h, int Bpp, bool ClearWithBackground, bool Tiled) { - /* TODO XXX - - check that no two windows overlap - */ if (numWindows < MAXNUMWINDOWS) { if (x >= 0 && y >= 0 && w > 0 && h > 0 && (Bpp == 1 || Bpp == 2 || Bpp == 4 || Bpp == 8)) { if ((w & 0x03) != 0) { w += 4 - (w & 0x03); esyslog(LOG_ERR, "ERROR: OSD window width must be a multiple of 4 - increasing to %d", w); } - cWindow *win = new cWindow(x, y, w, h, Bpp, ClearWithBackground); - if (Color0 != clrTransparent) { - win->Index(Color0); - win->Index(Color1); - win->Index(Color2); - win->Index(Color3); - win->Reset(); + cWindow *win = new cWindow(numWindows, x, y, w, h, Bpp, ClearWithBackground, Tiled); + if (SetWindow(win)) { + window[win->Handle()] = win; + Cmd(OSD_Open, Bpp, x0 + x, y0 + y, x0 + x + w - 1, y0 + y + h - 1, (void *)1); // initially hidden! + numWindows++; + return win->Handle(); } - window[numWindows++] = win; - Cmd(OSD_SetWindow, 0, numWindows); - Cmd(OSD_Open, Bpp, x0 + x, y0 + y, x0 + x + w - 1, y0 + y + h - 1, (void *)1); // initially hidden! + else + delete win; } else esyslog(LOG_ERR, "ERROR: illegal OSD parameters"); } else esyslog(LOG_ERR, "ERROR: too many OSD windows"); - return false; + return -1; +} + +void cDvbOsd::AddColor(eDvbColor Color, tWindowHandle Window) +{ + cWindow *w = GetWindow(Window); + if (w) { + w->Index(Color); + w->Reset(); + } } cWindow *cDvbOsd::GetWindow(int x, int y) { for (int i = 0; i < numWindows; i++) { - if (window[i]->Contains(x, y)) + if (window[i]->Tiled() && window[i]->Contains(x, y)) return window[i]; } return NULL; } +cWindow *cDvbOsd::GetWindow(tWindowHandle Window) +{ + if (0 <= Window && Window < numWindows) + return window[Window]; + if (Window == LAST_CREATED_WINDOW && numWindows > 0) + return window[numWindows - 1]; + return NULL; +} + void cDvbOsd::Flush(void) { for (int i = 0; i < numWindows; i++) { int x1 = 0, y1 = 0, x2 = 0, y2 = 0; if (window[i]->Dirty(x1, y1, x2, y2)) { - Cmd(OSD_SetWindow, 0, i + 1); + SetWindow(window[i]); int FirstColor = 0, LastColor = 0; const eDvbColor *pal; while ((pal = window[i]->Colors(FirstColor, LastColor)) != NULL) @@ -414,28 +473,36 @@ void cDvbOsd::Flush(void) // Showing the windows in a separate loop to avoid seeing them come up one after another for (int i = 0; i < numWindows; i++) { if (!window[i]->Shown()) { - Cmd(OSD_SetWindow, 0, i + 1); + SetWindow(window[i]); Cmd(OSD_MoveWindow, 0, x0 + window[i]->X0(), y0 + window[i]->Y0()); } } } -void cDvbOsd::Clear(void) +void cDvbOsd::Clear(tWindowHandle Window) { - for (int i = 0; i < numWindows; i++) - window[i]->Clear(); + if (Window == ALL_TILED_WINDOWS || Window == ALL_WINDOWS) { + for (int i = 0; i < numWindows; i++) + if (Window == ALL_WINDOWS || window[i]->Tiled()) + window[i]->Clear(); + } + else { + cWindow *w = GetWindow(Window); + if (w) + w->Clear(); + } } -void cDvbOsd::Fill(int x1, int y1, int x2, int y2, eDvbColor Color) +void cDvbOsd::Fill(int x1, int y1, int x2, int y2, eDvbColor Color, tWindowHandle Window) { - cWindow *w = GetWindow(x1, y1); + cWindow *w = (Window == ALL_TILED_WINDOWS) ? GetWindow(x1, y1) : GetWindow(Window); if (w) w->Fill(x1, y1, x2, y2, Color); } -void cDvbOsd::SetBitmap(int x, int y, const cBitmap &Bitmap) +void cDvbOsd::SetBitmap(int x, int y, const cBitmap &Bitmap, tWindowHandle Window) { - cWindow *w = GetWindow(x, y); + cWindow *w = (Window == ALL_TILED_WINDOWS) ? GetWindow(x, y) : GetWindow(Window); if (w) w->SetBitmap(x, y, Bitmap); } @@ -458,10 +525,44 @@ eDvbFont cDvbOsd::SetFont(eDvbFont Font) return oldFont; } -void cDvbOsd::Text(int x, int y, const char *s, eDvbColor ColorFg = clrWhite, eDvbColor ColorBg = clrBackground) +void cDvbOsd::Text(int x, int y, const char *s, eDvbColor ColorFg = clrWhite, eDvbColor ColorBg = clrBackground, tWindowHandle Window) { - cWindow *w = GetWindow(x, y); + cWindow *w = (Window == ALL_TILED_WINDOWS) ? GetWindow(x, y) : GetWindow(Window); if (w) w->Text(x, y, s, ColorFg, ColorBg); } +void cDvbOsd::Relocate(tWindowHandle Window, int x, int y, int NewWidth, int NewHeight) +{ + cWindow *w = GetWindow(Window); + if (w) { + SetWindow(w); + if (NewWidth > 0 && NewHeight > 0) { + if ((NewWidth & 0x03) != 0) { + NewWidth += 4 - (NewWidth & 0x03); + esyslog(LOG_ERR, "ERROR: OSD window width must be a multiple of 4 - increasing to %d", NewWidth); + } + Cmd(OSD_Close); + window[w->Handle()] = new cWindow(w->Handle(), x, y, NewWidth, NewHeight, w->Bpp(), w->ClearWithBackground(), w->Tiled()); + delete w; + Cmd(OSD_Open, 2, x0 + x, y0 + y, x0 + x + NewWidth - 1, y0 + y + NewHeight - 1, (void *)1); // initially hidden! + } + else { + w->Relocate(x, y); + Cmd(OSD_MoveWindow, 0, x0 + x, y0 + y); + } + } +} + +void cDvbOsd::Hide(tWindowHandle Window) +{ + if (SetWindow(GetWindow(Window))) + Cmd(OSD_Hide, 0); +} + +void cDvbOsd::Show(tWindowHandle Window) +{ + if (SetWindow(GetWindow(Window))) + Cmd(OSD_Show, 0); +} + @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbosd.h 1.8 2001/07/28 16:22:32 kls Exp $ + * $Id: dvbosd.h 1.9 2001/12/09 15:11:05 kls Exp $ */ #ifndef __DVBOSD_H @@ -75,6 +75,7 @@ protected: public: cBitmap(int Width, int Height, int Bpp, bool ClearWithBackground = true); virtual ~cBitmap(); + bool ClearWithBackground(void) { return clearWithBackground; } eDvbFont SetFont(eDvbFont Font); bool Dirty(int &x1, int &y1, int &x2, int &y2); void SetPixel(int x, int y, eDvbColor Color); @@ -93,26 +94,84 @@ public: class cWindow; +typedef int tWindowHandle; + +// '-1' is used as an error return value! +#define ALL_WINDOWS (-2) +#define ALL_TILED_WINDOWS (-3) +#define LAST_CREATED_WINDOW (-4) + class cDvbOsd { private: int videoDev; int numWindows; int x0, y0; cWindow *window[MAXNUMWINDOWS]; + bool SetWindow(cWindow *Window); void Cmd(OSD_Command cmd, int color = 0, int x0 = 0, int y0 = 0, int x1 = 0, int y1 = 0, const void *data = NULL); cWindow *GetWindow(int x, int y); + cWindow *GetWindow(tWindowHandle Window); public: cDvbOsd(int VideoDev, int x, int y, int w = -1, int h = -1, int Bpp = -1); + // Initializes the OSD on the given VideoDev, starting at screen coordinates + // (x, y). If w, h and Bpp are given, one window with that width, height and + // color depth will be created - otherwise the actual windows will have to + // be created by separate calls to Create(). ~cDvbOsd(); - bool Create(int x, int y, int w, int h, int Bpp, bool ClearWithBackground = true, eDvbColor Color0 = clrTransparent, eDvbColor Color1 = clrTransparent, eDvbColor Color2 = clrTransparent, eDvbColor Color3 = clrTransparent); + // Destroys all windows and shuts down the OSD. + tWindowHandle Create(int x, int y, int w, int h, int Bpp, bool ClearWithBackground = true, bool Tiled = true); + // Creates a window at coordinates (x, y), which are relative to the OSD's + // origin given in the constructor, with the given width, height and color + // depth. ClearWithBackground controls whether the window will be filled with + // clrBackground when it is cleared. Setting this to 'false' may be useful + // for windows that don't need clrBackground but want to save this color + // palette entry for a different color. Tiled controls whether this will + // be part of a multi section OSD (with several windows that all have + // different color depths and palettes and form one large OSD area), or + // whether this is a "standalone" window that will be drawn "in front" + // of any windows defined *after* this one (this can be used for highlighting + // certain parts of the OSD, as would be done in a 'cursor'). + // Returns a handle that can be used to identify this window. + void AddColor(eDvbColor Color, tWindowHandle Window = LAST_CREATED_WINDOW); + // Adds the Color to the color palette of the given window if it is not + // already contained in the palette (and if the palette still has free + // slots for new colors). The default value LAST_CREATED_WINDOW will + // access the most recently created window, without the need of explicitly + // using a window handle. void Flush(void); - void Clear(void); - void Fill(int x1, int y1, int x2, int y2, eDvbColor Color); - void SetBitmap(int x, int y, const cBitmap &Bitmap); + // Actually commits all data of all windows to the OSD. + void Clear(tWindowHandle Window = ALL_TILED_WINDOWS); + // Clears the given window. If ALL_TILED_WINDOWS is given, only the tiled + // windows will be cleared, leaving the standalone windows untouched. If + // ALL_WINDOWS is given, the standalone windows will also be cleared. + void Fill(int x1, int y1, int x2, int y2, eDvbColor Color, tWindowHandle Window = ALL_TILED_WINDOWS); + // Fills the rectangle defined by the upper left (x1, y2) and lower right + // (x2, y2) corners with the given Color. If a specific window is given, + // the coordinates are relative to that window's upper left corner. + // Otherwise they are relative to the upper left corner of the entire OSD. + // If all tiled windows are selected, only that window which contains the + // point (x1, y1) will actually be filled. + void SetBitmap(int x, int y, const cBitmap &Bitmap, tWindowHandle Window = ALL_TILED_WINDOWS); + // Sets the pixels within the given window with the data from the given + // Bitmap. See Fill() for details about the coordinates. int Width(unsigned char c); + // Returns the width (in pixels) of the given character in the current font. int Width(const char *s); + // Returns the width (in pixels) of the given string in the current font. eDvbFont SetFont(eDvbFont Font); - void Text(int x, int y, const char *s, eDvbColor ColorFg = clrWhite, eDvbColor ColorBg = clrBackground); + // Sets the current font for subsequent Width() and Text() operations. + void Text(int x, int y, const char *s, eDvbColor ColorFg = clrWhite, eDvbColor ColorBg = clrBackground, tWindowHandle Window = ALL_TILED_WINDOWS); + // Writes the given string at coordinates (x, y) with the given foreground + // and background color into the given window (see Fill() for details + // about the coordinates). + void Relocate(tWindowHandle Window, int x, int y, int NewWidth = -1, int NewHeight = -1); + // Moves the given window to the new location at (x, y). If NewWidth and + // NewHeight are also given, the window will also be resized to the new + // width and height. + void Hide(tWindowHandle Window); + // Hides the given window. + void Show(tWindowHandle Window); + // Shows the given window. }; #endif //__DVBOSD_H @@ -16,7 +16,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: eit.c 1.29 2001/10/28 13:51:22 kls Exp $ + * $Id: eit.c 1.31 2002/01/13 16:14:31 kls Exp $ ***************************************************************************/ #include "eit.h" @@ -473,22 +473,6 @@ void cEventInfo::FixEpgBugs(void) strreplace(pTitle, '`', '\''); strreplace(pSubtitle, '`', '\''); strreplace(pExtendedDescription, '`', '\''); - - if (Setup.EPGBugfixLevel <= 2) - return; - - // Pro7 and Kabel1 apparently are unable to use a calendar/clock, - // because all events between 00:00 and 06:00 have the date of the - // day before (sometimes even this correction doesn't help). - // Channels are recognized by their ServiceID, which may only work - // correctly on the ASTRA satellite system. - if (uServiceID == 898 // Pro-7 - || uServiceID == 899) { // Kabel 1 - struct tm tm_r; - tm *t = localtime_r(&tTime, &tm_r); - if (t->tm_hour * 3600 + t->tm_min * 60 + t->tm_sec <= 6 * 3600) - tTime += 24 * 3600; - } } } @@ -1013,8 +997,10 @@ void cSIProcessor::Action() break; } } + /*XXX this just fills up the log file - shouldn't we rather try to re-sync? else dsyslog(LOG_INFO, "read incomplete section - seclen = %d, n = %d", seclen, n); + XXX*/ } } } @@ -16,7 +16,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: eit.h 1.12 2001/10/28 12:33:10 kls Exp $ + * $Id: eit.h 1.13 2002/01/13 16:18:23 kls Exp $ ***************************************************************************/ #ifndef __EIT_H @@ -25,6 +25,8 @@ #include "thread.h" #include "tools.h" +#define MAXEPGBUGFIXLEVEL 2 + class cEventInfo : public cListObject { friend class cSchedule; friend class cEIT; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: i18n.c 1.45 2001/10/28 16:04:58 kls Exp $ + * $Id: i18n.c 1.50 2002/01/27 15:52:32 kls Exp $ * * Slovenian translations provided by Miha Setina <mihasetina@softhome.net> * Italian translations provided by Alberto Carraro <bertocar@tin.it> @@ -285,6 +285,15 @@ const tPhrase Phrases[] = { "Résumé", "Sammendrag", }, + { "Open", + "Öffnen", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + }, { "Switch", "Umschalten", "Preklopi", @@ -631,6 +640,15 @@ const tPhrase Phrases[] = { "Enregistrement en cours!", "Timer gjør opptak!", }, + { "Error while accessing recording!", + "Fehler beim ansprechen der Aufzeichnung!", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + }, { "Error while deleting recording!", "Fehler beim Löschen der Aufzeichnung!", "Napaka pri odstranjevanju posnetka!", @@ -703,6 +721,15 @@ const tPhrase Phrases[] = { "", // TODO "", // TODO }, + { "Low disk space!", + "Platte beinahe voll!", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + }, // Setup parameters: { "OSD-Language", "OSD-Sprache", @@ -884,6 +911,15 @@ const tPhrase Phrases[] = { "", // TODO "", // TODO }, + { "RecordingDirs", + "Aufn. Verzeichnisse", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + }, { "VideoFormat", "Video Format", "", // TODO @@ -1293,6 +1329,14 @@ const tPhrase Phrases[] = { "bas", "", // TODO }, + { "free", + "frei", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + }, { "Jump: ", // note the trailing blank "Springen: ", "", // TODO @@ -1355,6 +1399,30 @@ const tPhrase Phrases[] = { "Opération de montage lancée", "Redigeringsprosess startet", }, + { "Editing process finished", + "Schnitt beendet", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + }, + { "Editing process failed!", + "Schnitt gescheitert!", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + }, + { "scanning recordings...", + "Aufzeichnungen werden durchsucht...", + "", // TODO + "", // TODO + "", // TODO + "", // TODO + "", // TODO + }, { NULL } }; diff --git a/interface.c b/interface.c index 8695a36..b86fb14 100644 --- a/interface.c +++ b/interface.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: interface.c 1.44 2001/09/01 15:18:46 kls Exp $ + * $Id: interface.c 1.47 2002/01/27 15:48:46 kls Exp $ */ #include "interface.h" @@ -292,8 +292,12 @@ void cInterface::Status(const char *s, eDvbColor FgColor, eDvbColor BgColor) { int Line = (abs(height) == 1) ? 0 : -2; ClearEol(0, Line, s ? BgColor : clrBackground); - if (s) - Write(0, Line, s, FgColor, BgColor); + if (s) { + int x = (Width() - strlen(s)) / 2; + if (x < 0) + x = 0; + Write(x, Line, s, FgColor, BgColor); + } } void cInterface::Info(const char *s) @@ -318,7 +322,7 @@ void cInterface::Error(const char *s) bool cInterface::Confirm(const char *s, int Seconds, bool WaitForTimeout) { - Open(); + Open(Setup.OSDwidth, -1); isyslog(LOG_INFO, "confirm: %s", s); Status(s, clrBlack, clrYellow); eKeys k = Wait(Seconds); @@ -331,13 +335,15 @@ bool cInterface::Confirm(const char *s, int Seconds, bool WaitForTimeout) void cInterface::HelpButton(int Index, const char *Text, eDvbColor FgColor, eDvbColor BgColor) { - if (open && Text) { + if (open) { const int w = Width() / 4; - int l = (w - int(strlen(Text))) / 2; - if (l < 0) - l = 0; - cDvbApi::PrimaryDvbApi->Fill(Index * w, -1, w, 1, BgColor); - cDvbApi::PrimaryDvbApi->Text(Index * w + l, -1, Text, FgColor, BgColor); + cDvbApi::PrimaryDvbApi->Fill(Index * w, -1, w, 1, Text ? BgColor : clrBackground); + if (Text) { + int l = (w - int(strlen(Text))) / 2; + if (l < 0) + l = 0; + cDvbApi::PrimaryDvbApi->Text(Index * w + l, -1, Text, FgColor, BgColor); + } } } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.141 2001/11/24 13:20:37 kls Exp $ + * $Id: menu.c 1.146 2002/01/27 15:50:50 kls Exp $ */ #include "menu.h" @@ -15,6 +15,7 @@ #include "config.h" #include "eit.h" #include "i18n.h" +#include "videodir.h" #define MENUTIMEOUT 120 // seconds #define MAXWAIT4EPGINFO 10 // seconds @@ -1494,46 +1495,161 @@ eOSState cMenuSchedule::ProcessKey(eKeys Key) // --- cMenuRecordingItem ---------------------------------------------------- class cMenuRecordingItem : public cOsdItem { +private: + char *fileName; + char *name; + int totalEntries, newEntries; public: - cRecording *recording; - cMenuRecordingItem(cRecording *Recording); - virtual void Set(void); + cMenuRecordingItem(cRecording *Recording, int Level); + ~cMenuRecordingItem(); + void IncrementCounter(bool New); + const char *Name(void) { return name; } + const char *FileName(void) { return fileName; } + bool IsDirectory(void) { return name != NULL; } }; -cMenuRecordingItem::cMenuRecordingItem(cRecording *Recording) +cMenuRecordingItem::cMenuRecordingItem(cRecording *Recording, int Level) { - recording = Recording; - Set(); + fileName = strdup(Recording->FileName()); + name = NULL; + totalEntries = newEntries = 0; + SetText(Recording->Title('\t', true, Level)); + if (*Text() == '\t') + name = strdup(Text() + 2); // 'Text() + 2' to skip the two '\t' } -void cMenuRecordingItem::Set(void) +cMenuRecordingItem::~cMenuRecordingItem() { - SetText(recording->Title('\t', true)); + delete fileName; + delete name; +} + +void cMenuRecordingItem::IncrementCounter(bool New) +{ + totalEntries++; + if (New) + newEntries++; + char *buffer = NULL; + asprintf(&buffer, "%d\t%d\t%s", totalEntries, newEntries, name); + SetText(buffer, false); } // --- cMenuRecordings ------------------------------------------------------- -cMenuRecordings::cMenuRecordings(void) -:cOsdMenu(tr("Recordings"), 6, 6) +cRecordings cMenuRecordings::Recordings; +int cMenuRecordings::helpKeys = -1; + +cMenuRecordings::cMenuRecordings(const char *Base, int Level, bool OpenSubMenus) +:cOsdMenu(Base ? Base : tr("Recordings"), 6, 6) { - if (Recordings.Load()) { - const char *lastReplayed = cReplayControl::LastReplayed(); - cRecording *recording = Recordings.First(); - while (recording) { - Add(new cMenuRecordingItem(recording), lastReplayed && strcmp(lastReplayed, recording->FileName()) == 0); - recording = Recordings.Next(recording); - } + base = Base ? strdup(Base) : NULL; + level = Setup.RecordingDirs ? Level : -1; + if (!Base) { + Interface->Status(tr("scanning recordings...")); + Interface->Flush(); } - SetHelp(tr("Play"), tr("Rewind"), tr("Delete"), tr("Summary")); - Display(); + if (Base || Recordings.Load()) { + const char *LastReplayed = cReplayControl::LastReplayed(); + cMenuRecordingItem *LastItem = NULL; + char *LastItemText = NULL; + for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) { + if (!Base || strstr(recording->Name(), Base) == recording->Name()) { + cMenuRecordingItem *Item = new cMenuRecordingItem(recording, level); + if (*Item->Text() && (!LastItem || strcmp(Item->Text(), LastItemText) != 0)) { + Add(Item); + LastItem = Item; + delete LastItemText; + LastItemText = strdup(LastItem->Text()); // must use a copy because of the counters! + } + else + delete Item; + if (LastItem) { + if (LastReplayed && strcmp(LastReplayed, recording->FileName()) == 0) + SetCurrent(LastItem); + if (LastItem->IsDirectory()) + LastItem->IncrementCounter(recording->IsNew()); + } + } + } + delete LastItemText; + if (Current() < 0) + SetCurrent(First()); + else if (OpenSubMenus && Open(true)) + return; + } + Display(); // this keeps the higher level menus from showing up briefly when pressing 'Back' during replay + SetHelpKeys(); +} + +cMenuRecordings::~cMenuRecordings() +{ + helpKeys = -1; + delete base; +} + +void cMenuRecordings::SetHelpKeys(void) +{ + cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current()); + int NewHelpKeys = helpKeys; + if (ri) { + if (ri->IsDirectory()) + NewHelpKeys = 1; + else { + NewHelpKeys = 2; + cRecording *recording = GetRecording(ri); + if (recording && recording->Summary()) + NewHelpKeys = 3; + } + } + if (NewHelpKeys != helpKeys) { + switch (NewHelpKeys) { + case 0: SetHelp(NULL); break; + case 1: SetHelp(tr("Open")); break; + case 2: + case 3: SetHelp(tr("Play"), tr("Rewind"), tr("Delete"), NewHelpKeys == 3 ? tr("Summary") : NULL); + } + helpKeys = NewHelpKeys; + } +} + +cRecording *cMenuRecordings::GetRecording(cMenuRecordingItem *Item) +{ + cRecording *recording = Recordings.GetByName(Item->FileName()); + if (!recording) + Interface->Error(tr("Error while accessing recording!")); + return recording; +} + +bool cMenuRecordings::Open(bool OpenSubMenus) +{ + cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current()); + if (ri && ri->IsDirectory()) { + const char *t = ri->Name(); + char *buffer = NULL; + if (base) { + asprintf(&buffer, "%s~%s", base, t); + t = buffer; + } + AddSubMenu(new cMenuRecordings(t, level + 1, OpenSubMenus)); + delete buffer; + return true; + } + return false; } eOSState cMenuRecordings::Play(void) { cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current()); if (ri) { - cReplayControl::SetRecording(ri->recording->FileName(), ri->recording->Title()); - return osReplay; + if (ri->IsDirectory()) + Open(); + else { + cRecording *recording = GetRecording(ri); + if (recording) { + cReplayControl::SetRecording(recording->FileName(), recording->Title()); + return osReplay; + } + } } return osContinue; } @@ -1541,9 +1657,9 @@ eOSState cMenuRecordings::Play(void) eOSState cMenuRecordings::Rewind(void) { cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current()); - if (ri) { + if (ri && !ri->IsDirectory()) { cDvbApi::PrimaryDvbApi->StopReplay(); // must do this first to be able to rewind the currently replayed recording - cResumeFile ResumeFile(ri->recording->FileName()); + cResumeFile ResumeFile(ri->FileName()); ResumeFile.Delete(); return Play(); } @@ -1553,17 +1669,21 @@ eOSState cMenuRecordings::Rewind(void) eOSState cMenuRecordings::Del(void) { cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current()); - if (ri) { + if (ri && !ri->IsDirectory()) { //XXX what if this recording's file is currently in use??? //XXX if (!ti->recording) { if (Interface->Confirm(tr("Delete recording?"))) { - if (ri->recording->Delete()) { - cReplayControl::ClearLastReplayed(ri->recording->FileName()); - cOsdMenu::Del(Current()); - Display(); + cRecording *recording = GetRecording(ri); + if (recording) { + if (recording->Delete()) { + cReplayControl::ClearLastReplayed(ri->FileName()); + cOsdMenu::Del(Current()); + Recordings.Del(recording); + Display(); + } + else + Interface->Error(tr("Error while deleting recording!")); } - else - Interface->Error(tr("Error while deleting recording!")); } //XXX } //XXX else @@ -1577,8 +1697,11 @@ eOSState cMenuRecordings::Summary(void) if (HasSubMenu() || Count() == 0) return osContinue; cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current()); - if (ri && ri->recording->Summary() && *ri->recording->Summary()) - return AddSubMenu(new cMenuText(tr("Summary"), ri->recording->Summary())); + if (ri && !ri->IsDirectory()) { + cRecording *recording = GetRecording(ri); + if (recording && recording->Summary() && *recording->Summary()) + return AddSubMenu(new cMenuText(tr("Summary"), recording->Summary())); + } return osContinue; } @@ -1597,6 +1720,8 @@ eOSState cMenuRecordings::ProcessKey(eKeys Key) default: break; } } + if (!HasSubMenu() && Key != kNone) + SetHelpKeys(); return state; } @@ -1712,13 +1837,14 @@ void cMenuSetup::Set(void) Add(new cMenuEditIntItem( tr("MarginStart"), &data.MarginStart)); Add(new cMenuEditIntItem( tr("MarginStop"), &data.MarginStop)); Add(new cMenuEditIntItem( tr("EPGScanTimeout"), &data.EPGScanTimeout)); - Add(new cMenuEditIntItem( tr("EPGBugfixLevel"), &data.EPGBugfixLevel, 0, 3)); + Add(new cMenuEditIntItem( tr("EPGBugfixLevel"), &data.EPGBugfixLevel, 0, MAXEPGBUGFIXLEVEL)); Add(new cMenuEditIntItem( tr("SVDRPTimeout"), &data.SVDRPTimeout)); Add(new cMenuEditBoolItem(tr("SortTimers"), &data.SortTimers)); Add(new cMenuEditIntItem( tr("PrimaryLimit"), &data.PrimaryLimit, 0, MAXPRIORITY)); Add(new cMenuEditIntItem( tr("DefaultPriority"), &data.DefaultPriority, 0, MAXPRIORITY)); Add(new cMenuEditIntItem( tr("DefaultLifetime"), &data.DefaultLifetime, 0, MAXLIFETIME)); Add(new cMenuEditBoolItem(tr("UseSubtitle"), &data.UseSubtitle)); + Add(new cMenuEditBoolItem(tr("RecordingDirs"), &data.RecordingDirs)); Add(new cMenuEditBoolItem(tr("VideoFormat"), &data.VideoFormat, "4:3", "16:9")); Add(new cMenuEditBoolItem(tr("ChannelInfoPos"), &data.ChannelInfoPos, tr("bottom"), tr("top"))); Add(new cMenuEditIntItem( tr("OSDwidth"), &data.OSDwidth, MINOSDWIDTH, MAXOSDWIDTH)); @@ -1815,6 +1941,18 @@ cMenuMain::cMenuMain(bool Replaying, eOSState State) { digit = 0; + // Title with disk usage: + +#define MB_PER_MINUTE 30 // this is just an estimate! + + char buffer[40]; + int FreeMB; + int Percent = VideoDiskSpace(&FreeMB); + int Hours = int(double(FreeMB) / MB_PER_MINUTE / 60); + int Minutes = (FreeMB / MB_PER_MINUTE) % 60; + snprintf(buffer, sizeof(buffer), "%s - Disk %d%% - %2d:%02d %s", tr("Main"), Percent, Hours, Minutes, tr("free")); + SetTitle(buffer); + // Basic menu items: Add(new cOsdItem(hk(tr("Schedule")), osSchedule)); @@ -1871,7 +2009,7 @@ cMenuMain::cMenuMain(bool Replaying, eOSState State) // Initial submenus: switch (State) { - case osRecordings: AddSubMenu(new cMenuRecordings); break; + case osRecordings: AddSubMenu(new cMenuRecordings(NULL, 0, true)); break; #ifdef DVDSUPPORT case osDVD: AddSubMenu(new cMenuDVD); break; #endif //DVDSUPPORT @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.h 1.34 2001/10/28 15:21:04 kls Exp $ + * $Id: menu.h 1.35 2002/01/20 13:38:34 kls Exp $ */ #ifndef _MENU_H @@ -55,15 +55,24 @@ public: }; #endif //DVDSUPPORT +class cMenuRecordingItem; + class cMenuRecordings : public cOsdMenu { private: - cRecordings Recordings; + static cRecordings Recordings; + char *base; + int level; + static int helpKeys; + void SetHelpKeys(void); + cRecording *GetRecording(cMenuRecordingItem *Item); + bool Open(bool OpenSubMenus = false); eOSState Play(void); eOSState Rewind(void); eOSState Del(void); eOSState Summary(void); public: - cMenuRecordings(void); + cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false); + ~cMenuRecordings(); virtual eOSState ProcessKey(eKeys Key); }; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osd.c 1.18 2001/08/25 13:15:16 kls Exp $ + * $Id: osd.c 1.20 2002/01/26 11:09:58 kls Exp $ */ #include "osd.h" @@ -127,9 +127,7 @@ void cOsdMenu::SetHelp(const char *Red, const char *Green, const char *Yellow, c helpYellow = Yellow; helpBlue = Blue; if (visible) - Display(); - //XXX Interface->Help(helpRed, helpGreen, helpYellow, helpBlue); - //XXX must clear unused button areas! + Interface->Help(helpRed, helpGreen, helpYellow, helpBlue); } void cOsdMenu::Del(int Index) @@ -150,6 +148,10 @@ void cOsdMenu::Add(cOsdItem *Item, bool Current) void cOsdMenu::Display(void) { + if (subMenu) { + subMenu->Display(); + return; + } visible = true; Interface->Clear(); Interface->SetCols(cols); @@ -179,6 +181,11 @@ void cOsdMenu::Display(void) Interface->Status(status); } +void cOsdMenu::SetCurrent(cOsdItem *Item) +{ + current = Item ? Item->Index() : -1; +} + void cOsdMenu::RefreshCurrent(void) { cOsdItem *item = Get(current); @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osd.h 1.24 2001/08/25 12:56:46 kls Exp $ + * $Id: osd.h 1.25 2002/01/20 10:42:14 kls Exp $ */ #ifndef __OSD_H @@ -83,6 +83,7 @@ protected: bool visible; virtual void Clear(void); bool SpecialItem(int idx); + void SetCurrent(cOsdItem *Item); void RefreshCurrent(void); void DisplayCurrent(bool Current); void CursorUp(void); diff --git a/recording.c b/recording.c index fe56a6e..acdf264 100644 --- a/recording.c +++ b/recording.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.c 1.42 2001/10/20 10:28:28 kls Exp $ + * $Id: recording.c 1.48 2002/01/27 15:14:45 kls Exp $ */ #include "recording.h" @@ -14,6 +14,7 @@ #include <string.h> #include <sys/stat.h> #include <unistd.h> +#include "i18n.h" #include "interface.h" #include "tools.h" #include "videodir.h" @@ -37,7 +38,7 @@ #define DELETEDLIFETIME 1 // hours after which a deleted recording will be actually removed #define REMOVECHECKDELTA 3600 // seconds between checks for removing deleted files -#define DISKCHECKDELTA 300 // seconds between checks for free disk space +#define DISKCHECKDELTA 100 // seconds between checks for free disk space #define REMOVELATENCY 10 // seconds to wait until next check after removing a file void RemoveDeletedRecordings(void) @@ -118,7 +119,7 @@ void AssertFreeDiskSpace(int Priority) return; } // Unable to free disk space, but there's nothing we can do about that... - esyslog(LOG_ERR, "low disk space, but no recordings to delete"); + Interface->Confirm(tr("Low disk space"), 30); } LastFreeDiskCheck = time(NULL); } @@ -184,6 +185,8 @@ void cResumeFile::Delete(void) // --- cRecording ------------------------------------------------------------ +#define RESUME_NOT_INITIALIZED (-2) + struct tCharExchange { char a; char b; }; tCharExchange CharExchange[] = { { '~', '/' }, @@ -213,6 +216,7 @@ char *ExchangeChars(char *s, bool ToFileSystem) cRecording::cRecording(cTimer *Timer, const char *Subtitle, const char *Summary) { + resume = RESUME_NOT_INITIALIZED; titleBuffer = NULL; sortBuffer = NULL; fileName = NULL; @@ -242,6 +246,7 @@ cRecording::cRecording(cTimer *Timer, const char *Subtitle, const char *Summary) cRecording::cRecording(const char *FileName) { + resume = RESUME_NOT_INITIALIZED; titleBuffer = NULL; sortBuffer = NULL; fileName = strdup(FileName); @@ -342,6 +347,15 @@ char *cRecording::SortName(void) return sortBuffer; } +int cRecording::GetResume(void) +{ + if (resume == RESUME_NOT_INITIALIZED) { + cResumeFile ResumeFile(FileName()); + resume = ResumeFile.Read(); + } + return resume; +} + bool cRecording::operator< (const cListObject &ListObject) { cRecording *r = (cRecording *)&ListObject; @@ -360,27 +374,47 @@ const char *cRecording::FileName(void) return fileName; } -const char *cRecording::Title(char Delimiter, bool NewIndicator) +const char *cRecording::Title(char Delimiter, bool NewIndicator, int Level) { - char New = ' '; - if (NewIndicator) { - cResumeFile ResumeFile(FileName()); - if (ResumeFile.Read() <= 0) - New = '*'; - } + char New = NewIndicator && IsNew() ? '*' : ' '; delete titleBuffer; titleBuffer = NULL; - struct tm tm_r; - struct tm *t = localtime_r(&start, &tm_r); - asprintf(&titleBuffer, "%02d.%02d%c%02d:%02d%c%c%s", - t->tm_mday, - t->tm_mon + 1, - Delimiter, - t->tm_hour, - t->tm_min, - New, - Delimiter, - name); + if (Level < 0 || Level == HierarchyLevels()) { + struct tm tm_r; + struct tm *t = localtime_r(&start, &tm_r); + const char *s; + if (Level > 0 && (s = strrchr(name, '~')) != NULL) + s++; + else + s = name; + asprintf(&titleBuffer, "%02d.%02d%c%02d:%02d%c%c%s", + t->tm_mday, + t->tm_mon + 1, + Delimiter, + t->tm_hour, + t->tm_min, + New, + Delimiter, + s); + } + else if (Level < HierarchyLevels()) { + const char *s = name; + const char *p = s; + while (*++s) { + if (*s == '~') { + if (Level--) + p = s + 1; + else + break; + } + } + titleBuffer = new char[s - p + 3]; + *titleBuffer = Delimiter; + *(titleBuffer + 1) = Delimiter; + strn0cpy(titleBuffer + 2, p, s - p + 1); + } + else + return ""; return titleBuffer; } @@ -395,6 +429,17 @@ const char *cRecording::PrefixFileName(char Prefix) return NULL; } +int cRecording::HierarchyLevels(void) +{ + const char *s = name; + int level = 0; + while (*++s) { + if (*s == '~') + level++; + } + return level; +} + bool cRecording::WriteSummary(void) { if (summary) { @@ -429,6 +474,11 @@ bool cRecording::Delete(void) bool cRecording::Remove(void) { + // let's do a final safety check here: + if (!endswith(FileName(), DELEXT)) { + esyslog(LOG_ERR, "attempt to remove recording %s", FileName()); + return false; + } isyslog(LOG_INFO, "removing recording %s", FileName()); return RemoveVideoFile(FileName()); } @@ -446,7 +496,7 @@ bool cRecordings::Load(bool Deleted) char *s; while ((s = readline(p)) != NULL) { cRecording *r = new cRecording(s); - if (r->name) + if (r->Name()) Add(r); else delete r; @@ -461,6 +511,15 @@ bool cRecordings::Load(bool Deleted) return result; } +cRecording *cRecordings::GetByName(const char *FileName) +{ + for (cRecording *recording = First(); recording; recording = Next(recording)) { + if (strcmp(recording->FileName(), FileName) == 0) + return recording; + } + return NULL; +} + // --- cMark ----------------------------------------------------------------- char *cMark::buffer = NULL; @@ -573,7 +632,7 @@ void cRecordingUserCommand::InvokeCommand(const char *State, const char *Recordi { if (command) { char *cmd; - asprintf(&cmd, "%s %s '%s'", command, State, RecordingFileName); + asprintf(&cmd, "%s %s \"%s\"", command, State, strescape(RecordingFileName, "\"$")); isyslog(LOG_INFO, "executing '%s'", cmd); SystemExec(cmd); delete cmd; diff --git a/recording.h b/recording.h index aead97e..3aaa7e9 100644 --- a/recording.h +++ b/recording.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.h 1.18 2001/10/07 10:38:56 kls Exp $ + * $Id: recording.h 1.21 2002/01/26 15:18:16 kls Exp $ */ #ifndef __RECORDING_H @@ -15,7 +15,7 @@ #include "tools.h" void RemoveDeletedRecordings(void); -void AssertFreeDiskSpace(int Priority); +void AssertFreeDiskSpace(int Priority = 0); class cResumeFile { private: @@ -29,8 +29,8 @@ public: }; class cRecording : public cListObject { - friend class cRecordings; private: + int resume; char *titleBuffer; char *sortBuffer; char *fileName; @@ -38,6 +38,7 @@ private: char *summary; char *StripEpisodeName(char *s); char *SortName(void); + int GetResume(void); public: time_t start; int priority; @@ -46,10 +47,13 @@ public: cRecording(const char *FileName); ~cRecording(); virtual bool operator< (const cListObject &ListObject); + const char *Name(void) { return name; } const char *FileName(void); - const char *Title(char Delimiter = ' ', bool NewIndicator = false); + const char *Title(char Delimiter = ' ', bool NewIndicator = false, int Level = -1); const char *Summary(void) { return summary; } const char *PrefixFileName(char Prefix); + int HierarchyLevels(void); + bool IsNew(void) { return GetResume() <= 0; } bool WriteSummary(void); bool Delete(void); // Changes the file name so that it will no longer be visible in the "Recordings" menu @@ -62,6 +66,7 @@ public: class cRecordings : public cList<cRecording> { public: bool Load(bool Deleted = false); + cRecording *GetByName(const char *FileName); }; class cMark : public cListObject { @@ -10,7 +10,7 @@ * and interact with the Video Disk Recorder - or write a full featured * graphical interface that sits on top of an SVDRP connection. * - * $Id: svdrp.c 1.27 2001/11/04 11:25:05 kls Exp $ + * $Id: svdrp.c 1.28 2002/01/13 16:07:42 kls Exp $ */ #include "svdrp.h" @@ -899,49 +899,49 @@ void cSVDRP::Process(void) } if (NewConnection) lastActivity = time(NULL); - if (file.Ready(false)) { - unsigned char c; - int r = safe_read(file, &c, 1); - if (r > 0) { - if (c == '\n' || c == 0x00) { - // strip trailing whitespace: - while (numChars > 0 && strchr(" \t\r\n", cmdLine[numChars - 1])) - cmdLine[--numChars] = 0; - // make sure the string is terminated: - cmdLine[numChars] = 0; - // showtime! - Execute(cmdLine); - numChars = 0; + while (file.Ready(false)) { + unsigned char c; + int r = safe_read(file, &c, 1); + if (r > 0) { + if (c == '\n' || c == 0x00) { + // strip trailing whitespace: + while (numChars > 0 && strchr(" \t\r\n", cmdLine[numChars - 1])) + cmdLine[--numChars] = 0; + // make sure the string is terminated: + cmdLine[numChars] = 0; + // showtime! + Execute(cmdLine); + numChars = 0; + } + else if (c == 0x04 && numChars == 0) { + // end of file (only at beginning of line) + Close(); + } + else if (c == 0x08 || c == 0x7F) { + // backspace or delete (last character) + if (numChars > 0) + numChars--; + } + else if (c <= 0x03 || c == 0x0D) { + // ignore control characters + } + else if (numChars < sizeof(cmdLine) - 1) { + cmdLine[numChars++] = c; + cmdLine[numChars] = 0; + } + else { + Reply(501, "Command line too long"); + esyslog(LOG_ERR, "SVDRP: command line too long: '%s'", cmdLine); + numChars = 0; + } + lastActivity = time(NULL); } - else if (c == 0x04 && numChars == 0) { - // end of file (only at beginning of line) + else if (r <= 0) { + isyslog(LOG_INFO, "lost connection to SVDRP client"); Close(); } - else if (c == 0x08 || c == 0x7F) { - // backspace or delete (last character) - if (numChars > 0) - numChars--; - } - else if (c <= 0x03 || c == 0x0D) { - // ignore control characters - } - else if (numChars < sizeof(cmdLine) - 1) { - cmdLine[numChars++] = c; - cmdLine[numChars] = 0; - } - else { - Reply(501, "Command line too long"); - esyslog(LOG_ERR, "SVDRP: command line too long: '%s'", cmdLine); - numChars = 0; - } - lastActivity = time(NULL); - } - else if (r <= 0) { - isyslog(LOG_INFO, "lost connection to SVDRP client"); - Close(); } - } - else if (Setup.SVDRPTimeout && time(NULL) - lastActivity > Setup.SVDRPTimeout) { + if (Setup.SVDRPTimeout && time(NULL) - lastActivity > Setup.SVDRPTimeout) { isyslog(LOG_INFO, "timeout on SVDRP connection"); Close(true); } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 1.50 2001/10/19 13:12:45 kls Exp $ + * $Id: tools.c 1.53 2002/01/27 12:36:23 kls Exp $ */ #include "tools.h" @@ -136,6 +136,29 @@ char *compactspace(char *s) return s; } +const char *strescape(const char *s, const char *chars) +{ + static char *buffer = NULL; + const char *p = s; + char *t = NULL; + while (*p) { + if (strchr(chars, *p)) { + if (!t) { + buffer = (char *)realloc(buffer, 2 * strlen(s) + 1); + t = buffer + (p - s); + s = strcpy(buffer, s); + } + *t++ = '\\'; + } + if (t) + *t++ = *p; + p++; + } + if (t) + *t = 0; + return s; +} + bool startswith(const char *s, const char *p) { while (*p) { @@ -145,6 +168,17 @@ bool startswith(const char *s, const char *p) return true; } +bool endswith(const char *s, const char *p) +{ + const char *se = s + strlen(s) - 1; + const char *pe = p + strlen(p) - 1; + while (pe >= p) { + if (*pe-- != *se-- || (se < s && pe >= p)) + return false; + } + return true; +} + bool isempty(const char *s) { return !(s && *skipspace(s)); @@ -189,10 +223,12 @@ const char *AddDirectory(const char *DirName, const char *FileName) #define DFCMD "df -m -P '%s'" -uint FreeDiskSpaceMB(const char *Directory) +int FreeDiskSpaceMB(const char *Directory, int *UsedMB) { //TODO Find a simpler way to determine the amount of free disk space! - uint Free = 0; + if (UsedMB) + *UsedMB = 0; + int Free = 0; char *cmd = NULL; asprintf(&cmd, DFCMD, Directory); FILE *p = popen(cmd, "r"); @@ -200,8 +236,10 @@ uint FreeDiskSpaceMB(const char *Directory) char *s; while ((s = readline(p)) != NULL) { if (strchr(s, '/')) { - uint available; - sscanf(s, "%*s %*d %*d %u", &available); + int used, available; + sscanf(s, "%*s %*d %d %d", &used, &available); + if (UsedMB) + *UsedMB = used; Free = available; break; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.h 1.36 2001/09/30 10:20:59 kls Exp $ + * $Id: tools.h 1.39 2002/01/26 15:38:10 kls Exp $ */ #ifndef __TOOLS_H @@ -50,20 +50,22 @@ char *strreplace(char *s, char c1, char c2); char *skipspace(const char *s); char *stripspace(char *s); char *compactspace(char *s); +const char *strescape(const char *s, const char *chars); // returns a statically allocated string! bool startswith(const char *s, const char *p); +bool endswith(const char *s, const char *p); bool isempty(const char *s); int time_ms(void); void delay_ms(int ms); bool isnumber(const char *s); -const char *AddDirectory(const char *DirName, const char *FileName); -uint FreeDiskSpaceMB(const char *Directory); +const char *AddDirectory(const char *DirName, const char *FileName); // returns a statically allocated string! +int FreeDiskSpaceMB(const char *Directory, int *UsedMB = NULL); bool DirectoryOk(const char *DirName, bool LogErrors = false); bool MakeDirs(const char *FileName, bool IsDirectory = false); bool RemoveFileOrDir(const char *FileName, bool FollowSymlinks = false); bool RemoveEmptyDirectories(const char *DirName, bool RemoveThis = false); char *ReadLink(const char *FileName); bool SpinUpDisk(const char *FileName); -const char *DayDateTime(time_t t = 0); +const char *DayDateTime(time_t t = 0); // returns a statically allocated string! class cFile { private: @@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/people/kls/vdr * - * $Id: vdr.c 1.89 2001/11/03 12:23:45 kls Exp $ + * $Id: vdr.c 1.93 2002/01/26 14:07:01 kls Exp $ */ #include <getopt.h> @@ -314,7 +314,6 @@ int main(int argc, char *argv[]) int LastChannel = -1; int PreviousChannel = cDvbApi::CurrentChannel(); time_t LastActivity = 0; - time_t LinearTime = time(NULL); int MaxLatencyTime = 0; bool ForceShutdown = false; @@ -324,14 +323,6 @@ int main(int argc, char *argv[]) } while (!Interrupted) { - // Test if we are running in the Einstein continuum: - time_t Now = time(NULL); - time_t LinearDelta = Now - LinearTime; - if (LinearDelta) { - if (LinearDelta < 0 || LinearDelta > 300) // assuming nothing will block for more than 5 minutes - esyslog(LOG_ERR, "ERROR: time warp detected (%d seconds)", LinearDelta); - LinearTime = Now; - } // Handle emergency exits: if (cThread::EmergencyExit()) { esyslog(LOG_ERR, "emergency exit requested - shutting down"); @@ -477,7 +468,12 @@ int main(int argc, char *argv[]) } if (!Menu) { EITScanner.Process(); - cVideoCutter::Active(); + if (!cVideoCutter::Active() && cVideoCutter::Ended()) { + if (cVideoCutter::Error()) + Interface->Error(tr("Editing process failed!")); + else + Interface->Info(tr("Editing process finished")); + } } if (!*Interact && (!cRecordControls::Active() || ForceShutdown)) { time_t Now = time(NULL); @@ -508,7 +504,7 @@ int main(int argc, char *argv[]) int Channel = timer ? timer->channel : 0; const char *File = timer ? timer->file : ""; char *cmd; - asprintf(&cmd, "%s %ld %ld %d '%s' %d", Shutdown, Next, Delta, Channel, File, UserShutdown); + asprintf(&cmd, "%s %ld %ld %d \"%s\" %d", Shutdown, Next, Delta, Channel, strescape(File, "\"$"), UserShutdown); isyslog(LOG_INFO, "executing '%s'", cmd); SystemExec(cmd); delete cmd; @@ -518,7 +514,7 @@ int main(int argc, char *argv[]) if (signal(SIGALRM, Watchdog) == SIG_IGN) signal(SIGALRM, SIG_IGN); } - LastActivity = Now; // don't try again too soon + LastActivity = time(NULL); // don't try again too soon continue; // skip the rest of the housekeeping for now } } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: videodir.c 1.6 2001/09/02 14:55:15 kls Exp $ + * $Id: videodir.c 1.7 2002/01/27 12:37:26 kls Exp $ */ #include "videodir.h" @@ -27,7 +27,7 @@ private: public: cVideoDirectory(void); ~cVideoDirectory(); - uint FreeMB(void); + int FreeMB(int *UsedMB = NULL); const char *Name(void) { return name ? name : VideoDirectory; } const char *Stored(void) { return stored; } int Length(void) { return length; } @@ -53,9 +53,9 @@ cVideoDirectory::~cVideoDirectory() delete adjusted; } -uint cVideoDirectory::FreeMB(void) +int cVideoDirectory::FreeMB(int *UsedMB) { - return FreeDiskSpaceMB(name ? name : VideoDirectory); + return FreeDiskSpaceMB(name ? name : VideoDirectory, UsedMB); } bool cVideoDirectory::Next(void) @@ -117,9 +117,9 @@ int OpenVideoFile(const char *FileName, int Flags) cVideoDirectory Dir; if (Dir.IsDistributed()) { // Find the directory with the most free space: - uint MaxFree = Dir.FreeMB(); + int MaxFree = Dir.FreeMB(); while (Dir.Next()) { - uint Free = FreeDiskSpaceMB(Dir.Name()); + int Free = FreeDiskSpaceMB(Dir.Name()); if (Free > MaxFree) { Dir.Store(); MaxFree = Free; @@ -166,7 +166,7 @@ bool RemoveVideoFile(const char *FileName) return RemoveFileOrDir(FileName, true); } -bool VideoFileSpaceAvailable(unsigned int SizeMB) +bool VideoFileSpaceAvailable(int SizeMB) { cVideoDirectory Dir; if (Dir.IsDistributed()) { @@ -181,6 +181,22 @@ bool VideoFileSpaceAvailable(unsigned int SizeMB) return Dir.FreeMB() >= SizeMB; } +int VideoDiskSpace(int *FreeMB, int *UsedMB) +{ + int free = 0, used = 0; + cVideoDirectory Dir; + do { + int u; + free += Dir.FreeMB(&u); + used += u; + } while (Dir.Next()); + if (FreeMB) + *FreeMB = free; + if (UsedMB) + *UsedMB = used; + return (free + used) ? used * 100 / (free + used) : 0; +} + const char *PrefixVideoFileName(const char *FileName, char Prefix) { static char *PrefixedName = NULL; @@ -4,19 +4,22 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: videodir.h 1.3 2001/02/11 13:12:50 kls Exp $ + * $Id: videodir.h 1.4 2002/01/27 12:37:20 kls Exp $ */ #ifndef __VIDEODIR_H #define __VIDEODIR_H +#include <stdlib.h> + extern const char *VideoDirectory; int OpenVideoFile(const char *FileName, int Flags); int CloseVideoFile(int FileHandle); bool RenameVideoFile(const char *OldName, const char *NewName); bool RemoveVideoFile(const char *FileName); -bool VideoFileSpaceAvailable(unsigned int SizeMB); +bool VideoFileSpaceAvailable(int SizeMB); +int VideoDiskSpace(int *FreeMB = NULL, int *UsedMB = NULL); // returns the used disk space in percent const char *PrefixVideoFileName(const char *FileName, char Prefix); void RemoveEmptyVideoDirectories(void); |