You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(95) |
Dec
(62) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(70) |
Feb
(137) |
Mar
(102) |
Apr
(50) |
May
(62) |
Jun
(6) |
Jul
|
Aug
(12) |
Sep
(146) |
Oct
(108) |
Nov
(49) |
Dec
(84) |
2003 |
Jan
(60) |
Feb
(126) |
Mar
(111) |
Apr
(170) |
May
(162) |
Jun
(87) |
Jul
(88) |
Aug
(51) |
Sep
(50) |
Oct
(24) |
Nov
(95) |
Dec
(62) |
2004 |
Jan
(93) |
Feb
(81) |
Mar
(106) |
Apr
(94) |
May
(109) |
Jun
(8) |
Jul
(22) |
Aug
(15) |
Sep
(82) |
Oct
(26) |
Nov
(44) |
Dec
(28) |
2005 |
Jan
(25) |
Feb
(17) |
Mar
(27) |
Apr
(7) |
May
(25) |
Jun
(22) |
Jul
(21) |
Aug
(22) |
Sep
(11) |
Oct
(15) |
Nov
(20) |
Dec
(42) |
2006 |
Jan
(200) |
Feb
(42) |
Mar
(56) |
Apr
(91) |
May
(37) |
Jun
(54) |
Jul
(33) |
Aug
(15) |
Sep
(26) |
Oct
(30) |
Nov
(71) |
Dec
(102) |
2007 |
Jan
(48) |
Feb
(40) |
Mar
(24) |
Apr
(25) |
May
(7) |
Jun
(14) |
Jul
(35) |
Aug
(32) |
Sep
(28) |
Oct
(55) |
Nov
(57) |
Dec
(14) |
2008 |
Jan
(40) |
Feb
(32) |
Mar
(25) |
Apr
(29) |
May
(16) |
Jun
(49) |
Jul
(26) |
Aug
(31) |
Sep
(7) |
Oct
(16) |
Nov
(11) |
Dec
(13) |
2009 |
Jan
(13) |
Feb
(30) |
Mar
(38) |
Apr
(8) |
May
(23) |
Jun
(19) |
Jul
(24) |
Aug
(46) |
Sep
(65) |
Oct
(30) |
Nov
(28) |
Dec
(37) |
2010 |
Jan
(31) |
Feb
(41) |
Mar
(43) |
Apr
(82) |
May
(39) |
Jun
(40) |
Jul
(31) |
Aug
(46) |
Sep
(104) |
Oct
(55) |
Nov
(67) |
Dec
(32) |
2011 |
Jan
(26) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
(17) |
Mar
(32) |
Apr
(34) |
May
(15) |
Jun
(50) |
Jul
(19) |
Aug
(8) |
Sep
(16) |
Oct
(18) |
Nov
(12) |
Dec
(3) |
2013 |
Jan
(7) |
Feb
(11) |
Mar
(11) |
Apr
(13) |
May
(17) |
Jun
(5) |
Jul
(4) |
Aug
(2) |
Sep
(4) |
Oct
(44) |
Nov
(14) |
Dec
(57) |
2014 |
Jan
(42) |
Feb
(11) |
Mar
(13) |
Apr
(33) |
May
(48) |
Jun
(22) |
Jul
(7) |
Aug
(19) |
Sep
(11) |
Oct
(34) |
Nov
(12) |
Dec
(18) |
2015 |
Jan
(17) |
Feb
(17) |
Mar
(15) |
Apr
(23) |
May
(2) |
Jun
(41) |
Jul
(31) |
Aug
(33) |
Sep
(6) |
Oct
(5) |
Nov
(8) |
Dec
(23) |
2016 |
Jan
(9) |
Feb
(6) |
Mar
(26) |
Apr
(2) |
May
(24) |
Jun
(20) |
Jul
(34) |
Aug
(4) |
Sep
(1) |
Oct
|
Nov
(2) |
Dec
(1) |
2017 |
Jan
(17) |
Feb
(6) |
Mar
(8) |
Apr
|
May
(1) |
Jun
(1) |
Jul
(4) |
Aug
(4) |
Sep
(14) |
Oct
(1) |
Nov
(8) |
Dec
|
From: Ed A. <ep...@us...> - 2002-01-21 15:11:34
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv14741 Modified Files: XMLTV.pm listings_to_latex pick_cgi Log Message: Changed the behaviour of best_name(), which picks the best choice for your current language from a list of [language, text] pairs. The new version returns a pair [language, text], so you know what language was picked. The optional comparison function you pass in to compare text strings is unchanged. Index: XMLTV.pm =================================================================== RCS file: /cvsroot/xmltv/xmltv/XMLTV.pm,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** XMLTV.pm 2002/01/19 18:05:14 1.12 --- XMLTV.pm 2002/01/21 15:11:31 1.13 *************** *** 876,884 **** # reference to list of languages (in Lingua::Preferred format), # reference to list of [language, string] pairs. ! # (optional) comparison function that returns 1 if ! # its first argument is better than its second argument, or 0 ! # if equally good, or -1 if first argument worse. # ! # Returns: the best of the strings to use. # # There could be some more fancy scheme where both length and language --- 876,885 ---- # reference to list of languages (in Lingua::Preferred format), # reference to list of [language, string] pairs. ! # (optional) function that compares two strings of text and ! # returns 1 if its first argument is better than its second ! # argument, or 0 if equally good, or -1 if first argument worse. # ! # Returns: [l, s] pair, where s is the best of the strings to use ! # and l is its language. # # There could be some more fancy scheme where both length and language *************** *** 905,908 **** --- 906,910 ---- my $pref_lang = which_lang($wanted_langs, \@avail_langs); my @candidates; + my %cand_lang; foreach (@pairs) { my ($text, $lang) = @$_; *************** *** 910,923 **** or (defined $pref_lang and $lang eq $pref_lang)); push @candidates, $text; - } ! return undef if not @candidates; ! if (not defined $compare) { ! return $candidates[0]; } # Some unnecessary comparisons, but who cares. ! @candidates = sort { $compare->($a, $b) } @candidates; ! return $candidates[0]; } --- 912,930 ---- or (defined $pref_lang and $lang eq $pref_lang)); push @candidates, $text; ! # Remember the language of this string. If we get the same ! # string twice, once with a language and once without, then ! # only the first occurrence is remembered. This is reasonable ! # and getting the same string twice is pathological anyway. ! # ! $cand_lang{$text} = $lang unless exists $cand_lang{$text}; } + return undef if not @candidates; # Some unnecessary comparisons, but who cares. ! @candidates = sort { $compare->($a, $b) } @candidates ! if defined $compare; ! my $chosen = $candidates[0]; ! return [ $cand_lang{$chosen}, $chosen ]; } Index: listings_to_latex =================================================================== RCS file: /cvsroot/xmltv/xmltv/listings_to_latex,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** listings_to_latex 2001/12/19 16:06:39 1.18 --- listings_to_latex 2002/01/21 15:11:31 1.19 *************** *** 120,124 **** t 'possible titles: ' . d $h{title}; ! my $title = best_name(\@PREF_LANGS, $h{title}, $shorter); t 'chosen: ' . d $title; warn "programme has no title" if not defined $title; --- 120,124 ---- t 'possible titles: ' . d $h{title}; ! my $title = best_name(\@PREF_LANGS, $h{title}, $shorter)->[1]; t 'chosen: ' . d $title; warn "programme has no title" if not defined $title; *************** *** 129,133 **** t 'possible sub-titles: ' . d $h{'sub-title'}; warn "list of sub-titles but empty" if not @$_; ! $sub_title = best_name(\@PREF_LANGS, $_, $shorter); t 'chosen: ' . d $sub_title; warn "could not find sub-title" if not defined $sub_title; --- 129,133 ---- t 'possible sub-titles: ' . d $h{'sub-title'}; warn "list of sub-titles but empty" if not @$_; ! $sub_title = best_name(\@PREF_LANGS, $_, $shorter)->[1]; t 'chosen: ' . d $sub_title; warn "could not find sub-title" if not defined $sub_title; *************** *** 394,398 **** next; } ! my $best = best_name(\@PREF_LANGS, \@names, $shorter); t 'best name: ' . d $best; if (not defined $best) { --- 394,398 ---- next; } ! my $best = best_name(\@PREF_LANGS, \@names, $shorter)->[1]; t 'best name: ' . d $best; if (not defined $best) { Index: pick_cgi =================================================================== RCS file: /cvsroot/xmltv/xmltv/pick_cgi,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** pick_cgi 2002/01/08 13:30:24 1.16 --- pick_cgi 2002/01/21 15:11:31 1.17 *************** *** 290,294 **** unless $skip <= $i and $i < $next; ! my $title = best_name(\@PREF_LANGS, $programmes[$i]->{title}); print "$title: $val<br>\n"; --- 290,294 ---- unless $skip <= $i and $i < $next; ! my $title = best_name(\@PREF_LANGS, $programmes[$i]->{title})->[1]; print "$title: $val<br>\n"; *************** *** 345,349 **** for (my $i = $skip; $i < $next; $i++) { my $val = param("prog$i"); ! my $title = best_name(\@PREF_LANGS, $programmes[$i]->{title}); if ((defined $wanted{$title} and $wanted{$title} eq 'always') or (defined $val and $val eq 'yes') ) --- 345,349 ---- for (my $i = $skip; $i < $next; $i++) { my $val = param("prog$i"); ! my $title = best_name(\@PREF_LANGS, $programmes[$i]->{title})->[1]; if ((defined $wanted{$title} and $wanted{$title} eq 'always') or (defined $val and $val eq 'yes') ) *************** *** 389,393 **** { my $prog = $programmes[$i]; ! my $title = best_name(\@PREF_LANGS, $prog->{title}); for ($wanted{$title}) { if (not defined or $_ eq 'no' or $_ eq 'yes') { --- 389,393 ---- { my $prog = $programmes[$i]; ! my $title = best_name(\@PREF_LANGS, $prog->{title})->[1]; for ($wanted{$title}) { if (not defined or $_ eq 'no' or $_ eq 'yes') { *************** *** 413,422 **** my ($start, $stop, $channel) = @h{qw(start stop channel)}; $stop = '' if not defined $stop; ! my $title = best_name(\@PREF_LANGS, $h{title}); my $display_title = $title; $display_title .= " (@{$h{date}})" if defined $h{date}; ! my $category = best_name(\@PREF_LANGS, $h{category}) if $h{category}; ! my $sub_title = best_name(\@PREF_LANGS, $h{'sub-title'}) if $h{'sub-title'}; ! my $desc = best_name(\@PREF_LANGS, $h{desc}) if $h{desc}; if (defined $prev) { --- 413,422 ---- my ($start, $stop, $channel) = @h{qw(start stop channel)}; $stop = '' if not defined $stop; ! my $title = best_name(\@PREF_LANGS, $h{title})->[1]; my $display_title = $title; $display_title .= " (@{$h{date}})" if defined $h{date}; ! my $category = best_name(\@PREF_LANGS, $h{category})->[1] if $h{category}; ! my $sub_title = best_name(\@PREF_LANGS, $h{'sub-title'})->[1] if $h{'sub-title'}; ! my $desc = best_name(\@PREF_LANGS, $h{desc})->[1] if $h{desc}; if (defined $prev) { |
From: Robert E. <rm...@us...> - 2002-01-21 06:31:05
|
Update of /cvsroot/xmltv/xmltv/doc In directory usw-pr-cvs1:/tmp/cvs-serv12623/doc Added Files: tvcheck_doc.jpg Log Message: initial load --- NEW FILE: tvcheck_doc.jpg --- ÿØÿà #%$""!&+7/&)4)!"0A149;>>>%.DIC<H7=>;ÿÛ ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÀ ||\6]Öܪ!¤æÑþ§b|V %øø¸l»¨ÿ ||\6]ÖÈ©"¥æ®õät¼Õ A>>./ë`?Ô\GÒóR¿ÜLGÒóV<%øø¸l¿ûr:njïû rJnjÈ õê!É)¹«¾_â²a()ññpÙZ±»êþIMÍJòö¿ÓsVP%øø¸l¿Wuü»åÕw%§æ¬°J £ õ¨òæ»ÓóWFî+¹5?5fPMøl»?Õܺ7k[É©ù«41ðÙZO-+y5?5wË:ÞOOÍY°F>/ëF7cYÉàæ®ùaYÉàæ¬èJ £ õ¡ò¾³ÁÍ]ò¶³ÁÍYðÑËú¿¬«â æ®ÕÕñóUJ £ õ}åU_5wʾ&j¢ A4cá²þ¯<§ªâaæ®ÓUq0óU J £ õwå-W4.ÑÕq0óB¥ AMøl¿«(ªx¨y¡tn§8J £ õoåO4.øú§HK § õkãÚ..h]åG4*°N>/êÌcu\\к1ø¸ù¡V ¦|6_ÕÆ'øóBWçøóB® A4ãâl¿«Mñ#æ ÑMñ#æ ø&8ÌNI°ó>Ôb¢í£¿ý¹±q¶»·VýÓw!àÕ;ÿ xÄÄ:@Áómii»'Ú§xÿмÿ ÝíSżg¼ÀøzR»ä>ÄËÒ BnÉö©âÞ(<Á8zR"°N&^«ô&ìj-âȼ¥+¾F`¼L)W¨MÙ>Õ<[Ÿ7'HW|Á¸©:B¯²}ªx·?#ð~*N®ù!ñRt ]¡7dûTñoHáT!]òKâ¤é ºBnÉö©âÞ)¼Âx©:B%0*N«&ìj-âÉ\+¤+¾Ka|\!VèMÙ>Õ<[ÅGø_þy]òcâßÏ*Ù ·'jx·&pÎ-üò»äÖÅ¿UªnNÔño~Má¼[ùåNáÜ[ùåZ!6äéâÞ+<ø·óÊïøþyVHM¹:x·ßaÿ êzl§þ6Î!½c¶Ëû¶ÿ L5ká£0FÆBùáJC;,÷XØ{[ѳmÌØ'<ä^Àjp ÓOù;þv[UuÕ2ná°H*cÁedqÜâÏ{Xí"÷àØJHÌÞ<7UµImI>!Äõën½¾éµ2úºàøËêª%cÛá¢ÂBPù/¯ã} â±Á¦Öód¶¥©BHËà´ZôpLÒnMÌ;V¥ #16OI£9 øS~Nâ>zÕ¡$e<Ä>,|ôy?^ÉY4;SY·±jÔLB3,,l²D|øÍ,\uFÜkËóM³^KæùøPì|®3CÜ,K_m\·½ ó {¤Áè÷9ÔñânIÊ´f±áÃ%Ŷ¾àú¡àXÒ$ÚRòwø±óÑäî!ñcçZFSÉúöÈàÂ˶Àëmh6ûR¼Cr[¯ÿ qyîÙå|wn² ÿ =\qL1ï EfÚK8rë³vWáA¦/q74×ÞøAØ#À°¦þ`ìYj'ObÐ2¢ÊêjpÉÄÒº745 ¹¶u¯ªöºÖ Füô±GòsÒÄ´ Füô±&G¸¾ÁñüÜãö} ÔEß¹Ùü(ÀÒÑBË£0×ö%_Î.ðA^ßRÉÌçÃEO@+ê[!¬ªtm eÌû¶ÖQjkúq<Ocä9£{ÎþHÌ/³6]|;è6ÍqcCYK á ÙwHþNzAØ«pDá\Úi©µ;üÍË¢§|g/únP5#Ý¡7»õi çÕQ³×²6¼´jkµ4¤ÜïÁ`vNL:oÂ#ß óõi}]ü©ÔÕAktnyÊÐ$$ð5KE+HýïáFgÞþ Ûðé¿ Ê4ÐÕÐMWÖ,0Tt¾ÇkØ~(ßØÞ13SQ »¤k]îBâ rf˯eì`ð,)¢oÂ$tß V` Í®ðGµôB¦ÔÎÙGògϳ~êÙR=ùá:{»VÐ7ò®ÝÖ·6Ç{KøR+M,¾l²ZÛo`±ÔT:ãO7ê¹[PL%åÔòl p Úé$äæü(ÒIÉMøT\Ó»ÃÝSNic2g÷Ù²ßÓu5ÞXð` ¯K{j?²ß¢oü`nÑÿ .ë[Á[n /áYY·GYQ¶)`dbfºàyñ5²5¤HÐâuæÕ|»7Ô*lw¢eóKOZxn¶¸yäÜw»Nà|Ïäé¿ 3;_üVëÛî»þV3Ä$¶ªª(¢ª7UHø!ºW[1k^Ûy¢öèÔ§7k[I=<POiâaÌûFZ|áçoAÚÐ[»WüFêÙî»?þWtraÓ~ «}v KÜÇ:@NhÁ v².5ijZi$äæü(ÒIÉMøRÐFNL:oÂ$tß -¤ð£I'&7áKBi$äæü(ÒIÉMøRÐI90é¿ LÏy§ðû×¥¿ÿ ZÿÕßé$äæü)%ï&&ÜimmnýiÕOLeò0psFòÇDkYT$tß I90é¿ ì Î$O$ïù¡K@$tß I90é¿ ZHÒIÉMøQ¤ð¥¡AïÍhóÿ 4raÓ~´ FNL:o©wzIÜãÉ7UïmA^ª=ß~ÉóÅý¾þ«}ÔÔ_ ÿ ã#Jßáob;Û^ÌÖA¶ÒKÉÖqIy3:Áî*Ì Vä5î.±ú¤V8¯Îo ÒKÉYÖqIy+:Áî%¡$¼`÷¤³¬âZ#I/%gX=Äi%ä¬ë¸ÒKÉYÖq$¾ARH§i&&ÜiímnßɯìN¤ä»÷mö¹i%ä¬ë¸$¼`÷ÐF^Jΰ{ÒKÉYÖq-¤³¬â4òVuÜKBäÍjv»Îoýö·Ý^ð¥i%ä¬ë¸ü<þ³¡©hi%ä¬ë¸$¼`÷ÐF^Jΰ{ÒKÉYÖq-¤³¬âLÏÓ¾ôío½Þ÷÷Fê÷ÉÔÿ ÿ æÔÅ4FsIöämÝrlwÀ°ÄÜøÄ®Jr"s´"æA¨8¯`ÞA£ÒKÉÖqIy3:Áî(x-\Õxw¿1nf¶ÀÛz~° ÂIy3:Áî#I/&gX=Ä´ F^Lΰ{ÒKÉÖq-¤3¬â4òfuÜKBi%äÌë¸3ä4ó^´hα5ÿ ÿ Ô FyxtǺòñéu-^!1î¤Èé3Ât-¿«Jg*u5PZÝuò!6Ûk5³ËÄ3¦=ÔggL{«&)¨+(&ª¢FÝ=3MfZO|ð6¼o{ûÑÁtÞ1ßSQ¡ Ʒ¤/sXs}ï³6][/dòñéuåâÓêÀ[\i#k(ÝSzf±¹YG9FðÎôÝZ jGI¡mîýZSÀ7ò¥i%âÓên°8ÄÐËæË%¶ö@ÊpÊHë©)JÌ©íÝ!cÅÓp^.ßÌ8msËÄ3¦=ÔggL{ª. ÙÙaí©Î'm,bLþû6Q{ún¦ At ¼,#µIÞ?²åÑ3ÜïGýǺwÁ¿Ôw°¬õC0ÿ ychr@¶¡{B¬òñéuåâÓêËÒÖâ4´2Ø Çs.gZM{Ù[5.#_,t²I#_O(§d4þhsà±$[VÄÜòñéuåâÓêÊQcÝe[©Ñ1ÌÆÞÀÛ´ô¿V¢gÔQA4Èù#kÞEÈ@¼òñéuåâÓêZ#<¼C:cÝFyxtǺÏ/Î÷Q^!13ËÄ3¦=Ô!§ð´ Ö%'ÿ õQîûôvO/ìQ¿Õo±=qèÿ 'Á/ÚAÅHbðb.ßíªûPo8]±ÄGö#<ÜL}!ìU¸c½ÔÑèéSzvµE9FðÌôÝZ jGI£eîýYÏ ª©°LFZGé4Zg± ÍÈaÑÚÆÆäæ9¿¬Ph+Ùáö.ç¤=}dRÏR4ÒÎÍ&`l,nEÀØ¢IãM¢l\aiih ¦âAÈò|⬣j Ny¸úCØóq1ô±gi±lDâ´ÕÍ¢iCNØlÇ·@^\EÇÛ½±iP#<ÜL}!ìFy¸úCØR3ÍÄÇÒÄg¤=h@óq1ô±æâcébZ#<ÜL}!ìIÒy¯ :`Á×ÞR4GIõÅ$h&ë=ÑM'Ö{t ¢<O¬ö#Dy4YìQÐFòi>³ØäÒ}g±GB #ɤúÏbL"{<Ì-tÊHÑM'Ö{¢<O¬ö(èA#Dy4YìFòi>³Ø£¡äÒ}g±#ɤúÏb4GIõÄÒ¹æMm ^«_µ24GIõÄh&ë=:HÑM'Ö{¢<O¬ö(èA#Dy4YìFòi>³Ø£¡ÍÈãO!Îàwõjû%h&ë=:HÑM'Ö{¢<O¬ö(èA#Dy4YìFòi>³Ø£¡äÒ}g±&HÙSÈ.æ·yÀÿ ßâ,Íг±-Ä>Y¡gb²B ßâ,Íг±-Ä>Y¡gb²B ßâ,Íг±-Ä>Y¡gb²B ßâ,Íг±-Ä>Y¡gb²B Ï×æ ñÜ·"àhóZ×¹¡ÍÆå "fµKS$1AMHÕ¾W¹±¢HmcaæÚ÷ø5¢`è©£6hnÄåÔì÷û`÷»è¿â,Íг±-Ä>Y¡gb²B*·Å¸Ë3t,ìGqfèYج·Å¸Ë3t,ìGqfèYج·Å¸Ë3t,ìGqfèYج·Å¸Ë3t,ìGqfèYج·Å¸Ë3t,ìGqfèYجU51ÒDÙe¾WHÈÅ õ½Á£ípDBñn!òÌÝ;âÜCåºv)ªõRtÆÉ«U\ôíÇ ßâ,Íг±-Ä>Y¡gb²B*·Å¸Ë3t,ìGqfèYج·Å¸Ë3t,ì\ «mS*]Jùckmóomb³B"·Å¸Ë3t,ìT{©ÃGVM-Sê$H³9Íf¡±kw£RþñÔI¾ø[ì ´äß ü-öÚ(BBBBB²\^²ÕL§ÎøYá{I!Ä[æÊwwMÆa_ÌUt²ª8¤VTUÆÆx#ª#~gÍn¶Z,ó¨×ÚÌgÝ 4pPÒÕ6£3O¢¥Ò1ø%À½¬Nmg`ØEì2âÓqWóâÓqWó¾k-l²¾qLøÃ3´±®6° þb<Sºn3 þbÔ¡ e¼Sºn3 þbntí,`ñ4¸¸6@ :ÉÕ¾Vµ -âÓqWóâÓqWó¥ -âÓqWóâÓqWó¥ -âÓqWóÅ5²åiqh°½ íèZ5ASðÇÕo°)U4 Sg¬¬ÀY,?wÏÝ ï|êzîå,Æý¦ÿ þb<Sºn3 þbÔ¡XF[Å;¦ã0¯æ#Å;¦ã0¯æ-J[Å;¦ã0¯æ#Å;¦ã0¯æ-J[Å;¦ã0¯æ#Å;¦ã0¯æ-J[Å;¦ã0¯æ#Å;¦ã0¯æ-J[Å;¦ã0¯æ'YM[O«Ý¦.#ÜÊ ¶ë¾µ¤U8ÂXû¥U ]9ÆðÊTOSiKôfÜk ÏÈúOq^¸å 6çô(â½qÈò>åW®9X$Ú ÐJR¶3B÷f$]®p¸ß³J±ò>åW®9GÒ|£õÇ$Ë3rÒ2ª¢vø87RØ¡kf{ÈÖkÀôb ÆNÌ:*h Ø á¡s=î°^ZïM®u ´ò>åW®9GÒ|£õÇ$ <'~ZéZ!dnØ ®U¿Uo£`Ô®GÒ|£õÇ#ÈúOq^¸äM¡9ä}'Ê8¯\r<¤ùGëH$ÚGÒ|£õÇ#Ä°aMs¢¨«¼äNd¶½ëìR 6³û¸ý÷öÏîãôj_Þ3ÚI7Â}6á? ¾ÀEBBBB Ʊ0÷½Âäße½>Ú7°§QEø¾i/v´ÛeöoëDH¨®Â^ê&i/× jZj£Ï¦®v] \·ÒUEëqZðáMÅ&@Òâj6ìÕª¬<&²²¦mÕöÕ÷Å3`ín½Zà9¹ü¿V/aT^xóù"¼{¨ñæ?òDx÷T)"?1ÿ qTùË´v`uj~~+2áâ¦&2MÙ¨1¹Z-mï88êáô¢¦¡@!@!@!@!@åE54¥òKM¯Hì,xUf+MJÌ&Ì¢¥k. ZÕó+y}ä³} Vbÿ .ç$jÌçNúÚyÚDïkcæ»Ës£vñÞ×À¸pz§zZ¨à4òJìíJ,[aSöÜìô ¶¨§¦I "0u»^À Ø8Sê¬mTRUUé£Vü}÷ïÇÓ«XWÈ¡BBB5ÏG#u])¨%`æ[ÉÕ6ïPtFqØZ@Â]}ïÿ ¦Ä*k[$l9ãFKNÀ.·+SNúºýÐÓF@|Ñ26l¹uD©±H*ôòfxa-ay³A<$ê±âôráâ,sü!y, ùͨëÞ*FW%_¢ÐÊúgÈòòÃìmwµ¶zSas»ÄèC£ÒÕøFÜØi²ßW¤]A6¾*ÌÍk$FXº9[ÀÜ ÆTÆú¹iZN&5îÕg^ßÒUMN_[ T²²9§èCó°°8wí9÷¦ÞMãñô¦;iädyv÷ÆAÊ-;l@¶¡©ÿÖô$Õ=LuQ¶XItoc^ÇÛSÖ,³U®|¶S6(f/¦ pa§Àyh aCÌÊGÊÊÓ<¶Jé¼×?#Ú]¾¦ÝÃP°¶òdSî ÔÑ·=c*ÎQ4º@[U²HÌ7͵ØÞû÷þ4äG ûÑãI~IÄz½(¢¨²#É!tÌâÌ í:μÛSèÖê`ѹ¾)ÄEÁàûÓØ#sT jÓ>YL¶÷®k·Ò··¾è3¿×úÂáôÕU$ó3;ÚÛZ¤ÎÐæô'ðvtlJ¸Ò4:f±·÷5¹µïªû 㸣A²´:6ÊÍ#2æaßêûEv[HÖ´ Ê,*§NeLÏlI.Âöµ#ÍHº|aÔã}S¡xp"úõN¿ O¶ºª*@Ò×>])'5Â@"ÇVbZàNÖ«E ¤£òÓÄÖ9ìk ,>Ï`RQB÷¨?º¦Ã½êîueätÌÆq§C,18Iav°dÖH¸öjVzñkWÈÆç×Ö7 ¸TB8þ#/¨(C)ßæI¯þf«;)ëµ÷Ò¼w2+ÒÈrRÌ]ÌÊÉ[×7#.Ûßfv.À©d{]4Íïs¾âRÓvpØìù¢Àé# ñ+Ãôbï}ÈkoõÆRÒOS+\ÖB 7ýkp(tØTØEL¾_L×Ó´Øs4¯ßÓüJ]M5p> ÒD÷9:9HßµýiaTTÐ69Úøáó¿¬k{vê¨0cf:vi¬ILm=;¢uòkcÍÛ¨ýz¤ÝNÑG%@n ; ÇÜ¥Û/`'fò&Üû$teeCæi%Íytn`ÞÔFöòë·3;+2Ê!hø D¿©ê¯Âñ*JLBÂÓã0Fæ]ï Ö@~`3nÓ«^ú"èÏj[L_î¯a{[m~·3&)G0¨29Ìt¡¹îs Ð $evÁ°±gbF¹:W1í¨x¨òA{MçjÔ7ò©Ða³CA¨¥2ÅQ$9Ãe9ϱ½Êë{ ×¼Bò9£Íãss ð'¦:])XÇ[h"à¬äøV15}óO3²EvFµpq/Íqsqa¨k¶öÕ ,ONÏ6t°Þèã{å×}ô«±ü]ôóMFS@ùËâí4ìiÜ"âö·Î»C¤d¯tÏÈÆE{±vÁèHúX kâÄ|ãx Ìnx)«*æª]o¤g8<:Býµæ°eËvy¤¤^ª¾¾6>6 >xÙ(%ÕÊÑ£f±¯æ¾ÝV£¾¾:¨éë$0Ð6;#¯èiA¤Ç«©0¨c¦¨¤© I+µ6浤9sé¶ÅqbõUÔÐT:¤¼²6¸kùÀÕ:¬m^ÛØÕ<J k]JÁ!sIi~C0-ͲöA¯¦un&ØeÔC1§t3¤ÅkÆà9Æàm¶ðR]bVÈØ$l>^áÆø¶½ð\~À´¨A õ⸠ESo"¥ïhÙ-óA< ØJ×iáãYÎ ½Ì<®-Û°¤i¥ãÎ*ȽÓÃƳ§g8*-4¼cùÅixÇóIÝ<<k9ÁxxÖs¢ÓKÆ?Q¦8¤½ÓÃƳ§g8*-4¼cùÅixÇóIÿÐö-<<k9ÁxxÖs¢ÓKÆ?Q¦8©+Ý<<k9ÁxxÖs¢ÓKÆ?Q¦8¤½ÓÃƳ,Eì|~cë v7ß ¿M/þq\tp³â8 I ÝÇèÔ¿¼gµhw£RþñÕoþûm97Â}6WU^ÙaÂe éâno ºéÄþDCßVrþ§¨wÎÆ ÷1Ú·<3ù^µ}ü/Z¾§¤±íypoê§çAÃ1?%ëP÷ÑáÈõ¨{ês×´9¦àì)vétvq#iPAÃ1?%ëP÷ÑáÈõ¨{êlol±¶FûפÒUâf7È.¿ Wÿ Ót?ßëÇýaVÑTWÁᣨÑ?MG¿uÅßo¥Y¹êÚ¬9Q<î¨ÒÔZÀ4µ·»\Ý@4ûÝï¥v <6¶9é"6 9¤²¶BLŲÛW¿á;ègl°ø¡d/1µò¾M½®p¬p¹¢ãöR£Ååmtòd;5NÈË ÒÈØËCyÍLtpº®\ZZ ÔIÉIòr²Hâ,Tò2Péj¢çÍpÌáa¯_ õ¬Nèhâ«W½ÏÞyd',mÙr~}ÿ »Ê,å*~z±íkÇ n³øPq¸{Û,Nóm£kXNÍýýcéR_¥¯` pqúØ~uMr n³øQ¦Æ97Yü(@ö2 Z4'TÓ«ü²áÃå,st \}¤Xý>uÝ61È)ºÏáFäÝgð (´²}6ú5úØ&¤18`7>³ÿ ¸sÉXd©åD@snÐÐFÅq&G-=!hiMÛ. 5ï[QáõCâõÓ2&Ö>ìªydOóE®íëm C|ÀD¦r]½Õ¬Ö%p÷ßÅs¯~ÙÖP^ÅQÀØÛDsÛm^q}@¼ 8¤cé¬$¥Ú¥xqxsµmÌsj°ºr£¢ªZV9ƨ¸¼æÖ3F#6þ8#a¦²FY(Ï}¢ÑZ\qÕâ<¤íxSÆ#¤¨ Ò»Fi×Íö0 '`TNäIzÀ¾wn=ÎPÇQáÓEa2\FÛß(G Íj¸7K_[SÒRVÍ<qøAtn")r¹íµö½Æ°}Óc¸ÄÆ¡ðh$ÁÒÅ'e; 9_©ß@]ÏÒ_ÓÔ¼ÐÖéu5ØÐ6[^þ½î ®¦§¢}yg{YPÙÝæ6$ Oh:òFÈ4Í%xc®ã³Y²ZÊâÛıRYFE%Ãõ´6F©¤eÌuµÄz©º«g(BBBBBD¾òOY¾Â«1Ìõ¹±J®v%¶l\é%ÉbÍ WUÓcÕTS VéXY:¯«â¢+ð*úl?{ªdÈ$¬1³Q7qÊ yÓ@éöæk .«Ü¾¨·¶(aÏ$A¡÷ ä¾ Ï(*eÃñj¢4T=Ì.Éa}h¹ß7a³õ8#MM_Õttâ¤H!ví9õeÏp|Â=ñÞ>üØ Ô²Ó#Â`÷1Öq .âGuT"¢)ewÔÆciÎ[b z,My`$©Â)*Û+'kÉiüíÍk³·Ò¤ÓÂÊjh ù"`co¶ÀYBB÷¨?º¦Ã½êîue*jÝGc2FÐé\èYNÇ<¶À|×Z¿óüÿ 9¨ã6bo 31 iàÉV9Ì{É ÆÁtÌGaòJ÷6!¡ÂW´FIý\ÍÆÀ-|R2h,ncÚÒ7ÁØ£ÅQÍ$qÇ(.¼0e#6Cg}¿^Ð¥ "!!6ïPu M{ÔÝêÅâÕÅ`²:J©! ß°éÊÚ,Ð*loge1m{ !% ÔõuLÒg1Â#cä9'S}v×máAM&é1HØâ0æÈà^ÐÖw=¬ïX [ZïBã·KTÒX*ð÷1¡ÎE! §Ö±óå;ÜNûmdý7·¡ÿÕ¾8>/,ÆÏ¥Jw°AXnöÆuY×÷<àE;VYh!@!@!@)°ïzû¨JS.Mªûÿ xFb¸\Þ:lZ`NOi¶²6ßЧ:S1I.ím&\¹È½·Ø\±áxlL{Ø[`ç3Y×~JED¢Y36û÷¸¶ù?ÝZ¢¥¸þö=ì« ø¬q.7± ó:¶úqØÎÆÄ÷NC%i-yÙuj±6°7±±¾«]B©Üµ%TñI#)æ³;ànàëE½LÔn:qt¥<»!eÁþn¯0¼Û($7tôI.÷28ÞÖfto»ó1nQm~ümúÔa¦2ñPMnQË7ØÛ\ì;ê£I¹gËôòÉ#ÂÚÜÀÁ¤FÔÜû£¨±| ÎiºHÚöCïH±øW©ÜRÇ<L'Æö5Í7ô¤Ý5;)ib§S"`cu¨o'BÏîãôj_Þ3Ú´?»Ñ©xÏj#I7Â}6¼âMÞãNÇþ8Þ°ïIòïá£ûÒ¤¡y·x×Þ.ñ®:?½ zJywpÁÑýèòïá£ûÒ¤¡y·x×Þ.ñ®:?½ zJywpÁÑýèòïá£ûÒ¤¨8Ü8^# » Äj#cd¹#Jöì³XO.ñ®:?½1.ëk¦É-5;\êpIúU¤mî`aÔ5lùØ^ó(sävaruýËAQUAÓÇ-<¬x¹âäç#u5m <<¬LÝJOx×ÞÓ|n)üÒ4¯2òïá£ûÑåÞ5ÃG÷©Ó|n)üÒ4¯2òïá£ûÑåÞ5ÃG÷¤Mðy¸§óJ<n)üÒ¼Ë˼kïGx×Þ=7ÁæâÍ(ðy¸§óJó/.ñ®:?½]ã\0tz@ôß4£ÁæâÍ+̼»Æ¸`èþôywpÁÑýéÓ|n)üÒ4¯2òïá£ûÑåÞ5ÃG÷¤GÅMég¤¯&²k4²Gæ7ߺÊÐá.ç°,B :öÏ,ìy/pç¯+vïg&Ý~!Pàééè¥pôáÆßJoÊ®EõVª7&Y.âWHçNé# .Z@ úĢÁ¹æÓKNcð ( w²2YpHÍïI${/`Fî±5 |
From: Robert E. <rm...@us...> - 2002-01-21 06:29:31
|
Update of /cvsroot/xmltv/xmltv/doc In directory usw-pr-cvs1:/tmp/cvs-serv12260/xmltv/doc Added Files: tvcheck_doc.html Log Message: initial load --- NEW FILE: tvcheck_doc.html --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"> <TITLE></TITLE> <META NAME="GENERATOR" CONTENT="StarOffice 6.0 (Win32)"> <META NAME="CREATED" CONTENT="20020120;23551367"> <META NAME="CHANGEDBY" CONTENT="Robert Eden"> <META NAME="CHANGED" CONTENT="20020121;124582"> </HEAD> <BODY> <H1 ALIGN=CENTER>TVCHECK</H1> <H2>Summary:</H2> <P>TVCHECK compares a listing of your favorite TV shows against an actual XMLTV broadcast schedule, and reports changes in your favorite shows as well as any extra episodes. </P> <P>The TVCHECK script has two modes, a configure mode, which is used to build a show file and a scan mode to actually do the check.</P> <P>To use the script, first run a grabber (for example getlistings_na, or getlistings_uk) to collect a schedule listing, then run TVCHECK in configure mode to build a list of shows. Finally, run TVCHECK in scan mode to produce your report. Once your show list is built, you typically just grab the listings and run the scan.</P> <H2>Configure Mode</H2> <P>tvcheck --configure <I>---shows=show_filename ---listing=listing_filename</I></P> <P>show_filename defaults to “shows.xml”</P> <P>listing_filename defaults to “tv.xml”</P> <P>Configure mode brings up a GUI used to create the show file.It uses actual schedule information to assist in choosing your shows.</P> <P>The application has two major frames. The upper frame contains the shows you want to check, the bottom frame is a selector used to add and modify rows in the upper frame. </P> <P>Clicking on a column label sorts the table by that column. Clicking again, reversed the sort order. </P> <P>Clicking on a row populates the selector frame with the contents of that row, to allow you to edit or delete that record.</P> <P><IMG SRC="tvcheck_doc.jpg" NAME="Graphic1" ALIGN=BOTTOM WIDTH=575 HEIGHT=412 BORDER=0></P> <P>The selector frame contains entry fields for each column. If you click on a value in a listbox, the associated entry field is automatically populated. If a day and/or channel is selected, the title listbox will contain only titles that match the selected day and/or channel. If you click on a value in a title listbox, all entry fields are populated with details for an episode of that show. There may be other episodes available, so if the one you wanted isn’t chosen, correct the entry fields before adding the record.</P> <P>If the day field is left blank, only a title-scan is performed (see below)</P> <P>The following options are available (typically used to prevent false alarms due to syndication)</P> <TABLE BORDER=0 CELLPADDING=2 CELLSPACING=2> <TR> <TD> <P>TIMEONLY</P> </TD> <TD> <P>The title-scan only returns shows on the selected channel.</P> </TD> </TR> <TR> <TD> <P>DAYONLY</P> </TD> <TD> <P>The title-scan only returns shows on the selected day. </P> </TD> </TR> <TR> <TD> <P>TIMEONLY</P> </TD> <TD> <P>The title-scan only returns shows at the specific time.</P> </TD> </TR> <TR> <TD> <P>NEARTIME</P> </TD> <TD> <P>The title-scan only returns shows within a few hours of the specified time. </P> </TD> </TR> </TABLE> <P>The buttons to the left of the selection frames do the following:</P> <TABLE BORDER=0 CELLPADDING=2 CELLSPACING=2> <TR> <TD> <P>CLEAR SELECTION</P> </TD> <TD> <P>Blanks out all entry fields. </P> </TD> </TR> <TR> <TD> <P>ADD SELECTION</P> </TD> <TD> <P>Takes all the entry fields and adds a record to the show table. </P> </TD> </TR> <TR> <TD> <P>UPDATE SHOW</P> </TD> <TD> <P>Replaces the last selected row in the show table with the values in the selection fields.</P> </TD> </TR> <TR> <TD> <P>DELETE SHOW</P> </TD> <TD> <P>Deletes the last selected row in the show table. (selection fields are not used) </P> </TD> </TR> </TABLE> <P>The show file can be saved by an option under the File menu. The File menu also contains selections to open new listing and guide files, as well as exit the program.</P> <H2>SCAN Mode</H2> <P>tvcheck --scan <I>---shows=show_filename ---listing=listing_filename --output=output_file</I></P> <P>show_filename defaults to “shows.xml”.</P> <P>listing_filename defaults to “tv.xml”.</P> <P>output_file defaults to standard out.</P> <P>This command does the actual scan. The scan uses two phases. In the first phase, if a specific day/time is provided for the show, that timeslot is checked to make sure it contains the expected show. If it does, the sub-title is given. If the timeslot doesn't contain the show, a warning is given and you’re told what’s in your shows place.After the timeslot is checked, a title-scan is performed that reports any other episodes matching your show’s title.This title-scan can be limited using the options described above. </P> <H2>Notes:</H2> <P>This script was created to deal with the problem ofthe TV networks moving everything around.</P> <P>If this script is helpful, why not drop the author or user email list a note of thanks!</P> <TABLE BORDER=0 CELLPADDING=2 CELLSPACING=2> <TR> <TD> <P>Author</P> </TD> <TD> <P>Robert Eden <A HREF="mailto:rm...@cp...">rm...@cp...</A></P> </TD> </TR> <TR> <TD> <P>User Mailing List</P> </TD> <TD> <P><A HREF="mailto:xml...@li...">xml...@li...</A>.</P> </TD> </TR> <TR> <TD> <P>Sourceforge Web Page</P> </TD> <TD> <P><A HREF="http://sourceforge.net/projects/xmltv/">http://sourceforge.net/projects/xmltv/</A></P> </TD> </TR> <TR> <TD> <P>Project Web Page</P> </TD> <TD> <P><A HREF="http://www.doc.ic.ac.uk/~epa98/work/apps/xmltv/">http://www.doc.ic.ac.uk/~epa98/work/apps/xmltv/</A></P> </TD> </TR> </TABLE> <P><BR><BR> </P> </BODY> </HTML> |
From: Ed A. <ep...@us...> - 2002-01-20 14:55:13
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv8772 Modified Files: getlistings_uk_ananova README Log Message: Updated version number to 0.4.3. Index: getlistings_uk_ananova =================================================================== RCS file: /cvsroot/xmltv/xmltv/getlistings_uk_ananova,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** getlistings_uk_ananova 2002/01/19 18:32:13 1.36 --- getlistings_uk_ananova 2002/01/20 14:55:09 1.37 *************** *** 125,129 **** 'source-info-name' => 'Ananova', 'source-data-url' => $A, ! 'generator-info-name' => 'XMLTV/0.4', 'generator-info-url' => 'http://www.doc.ic.ac.uk/~epa98/work/apps/xmltv/', --- 125,129 ---- 'source-info-name' => 'Ananova', 'source-data-url' => $A, ! 'generator-info-name' => 'XMLTV/0.4.3', 'generator-info-url' => 'http://www.doc.ic.ac.uk/~epa98/work/apps/xmltv/', Index: README =================================================================== RCS file: /cvsroot/xmltv/xmltv/README,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** README 2002/01/11 14:59:15 1.25 --- README 2002/01/20 14:55:09 1.26 *************** *** 1,3 **** ! XMLTV 0.4.2 Suite of programs for processing TV listings and organizing your --- 1,3 ---- ! XMLTV 0.4.3 Suite of programs for processing TV listings and organizing your *************** *** 10,15 **** programme isn't in its usual timeslot. ! This version is 0.4.2. It has bugfixes (pick_cgi works again) and a ! new version of tvcheck with a GUI to choose the programmes you want. For documentation, see the web page at --- 10,16 ---- programme isn't in its usual timeslot. ! This version is 0.4.3. It has small enhancements to the grabbers, in ! particular a new getlistings_na after the website's format changed. ! There have also been small changes to tvcheck. For documentation, see the web page at *************** *** 21,24 **** ask. Contributors include Gottfried Szing, Jerry Veldhuis and Robert Eden. ! -- Ed Avis, ep...@do..., 2002-01-11 $Id$ --- 22,25 ---- ask. Contributors include Gottfried Szing, Jerry Veldhuis and Robert Eden. ! -- Ed Avis, ep...@do..., 2002-01-20 $Id$ |
From: Ed A. <ep...@us...> - 2002-01-20 14:50:20
|
Update of /cvsroot/xmltv/xmltv/todo In directory usw-pr-cvs1:/tmp/cvs-serv7335 Modified Files: TASKS.epa Log Message: Noticed another bug which of course I will fix at the earliest opportunity (cough). Index: TASKS.epa =================================================================== RCS file: /cvsroot/xmltv/xmltv/todo/TASKS.epa,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** TASKS.epa 2002/01/19 18:38:21 1.10 --- TASKS.epa 2002/01/20 14:50:15 1.11 *************** *** 29,32 **** --- 29,34 ---- --output + 05:00--05:00, it means '24 hours' but looks odd + Suggestions from Jerry V. |
From: Robert E. <rm...@us...> - 2002-01-20 04:52:12
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv925/xmltv Modified Files: tvcheck Log Message: fixed bug in title chooser Index: tvcheck =================================================================== RCS file: /cvsroot/xmltv/xmltv/tvcheck,v retrieving revision 2.7 retrieving revision 2.8 diff -C2 -d -r2.7 -r2.8 *** tvcheck 2002/01/19 20:09:45 2.7 --- tvcheck 2002/01/20 04:52:08 2.8 *************** *** 806,820 **** # $SELECT[4]{list} -> delete(0,"end"); ! if (defined $day && defined $chan) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{$day}{$chan}}); $match = $GUIDE{$day}{$chan}{$title}; } ! elsif (defined $day) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{day}{$day}} ); $match=$GUIDE{day}{$day}{$title}; } ! elsif (defined $chan) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{chan}{$chan}} ); --- 806,820 ---- # $SELECT[4]{list} -> delete(0,"end"); ! if (length($day) && length($chan)) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{$day}{$chan}}); $match = $GUIDE{$day}{$chan}{$title}; } ! elsif (length($day)) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{day}{$day}} ); $match=$GUIDE{day}{$day}{$title}; } ! elsif (length($chan)) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{chan}{$chan}} ); |
From: Jerry V. <jve...@us...> - 2002-01-19 23:58:23
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv15128 Modified Files: getlistings_na Log Message: added --offset as per request/suggestion from mie...@us... Index: getlistings_na =================================================================== RCS file: /cvsroot/xmltv/xmltv/getlistings_na,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** getlistings_na 2002/01/19 23:01:58 1.38 --- getlistings_na 2002/01/19 23:58:20 1.39 *************** *** 408,412 **** print $fp "\n"; print $fp " --days n\n"; ! print $fp " specify number of days to include in output (default 7)\n"; } --- 408,416 ---- print $fp "\n"; print $fp " --days n\n"; ! print $fp " specify number of days to include in output (default 7)\n"; ! print $fp "\n"; ! print $fp " --offset n\n"; ! print $fp " specify number of days (in the future) to offset the\n"; ! print $fp " start of the listings (default 0)\n"; } *************** *** 755,764 **** # in grabber mode - yeah ! ! use vars qw/$opt_help $opt_config $opt_debug $opt_programs $opt_channels $opt_listings $opt_output $opt_days $opt_debuglistings/; $opt_debug=0; $opt_debuglistings=0; ! if ( ! GetOptions('help', 'config=s', 'debug', 'programs=s', 'channels=s', 'listings=s', 'output=s', 'days=i', 'debuglistings') ) { Usage(0); exit(1); --- 759,768 ---- # in grabber mode - yeah ! ! use vars qw/$opt_help $opt_config $opt_debug $opt_programs $opt_channels $opt_listings $opt_output $opt_days $opt_debuglistings $opt_offset/; $opt_debug=0; $opt_debuglistings=0; ! if ( ! GetOptions('help', 'config=s', 'debug', 'programs=s', 'channels=s', 'listings=s', 'output=s', 'days=i', 'debuglistings', 'offset=i') ) { Usage(0); exit(1); *************** *** 794,797 **** --- 798,802 ---- $opt_listings="" if ( !defined($opt_listings) ); $opt_days=7 if ( !defined($opt_days) ); + $opt_offset=0 if ( !defined($opt_offset) ); if ( $opt_days < 0 || $opt_days > 14 ) { *************** *** 1038,1042 **** # my $year=$y; ! my $runNDayOfYear=$startNDay; for (my $nday=0; $nday<$opt_days ; $nday++) { my $writer; --- 1043,1047 ---- # my $year=$y; ! my $runNDayOfYear=$startNDay + $opt_offset; for (my $nday=0; $nday<$opt_days ; $nday++) { my $writer; *************** *** 1044,1048 **** # handle cross-year listings ! if ( $runNDayOfYear+$nday > Date_DaysInYear($year) ) { $runNDayOfYear-=Date_DaysInYear($year); $year++; --- 1049,1053 ---- # handle cross-year listings ! while ( $runNDayOfYear+$nday > Date_DaysInYear($year) ) { $runNDayOfYear-=Date_DaysInYear($year); $year++; *************** *** 1160,1164 **** # account for end of year boundaries ! if ( $dayOfYear > Date_DaysInYear($year) ) { $dayOfYear-=Date_DaysInYear($year); $year++; --- 1165,1169 ---- # account for end of year boundaries ! while ( $dayOfYear > Date_DaysInYear($year) ) { $dayOfYear-=Date_DaysInYear($year); $year++; |
From: Jerry V. <jve...@us...> - 2002-01-19 23:02:01
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv32661 Modified Files: getlistings_na Log Message: fixed carp() call when running with --debuglistings enabled and a program description contains '--', which is illegal in XML::Writer. Index: getlistings_na =================================================================== RCS file: /cvsroot/xmltv/xmltv/getlistings_na,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** getlistings_na 2002/01/19 22:26:40 1.37 --- getlistings_na 2002/01/19 23:01:58 1.38 *************** *** 1218,1221 **** --- 1218,1224 ---- stop => $prog->{end}, channel=> "$channel"); if ( defined($prog->{precomment}) ) { + # -- in comments causes carp() calls in Writer.pm + $prog->{precomment}=~s/\-\-/\=\=/og; + # imbed in programme output a comment # this is here for debugging listings and their results |
From: Jerry V. <jve...@us...> - 2002-01-19 22:26:42
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv25789 Modified Files: getlistings_na Log Message: usage messages now come to stdout when --help is used and stderr if usage is incorrect. Also minor version number is calculated from rcs id. This is minor since the version information is mainly for the output 'tv' element and controling the versions of xmltv_na configuration files. Index: getlistings_na =================================================================== RCS file: /cvsroot/xmltv/xmltv/getlistings_na,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** getlistings_na 2002/01/19 19:49:33 1.36 --- getlistings_na 2002/01/19 22:26:40 1.37 *************** *** 20,25 **** # ! my $VersionMajor="2"; ! my $VersionMinor="0"; my $VersionID="getlistings_na V$VersionMajor\.$VersionMinor"; --- 20,34 ---- # ! my $VersionMajor=2; ! my $VersionMinor; ! ! my $Id=""; ! my $ID='$Id$'; ! if ( !($ID=~m;([0-9]+)\.([0-9]+);) ) { ! die "can't decipher id line ($ID)"; ! } ! else { ! $VersionMinor=int("$1$2"); ! } my $VersionID="getlistings_na V$VersionMajor\.$VersionMinor"; *************** *** 311,339 **** # ! sub ConfigureUsage { ! print STDERR "usage $0 --configure [options]\n"; ! print STDERR "where options are:\n"; ! print STDERR " --help\n"; ! print STDERR " print STDERR configure help\n"; ! print STDERR "\n"; ! print STDERR " --debug\n"; ! print STDERR " turn on debugging\n"; ! print STDERR "\n"; ! print STDERR " --postalcode XXXXXX\n"; ! print STDERR " specify postal code, don't use with --zipcode\n"; ! print STDERR "\n"; ! print STDERR " --zipcode YYYYYY\n"; ! print STDERR " specify zip code, don't use with --postalcode\n"; ! print STDERR "\n"; ! print STDERR " --provider ZZZZZZZ\n"; ! print STDERR " specify provider id\n"; ! print STDERR "\n"; ! print STDERR " --config <file>\n"; ! print STDERR " write results of configure to <file> instead of \$HOME/$ConfigFileName_g\n"; ! print STDERR "\n"; ! print STDERR "If any neccessary options are given, interactive mode is enabled\n"; ! print STDERR "Result of running configure is a xml formated configuration file\n"; ! print STDERR "\$HOME/$ConfigFileName_g (use --config to override location).\n"; } --- 320,356 ---- # ! sub ConfigureUsage($) { ! no strict 'subs'; ! no strict 'refs'; ! my $stdout=shift; ! ! my $fp=STDERR; ! if ( $stdout ) { ! $fp=STDOUT; ! } ! print $fp "usage $0 --configure [options]\n"; ! print $fp "where options are:\n"; ! print $fp " --help\n"; ! print $fp " print $fp configure help\n"; ! print $fp "\n"; ! print $fp " --debug\n"; ! print $fp " turn on debugging\n"; ! print $fp "\n"; ! print $fp " --postalcode XXXXXX\n"; ! print $fp " specify postal code, don't use with --zipcode\n"; ! print $fp "\n"; ! print $fp " --zipcode YYYYYY\n"; ! print $fp " specify zip code, don't use with --postalcode\n"; ! print $fp "\n"; ! print $fp " --provider ZZZZZZZ\n"; ! print $fp " specify provider id\n"; ! print $fp "\n"; ! print $fp " --config <file>\n"; ! print $fp " write results of configure to <file> instead of \$HOME/$ConfigFileName_g\n"; ! print $fp "\n"; ! print $fp "If any neccessary options are given, interactive mode is enabled\n"; ! print $fp "Result of running configure is a xml formated configuration file\n"; ! print $fp "\$HOME/$ConfigFileName_g (use --config to override location).\n"; } *************** *** 346,386 **** # ! sub Usage { ! print STDERR "usage $0 [--help|--configure [configure-options] |[grab-options]]\n"; ! print STDERR "command line options are:\n"; ! print STDERR " --help\n"; ! print STDERR " print STDERR this help\n"; ! print STDERR " use --configure --help for configure help or\n"; ! print STDERR " use --grab --help for grab help\n"; ! print STDERR "\n"; ! print STDERR " --configure\n"; ! print STDERR " run configuration step, see --configure --help for more info\n"; ! print STDERR "\n"; ! print STDERR "grab-options are:\n"; ! print STDERR " --debug\n"; ! print STDERR " turn on debugging\n"; ! print STDERR "\n"; ! print STDERR " --debuglistings\n"; ! print STDERR " add debugging material in output xml as comments\n"; ! print STDERR "\n"; ! print STDERR " --config <file>\n"; ! print STDERR " specify file that contains config information, default in \$HOME/$ConfigFileName_g\n"; ! print STDERR " (created by using --configure)\n"; ! print STDERR "\n"; ! print STDERR " --listings <file>\n"; ! print STDERR " specify listings.xml filename(s) for channel & program info\n"; ! print STDERR " <file> may contain Date::Manip::Unix substitutions\n"; ! print STDERR " for instance, use --listings \"listings-%d%m%Y.xml\" to separate output by day.\n"; ! print STDERR " similarily, %postalcode, %zipcode, are also substituted from settings\n"; ! print STDERR " current configuration.\n"; ! print STDERR " The filename is only re-evaluated when a new days listings is started.\n"; ! print STDERR " if no --listings is specified stdout is used\n"; ! print STDERR "\n"; ! print STDERR " --output <file>\n"; ! print STDERR " synonym for --listings\n"; ! print STDERR "\n"; ! print STDERR " --days n\n"; ! print STDERR " specify number of days to include in output (default 7)\n"; } --- 363,412 ---- # ! sub Usage($) { ! no strict 'subs'; ! no strict 'refs'; ! my $stdout=shift; ! ! my $fp=STDERR; ! if ( $stdout ) { ! $fp=STDOUT; ! } ! ! print $fp "usage $0 [--help|--configure [configure-options] |[grab-options]]\n"; ! print $fp "command line options are:\n"; ! print $fp " --help\n"; ! print $fp " print this help\n"; ! print $fp " use --configure --help for configure help or\n"; ! print $fp " use --grab --help for grab help\n"; ! print $fp "\n"; ! print $fp " --configure\n"; ! print $fp " run configuration step, see --configure --help for more info\n"; ! print $fp "\n"; ! print $fp "grab-options are:\n"; ! print $fp " --debug\n"; ! print $fp " turn on debugging\n"; ! print $fp "\n"; ! print $fp " --debuglistings\n"; ! print $fp " add debugging material in output xml as comments\n"; ! print $fp "\n"; ! print $fp " --config <file>\n"; ! print $fp " specify file that contains config information, default in \$HOME/$ConfigFileName_g\n"; ! print $fp " (created by using --configure)\n"; ! print $fp "\n"; ! print $fp " --listings <file>\n"; ! print $fp " specify listings.xml filename(s) for channel & program info\n"; ! print $fp " <file> may contain Date::Manip::Unix substitutions\n"; ! print $fp " for instance, use --listings \"listings-%d%m%Y.xml\" to separate output by day.\n"; ! print $fp " similarily, %postalcode, %zipcode, are also substituted from settings\n"; ! print $fp " current configuration.\n"; ! print $fp " The filename is only re-evaluated when a new days listings is started.\n"; ! print $fp " if no --listings is specified stdout is used\n"; ! print $fp "\n"; ! print $fp " --output <file>\n"; ! print $fp " synonym for --listings\n"; ! print $fp "\n"; ! print $fp " --days n\n"; ! print $fp " specify number of days to include in output (default 7)\n"; } *************** *** 450,459 **** if ( ! GetOptions('configure', 'help', 'postalcode=s', 'zipcode=s', 'provider=s', 'config=s', 'debug') ) { ! ConfigureUsage(); exit(1); } if ( defined($opt_help) ) { ! ConfigureUsage(); exit(0); } --- 476,485 ---- if ( ! GetOptions('configure', 'help', 'postalcode=s', 'zipcode=s', 'provider=s', 'config=s', 'debug') ) { ! ConfigureUsage(0); exit(1); } if ( defined($opt_help) ) { ! ConfigureUsage(1); exit(0); } *************** *** 735,739 **** if ( ! GetOptions('help', 'config=s', 'debug', 'programs=s', 'channels=s', 'listings=s', 'output=s', 'days=i', 'debuglistings') ) { ! Usage(); exit(1); } --- 761,765 ---- if ( ! GetOptions('help', 'config=s', 'debug', 'programs=s', 'channels=s', 'listings=s', 'output=s', 'days=i', 'debuglistings') ) { ! Usage(0); exit(1); } *************** *** 752,756 **** if ( defined($opt_help) ) { ! Usage(); exit(0); } --- 778,782 ---- if ( defined($opt_help) ) { ! Usage(1); exit(0); } *************** *** 771,775 **** if ( $opt_days < 0 || $opt_days > 14 ) { print STDERR "specified days must be between 1 and 14\n"; ! Usage(); exit(1); } --- 797,801 ---- if ( $opt_days < 0 || $opt_days > 14 ) { print STDERR "specified days must be between 1 and 14\n"; ! Usage(0); exit(1); } |
From: Jerry V. <je...@ma...> - 2002-01-19 22:09:46
|
Yep, I agree, I shouldn't have STDOUT messages during a grab. But I like usage messages that come out to stdout. Although STDERR is appropriate on user error. I'll undo that change. jerry --On Saturday, January 19, 2002 11:49:36 AM -0800 Ed Avis <ep...@us...> wrote: > Update of /cvsroot/xmltv/xmltv > In directory usw-pr-cvs1:/tmp/cvs-serv25294 > > Modified Files: > getlistings_na > Log Message: > Made all grabbing error messages go to stderr rather than stdout, so > they don't get mixed in with the XML listings. This includes the > usage message. For consistency changed the --configure usage message > to stderr too. > > > Index: getlistings_na > =================================================================== > RCS file: /cvsroot/xmltv/xmltv/getlistings_na,v > retrieving revision 1.35 > retrieving revision 1.36 > diff -C2 -d -r1.35 -r1.36 > *** getlistings_na 2002/01/19 18:40:09 1.35 > --- getlistings_na 2002/01/19 19:49:33 1.36 > *************** > *** 313,339 **** > sub ConfigureUsage > { > ! print "usage $0 --configure [options]\n"; > ! print "where options are:\n"; > ! print " --help\n"; > ! print " print configure help\n"; > ! print "\n"; > ! print " --debug\n"; > ! print " turn on debugging\n"; > ! print "\n"; > ! print " --postalcode XXXXXX\n"; > ! print " specify postal code, don't use with --zipcode\n"; > ! print "\n"; > ! print " --zipcode YYYYYY\n"; > ! print " specify zip code, don't use with --postalcode\n"; > ! print "\n"; > ! print " --provider ZZZZZZZ\n"; > ! print " specify provider id\n"; > ! print "\n"; > ! print " --config <file>\n"; > ! print " write results of configure to <file> instead of > \$HOME/$ConfigFileName_g\n"; ! print "\n"; > ! print "If any neccessary options are given, interactive mode is > enabled\n"; ! print "Result of running configure is a xml formated > configuration file\n"; ! print "\$HOME/$ConfigFileName_g (use > --config to override location).\n"; } > > --- 313,339 ---- > sub ConfigureUsage > { > ! print STDERR "usage $0 --configure [options]\n"; > ! print STDERR "where options are:\n"; > ! print STDERR " --help\n"; > ! print STDERR " print STDERR configure help\n"; > ! print STDERR "\n"; > ! print STDERR " --debug\n"; > ! print STDERR " turn on debugging\n"; > ! print STDERR "\n"; > ! print STDERR " --postalcode XXXXXX\n"; > ! print STDERR " specify postal code, don't use with --zipcode\n"; > ! print STDERR "\n"; > ! print STDERR " --zipcode YYYYYY\n"; > ! print STDERR " specify zip code, don't use with --postalcode\n"; > ! print STDERR "\n"; > ! print STDERR " --provider ZZZZZZZ\n"; > ! print STDERR " specify provider id\n"; > ! print STDERR "\n"; > ! print STDERR " --config <file>\n"; > ! print STDERR " write results of configure to <file> instead of > \$HOME/$ConfigFileName_g\n"; ! print STDERR "\n"; > ! print STDERR "If any neccessary options are given, interactive mode > is enabled\n"; ! print STDERR "Result of running configure is a xml > formated configuration file\n"; ! print STDERR > "\$HOME/$ConfigFileName_g (use --config to override location).\n"; } > > *************** > *** 348,386 **** > sub Usage > { > ! print "usage $0 [--help|--configure [configure-options] > |[grab-options]]\n"; ! print "command line options are:\n"; > ! print " --help\n"; > ! print " print this help\n"; > ! print " use --configure --help for configure help or\n"; > ! print " use --grab --help for grab help\n"; > ! print "\n"; > ! print " --configure\n"; > ! print " run configuration step, see --configure --help for more > info\n"; ! print "\n"; > ! print "grab-options are:\n"; > ! print " --debug\n"; > ! print " turn on debugging\n"; > ! print "\n"; > ! print " --debuglistings\n"; > ! print " add debugging material in output xml as comments\n"; > ! print "\n"; > ! print " --config <file>\n"; > ! print " specify file that contains config information, default > in \$HOME/$ConfigFileName_g\n"; ! print " (created by using > --configure)\n"; > ! print "\n"; > ! print " --listings <file>\n"; > ! print " specify listings.xml filename(s) for channel & > program info\n"; ! print " <file> may contain Date::Manip::Unix > substitutions\n"; ! print " for instance, use --listings > \"listings-%d%m%Y.xml\" to separate output by day.\n"; ! print " > similarily, %postalcode, %zipcode, are also substituted from settings\n"; > ! print " current configuration.\n"; > ! print " The filename is only re-evaluated when a new days > listings is started.\n"; ! print " if no --listings is > specified stdout is used\n"; ! print "\n"; > ! print " --output <file>\n"; > ! print " synonym for --listings\n"; > ! print "\n"; > ! print " --days n\n"; > ! print " specify number of days to include in output (default > 7)\n"; } > > --- 348,386 ---- > sub Usage > { > ! print STDERR "usage $0 [--help|--configure [configure-options] > |[grab-options]]\n"; ! print STDERR "command line options are:\n"; > ! print STDERR " --help\n"; > ! print STDERR " print STDERR this help\n"; > ! print STDERR " use --configure --help for configure help or\n"; > ! print STDERR " use --grab --help for grab help\n"; > ! print STDERR "\n"; > ! print STDERR " --configure\n"; > ! print STDERR " run configuration step, see --configure --help > for more info\n"; ! print STDERR "\n"; > ! print STDERR "grab-options are:\n"; > ! print STDERR " --debug\n"; > ! print STDERR " turn on debugging\n"; > ! print STDERR "\n"; > ! print STDERR " --debuglistings\n"; > ! print STDERR " add debugging material in output xml as > comments\n"; ! print STDERR "\n"; > ! print STDERR " --config <file>\n"; > ! print STDERR " specify file that contains config information, > default in \$HOME/$ConfigFileName_g\n"; ! print STDERR " (created > by using --configure)\n"; > ! print STDERR "\n"; > ! print STDERR " --listings <file>\n"; > ! print STDERR " specify listings.xml filename(s) for channel & > program info\n"; ! print STDERR " <file> may contain > Date::Manip::Unix substitutions\n"; ! print STDERR " for > instance, use --listings \"listings-%d%m%Y.xml\" to separate output by > day.\n"; ! print STDERR " similarily, %postalcode, %zipcode, > are also substituted from settings\n"; ! print STDERR " current > configuration.\n"; > ! print STDERR " The filename is only re-evaluated when a new > days listings is started.\n"; ! print STDERR " if no --listings > is specified stdout is used\n"; ! print STDERR "\n"; > ! print STDERR " --output <file>\n"; > ! print STDERR " synonym for --listings\n"; > ! print STDERR "\n"; > ! print STDERR " --days n\n"; > ! print STDERR " specify number of days to include in output > (default 7)\n"; } > > *************** > *** 882,886 **** > $code=$config->{option_zipcode} if ( > defined($config->{option_zipcode}) ); > ! print "\nchecking provider information for postal/zip code $code, be > patient..\n"; my > @providers=ZapListings::getProviders($config->{option_postalcode}, > $config->{option_zipcode}, > --- 882,886 ---- > $code=$config->{option_zipcode} if ( > defined($config->{option_zipcode}) ); > ! print STDERR "\nchecking provider information for postal/zip code > $code, be patient..\n"; my > @providers=ZapListings::getProviders($config->{option_postalcode}, > $config->{option_zipcode}, > *************** > *** 896,900 **** > if ( $p->{id} eq $config->{option_provider} ) { > if ( $config->{option_provider_desc} ne $p->{description} ) { > ! print "provider description changed ($p->{description}), think > about re-running --configure\n"; } > $still_valid=1; > --- 896,900 ---- > if ( $p->{id} eq $config->{option_provider} ) { > if ( $config->{option_provider_desc} ne $p->{description} ) { > ! print STDERR "provider description changed ($p->{description}), > think about re-running --configure\n"; } > $still_valid=1; > > > _______________________________________________ > xmltv-commit mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmltv-commit > |
From: Robert E. <rm...@us...> - 2002-01-19 20:09:50
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv29209/xmltv Modified Files: tvcheck Log Message: Minor bug-fixes, mostly cleaning up GUI. Added --output option Index: tvcheck =================================================================== RCS file: /cvsroot/xmltv/xmltv/tvcheck,v retrieving revision 2.6 retrieving revision 2.7 diff -C2 -d -r2.6 -r2.7 *** tvcheck 2002/01/19 18:07:11 2.6 --- tvcheck 2002/01/19 20:09:45 2.7 *************** *** 12,16 **** # # syntax ! # tvcheck <guide.xml <shows.xml>> # # (C)2001 - Robert Eden, free to use under the GNU License. --- 12,16 ---- # # syntax ! # tvcheck --listings=file --show=file (--configure|--scan (--output))) # # (C)2001 - Robert Eden, free to use under the GNU License. *************** *** 45,48 **** --- 45,49 ---- $GUIDE_XML= 'guide.xml'; $SHOW_XML = 'shows.xml'; + $OUTPUT_FILE = undef; $TODAY = $WEEKDAY[(localtime())[6]]; *************** *** 77,81 **** $COL_VALUE[$_] = "" foreach (0..$#COL); - #Date_Init( "Debug=trace"); # # Step 1, Parse Parameters ------------------------------------------------------- --- 78,81 ---- *************** *** 85,96 **** { my $scan=0; ! if ( ! GetOptions( configure => \$CONFIGURE, ! scan => \$scan, ! 'shows=s' => \$SHOW_XML, ! 'guide|listings=s' => \$GUIDE_XML)) { print " tvcheck v \$Revision\$\n\n"; print " part of the xmltv toolkit ( http://xmltv.sourceforge.net )\n\n"; ! print "usage $0 (--configure|--scan) [--options] \n"; print "where --options are:\n"; print " --shows <file>\n"; --- 85,97 ---- { my $scan=0; ! if ( ! GetOptions('configure' => \$CONFIGURE, ! 'scan' => \$scan, ! 'shows=s' => \$SHOW_XML, ! 'output=s' => \$OUTPUT_FILE, ! 'guide|listings=s' => \$GUIDE_XML)) { print " tvcheck v \$Revision\$\n\n"; print " part of the xmltv toolkit ( http://xmltv.sourceforge.net )\n\n"; ! print "usage $0 (--configure|--scan) [--options] [--output=file]\n"; print "where --options are:\n"; print " --shows <file>\n"; *************** *** 107,111 **** die "Please select either --scan, --configure, or --help\n" if ($CONFIGURE+$scan != 1); ! } # get params --- 108,117 ---- die "Please select either --scan, --configure, or --help\n" if ($CONFIGURE+$scan != 1); ! if (defined $OUTPUT_FILE) ! { ! print STDERR "Sending output to $OUTPUT_FILE\n"; ! open(STDOUT,">$OUTPUT_FILE") or die "Can't open for output $OUTPUT_FILE\n"; ! } ! } # get params *************** *** 153,157 **** my $file = $TOP->getOpenFile(-filetypes => [["XML Files",".xml"]], -title => 'Open Show File'); ! load_shows($file) if ($file); }); --- 159,163 ---- my $file = $TOP->getOpenFile(-filetypes => [["XML Files",".xml"]], -title => 'Open Show File'); ! load_shows($file) if defined $file; }); *************** *** 161,170 **** -command => \&Save_shows ); ! $f->command(-label => 'save As...', -underline => 5, -command => sub { my $file = $TOP->getSaveFile( -filetypes => [["XML Files",".xml"]], -title => 'Save show file'); ! if ($file) { $SHOW_XML=$file; Save_shows();} }); --- 167,180 ---- -command => \&Save_shows ); ! $f->command(-label => 'Save As...', -underline => 5, -command => sub { my $file = $TOP->getSaveFile( -filetypes => [["XML Files",".xml"]], -title => 'Save show file'); ! if (defined $file) ! { ! $SHOW_XML=$file; ! Save_shows(); ! } }); *************** *** 174,182 **** my $file = $TOP->getOpenFile(-filetypes => [["XML Files",".xml"]], -title => 'Open Listing File' ); ! load_guide($file) if ($file); }); ! $f->command(-label => 'eXit', -underline => 1, -command => sub { --- 184,192 ---- my $file = $TOP->getOpenFile(-filetypes => [["XML Files",".xml"]], -title => 'Open Listing File' ); ! load_guide($file) if defined ($file); }); ! $f->command(-label => 'Exit', -underline => 1, -command => sub { *************** *** 211,214 **** --- 221,225 ---- -state => 'disabled', -anchor => 'w', + -exportselection => 0, ); $SHOW_TABLE->colWidth( %SHOW_WIDTH ); *************** *** 227,234 **** if ($row) { ! return unless $SHOW_DATA{"$row,4"}; # title must exist $SHOW_ROW=$row; ! $UPDATE_BUTTON -> configure ( -state => "normal" ); ! $DELETE_BUTTON -> configure ( -state => "normal" ); $w->selectionSet("$row,0","$row,".($#COL+1)); for $col (0..$#COL) # load selection pane --- 238,245 ---- if ($row) { ! return unless $SHOW_DATA{"$row,4"}; # title must exist $SHOW_ROW=$row; ! $UPDATE_BUTTON -> configure ( -state => "normal" ); ! $DELETE_BUTTON -> configure ( -state => "normal" ); $w->selectionSet("$row,0","$row,".($#COL+1)); for $col (0..$#COL) # load selection pane *************** *** 251,257 **** my $frame=$selframe->Frame()->pack( -side => 'left' ); $CLEAR_BUTTON = ! $frame->Button( -text => "Clear", -command => sub{ $SHOW_ROW=0; $UPDATE_BUTTON -> configure ( -state => "disabled" ); $DELETE_BUTTON -> configure ( -state => "disabled" ); --- 262,269 ---- my $frame=$selframe->Frame()->pack( -side => 'left' ); $CLEAR_BUTTON = ! $frame->Button( -text => "Clear Selection", -command => sub{ $SHOW_ROW=0; + $SHOW_TABLE->selectionClear('all'); $UPDATE_BUTTON -> configure ( -state => "disabled" ); $DELETE_BUTTON -> configure ( -state => "disabled" ); *************** *** 264,286 **** $ADD_BUTTON = ! $frame->Button( -text => "Add", -command => sub{ $SHOW_ROW=0; $UPDATE_BUTTON -> configure ( -state => "disabled" ); $DELETE_BUTTON -> configure ( -state => "disabled" ); ! return unless $COL_VALUE[4]; my $row = $#SHOWS+1; for $col (0..$#COL) { ! my $val=""; ! $val=$COL_VALUE[$col]; ! $val=~ s/^\s+|\s+$//g if $val; $SHOWS[$row]{$COL[$col]}=$val; } load_show_table(); $SHOW_CHANGED=1; }) -> pack(-fill => 'x'); $UPDATE_BUTTON = ! $frame->Button( -text => "Update", -state => "disabled", -command => sub{ --- 276,299 ---- $ADD_BUTTON = ! $frame->Button( -text => "Add Selection", -command => sub{ $SHOW_ROW=0; + $SHOW_TABLE->selectionClear('all'); $UPDATE_BUTTON -> configure ( -state => "disabled" ); $DELETE_BUTTON -> configure ( -state => "disabled" ); ! return unless $COL_VALUE[4]; my $row = $#SHOWS+1; for $col (0..$#COL) { ! my $val=$COL_VALUE[$col]; ! $val=~ s/^\s+|\s+$//g if defined $val; $SHOWS[$row]{$COL[$col]}=$val; } load_show_table(); $SHOW_CHANGED=1; + $COL_VALUE[4]=''; }) -> pack(-fill => 'x'); $UPDATE_BUTTON = ! $frame->Button( -text => "Update Show", -state => "disabled", -command => sub{ *************** *** 289,295 **** for $col (0..$#COL) { ! my $val=""; ! $val=$COL_VALUE[$col]; ! $val=~ s/^\s+|\s+$//g if $val; $SHOW_DATA[$SHOW_ROW]{$COL[$col]}=$val; } --- 302,307 ---- for $col (0..$#COL) { ! my $val=$COL_VALUE[$col]; ! $val=~ s/^\s+|\s+$//g if defined $val; $SHOW_DATA[$SHOW_ROW]{$COL[$col]}=$val; } *************** *** 299,303 **** $DELETE_BUTTON = ! $frame->Button( -text => "Delete", -state => "disabled", -command => sub{ --- 311,315 ---- $DELETE_BUTTON = ! $frame->Button( -text => "Delete Show", -state => "disabled", -command => sub{ *************** *** 308,316 **** }) -> pack(-fill => 'x'); - # $frame->Button( -text => "Exit", - # -command => sub{ - # return if changed_check(); - # $TOP -> destroy(); - # }) -> pack(-fill => 'x' ); } # control buttons --- 320,323 ---- *************** *** 329,332 **** --- 336,340 ---- -height =>12, -selectmode => 'row', + -exportselection => 0, -scrollbars => 'w'); $list -> {SubWidget} -> {scrolled} -> privateData('Entry') -> {Entry} = $entry; *************** *** 338,345 **** my $col = $w->privateData('Entry') -> {Col}; my $val = $w->get('active'); ! print "Storing ($val) into $col\n"; ! $COL_VALUE[$col]=$val; ! load_selection_items(); ! }, ); $SELECT[$col]= { frame => $frame, --- 346,353 ---- my $col = $w->privateData('Entry') -> {Col}; my $val = $w->get('active'); ! print STDERR "Storing ($val) into $col\n"; ! $COL_VALUE[$col]=$val; ! load_selection_items(); ! }, ); $SELECT[$col]= { frame => $frame, *************** *** 394,398 **** # let the games begin! # ! print "GUI running\n"; Tk::MainLoop; } # CONFIGURE --- 402,406 ---- # let the games begin! # ! print STDERR "GUI running\n"; Tk::MainLoop; } # CONFIGURE *************** *** 407,411 **** # Build show_time index # ! print "Computing show time index\n"; my $unique=1; foreach $show (@SHOW_DATA) --- 415,419 ---- # Build show_time index # ! print STDERR "Computing show time index\n"; my $unique=1; foreach $show (@SHOW_DATA) *************** *** 448,452 **** # let the games begin... process shows! # ! print "Processing shows\n\n"; foreach $start (sort keys %SHOW_TIME) { --- 456,460 ---- # let the games begin... process shows! # ! print STDERR "Processing shows\n\n"; foreach $start (sort keys %SHOW_TIME) { *************** *** 536,540 **** # That's it, have a nice day # ! print "Exiting\n"; exit 0; --- 544,548 ---- # That's it, have a nice day # ! print STDERR "Exiting\n"; exit 0; *************** *** 571,575 **** my $desc = get_text($ep ->{"sub-title"});# || get_text($ep->{desc}); my $part = ""; ! if (defined $ep->{"episode-num"}) { my $text = $ep->{"episode-num"}->[0]; --- 579,583 ---- my $desc = get_text($ep ->{"sub-title"});# || get_text($ep->{desc}); my $part = ""; ! if (exists $ep->{"episode-num"}) { my $text = $ep->{"episode-num"}->[0]; *************** *** 755,760 **** $SHOW_TABLE -> selectionClear('all'); $TOP->title("tvcheck config -".( $SHOW_XML || '(untitled)' )); ! $UPDATE_BUTTON -> configure ( -state => "normal" ); ! $DELETE_BUTTON -> configure ( -state => "normal" ); } } # load_show_table --- 763,770 ---- $SHOW_TABLE -> selectionClear('all'); $TOP->title("tvcheck config -".( $SHOW_XML || '(untitled)' )); ! ! $SHOW_ROW=0; ! $UPDATE_BUTTON -> configure ( -state => "disabled" ); ! $DELETE_BUTTON -> configure ( -state => "disabled" ); } } # load_show_table *************** *** 784,787 **** --- 794,801 ---- my $match = undef; + $day = "" unless defined $day; + $chan = "" unless defined $chan; + $title = "" unless defined $title; + $day =~ s/^\s+|\s+$//g; $chan =~ s/^\s+|\s+$//g; *************** *** 792,806 **** # $SELECT[4]{list} -> delete(0,"end"); ! if ($day && $chan) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{$day}{$chan}}); $match = $GUIDE{$day}{$chan}{$title}; } ! elsif ($day) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{day}{$day}} ); $match=$GUIDE{day}{$day}{$title}; } ! elsif ($chan) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{chan}{$chan}} ); --- 806,820 ---- # $SELECT[4]{list} -> delete(0,"end"); ! if (defined $day && defined $chan) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{$day}{$chan}}); $match = $GUIDE{$day}{$chan}{$title}; } ! elsif (defined $day) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{day}{$day}} ); $match=$GUIDE{day}{$day}{$title}; } ! elsif (defined $chan) { $SELECT[4]{list} -> insert(0,"",sort keys %{$GUIDE{chan}{$chan}} ); *************** *** 838,842 **** This is a program to create/maintain a show XML file for use with tvcheck. ! I hope it's fairly intuitive. One thing that can get you is the aggressive nature of the autofill of the selection fields. The good news is the routine only kicks off when you click a listbox. Don't click in a listbox and you can edit the raw data all like. Don't forget to check out README.tvcheck --- 852,859 ---- This is a program to create/maintain a show XML file for use with tvcheck. ! I hope it's fairly intuitive. One thing that can get you is the aggressive nature ! of the autofill of the selection fields. The good news is the routine only kicks ! off when you click a listbox. Don't click in a listbox and you can edit the raw ! data all like. Don't forget to check out README.tvcheck *************** *** 873,877 **** my $msg = shift; ! print "error: $msg\n"; $TOP->messageBox( -icon => 'error', --- 890,894 ---- my $msg = shift; ! print STDERR "\nerror: $msg\n"; $TOP->messageBox( -icon => 'error', *************** *** 889,903 **** unless (-e $file) { ! print "\n****show file not found ($file)\n\n"; return; } $SHOW_XML = $file; ! print "Loading xml show info ($SHOW_XML) "; my $xml = XMLin($SHOW_XML, searchpath => ".", forcearray => 1 ); ! @SHOWS=@{$xml->{shows}} if exists $xml->{shows}; @LANG= @{$xml->{lang}} if exists $xml->{lang}; - printf "(%d/%d)\n",$#SHOWS+1,$#LANG+1; # # fix numeric weekday in old shows file --- 906,929 ---- unless (-e $file) { ! error_popup("show file not found ($file)"); return; } $SHOW_XML = $file; ! print STDERR "Loading xml show info ($SHOW_XML)\n"; ! my $xml = XMLin($SHOW_XML, searchpath => ".", forcearray => 1 ); ! if ( exists $xml->{shows} ) ! { ! @SHOWS=@{$xml->{shows}}; ! } ! else ! { ! error_popup("File ($file) is not a show file"); ! } ! @LANG= @{$xml->{lang}} if exists $xml->{lang}; + printf STDERR "Loaded xml show file ($SHOW_XML) (%d/%d)\n",$#SHOWS+1,$#LANG+1; # # fix numeric weekday in old shows file *************** *** 934,938 **** unless (-e $file) { ! print "\n****Guide file not found ($file)\n\n"; return; } --- 960,964 ---- unless (-e $file) { ! error_popup("Guide file not found ($file)"); return; } *************** *** 942,951 **** my $c=0; $GUIDE_XML = $file; ! print "Loading xml guide info ($file) "; $xml = XMLTV::read_data($file); %CHAN = %{$xml->[2] }; @GUIDE = @{$xml->[3] }; %GUIDE = (); ! print $#GUIDE+1," recs / ",(time()-$st)," secs\n"; # # Build channel sort --- 968,982 ---- my $c=0; $GUIDE_XML = $file; ! print STDERR "Loading xml guide info ($file) "; $xml = XMLTV::read_data($file); %CHAN = %{$xml->[2] }; @GUIDE = @{$xml->[3] }; %GUIDE = (); ! print STDERR $#GUIDE+1," recs / ",(time()-$st)," secs\n"; ! unless (@GUIDE) ! { ! error_popup("Listings file ($file) invalid or empty"); ! } ! # # Build channel sort *************** *** 966,973 **** $st=time(); $c=0; ! print "Building Episode Indexes "; foreach $ep (@GUIDE) { ! print "." unless $c++ % 1000; my $title = get_text($ep->{title}); my $chan = $ep->{channel} || "" ; --- 997,1004 ---- $st=time(); $c=0; ! print STDERR "Building Episode Indexes "; foreach $ep (@GUIDE) { ! print STDERR "." unless $c++ % 1000; my $title = get_text($ep->{title}); my $chan = $ep->{channel} || "" ; *************** *** 996,1000 **** } } # building guide indexes ! print " $c recs / ",time()-$st,"secs \n"; error_popup("guide file $GUIDE_XML does not appear to be valid") unless @GUIDE; --- 1027,1031 ---- } } # building guide indexes ! print STDERR " $c recs / ",time()-$st,"secs \n"; error_popup("guide file $GUIDE_XML does not appear to be valid") unless @GUIDE; *************** *** 1031,1035 **** # dump xml # ! print "saving shows to $SHOW_XML\n"; my $string = XMLout( { shows => \@newshow, lang => \@LANG, --- 1062,1066 ---- # dump xml # ! print STDERR "saving shows to $SHOW_XML\n"; my $string = XMLout( { shows => \@newshow, lang => \@LANG, *************** *** 1067,1071 **** my $date1= ParseDate($ep->{start}); my $date2; ! $date2 = ParseDate($ep->{stop}) if $ep -> {stop}; $date2 = $date1 unless $date2; my ($hhmm, $day, $mmdd ) = UnixDate( $date1,"%H%M","%a","%m%d"); --- 1098,1102 ---- my $date1= ParseDate($ep->{start}); my $date2; ! $date2 = ParseDate($ep->{stop}) if defined $ep -> {stop}; $date2 = $date1 unless $date2; my ($hhmm, $day, $mmdd ) = UnixDate( $date1,"%H%M","%a","%m%d"); |
From: Ed A. <ep...@us...> - 2002-01-19 19:49:37
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv25294 Modified Files: getlistings_na Log Message: Made all grabbing error messages go to stderr rather than stdout, so they don't get mixed in with the XML listings. This includes the usage message. For consistency changed the --configure usage message to stderr too. Index: getlistings_na =================================================================== RCS file: /cvsroot/xmltv/xmltv/getlistings_na,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** getlistings_na 2002/01/19 18:40:09 1.35 --- getlistings_na 2002/01/19 19:49:33 1.36 *************** *** 313,339 **** sub ConfigureUsage { ! print "usage $0 --configure [options]\n"; ! print "where options are:\n"; ! print " --help\n"; ! print " print configure help\n"; ! print "\n"; ! print " --debug\n"; ! print " turn on debugging\n"; ! print "\n"; ! print " --postalcode XXXXXX\n"; ! print " specify postal code, don't use with --zipcode\n"; ! print "\n"; ! print " --zipcode YYYYYY\n"; ! print " specify zip code, don't use with --postalcode\n"; ! print "\n"; ! print " --provider ZZZZZZZ\n"; ! print " specify provider id\n"; ! print "\n"; ! print " --config <file>\n"; ! print " write results of configure to <file> instead of \$HOME/$ConfigFileName_g\n"; ! print "\n"; ! print "If any neccessary options are given, interactive mode is enabled\n"; ! print "Result of running configure is a xml formated configuration file\n"; ! print "\$HOME/$ConfigFileName_g (use --config to override location).\n"; } --- 313,339 ---- sub ConfigureUsage { ! print STDERR "usage $0 --configure [options]\n"; ! print STDERR "where options are:\n"; ! print STDERR " --help\n"; ! print STDERR " print STDERR configure help\n"; ! print STDERR "\n"; ! print STDERR " --debug\n"; ! print STDERR " turn on debugging\n"; ! print STDERR "\n"; ! print STDERR " --postalcode XXXXXX\n"; ! print STDERR " specify postal code, don't use with --zipcode\n"; ! print STDERR "\n"; ! print STDERR " --zipcode YYYYYY\n"; ! print STDERR " specify zip code, don't use with --postalcode\n"; ! print STDERR "\n"; ! print STDERR " --provider ZZZZZZZ\n"; ! print STDERR " specify provider id\n"; ! print STDERR "\n"; ! print STDERR " --config <file>\n"; ! print STDERR " write results of configure to <file> instead of \$HOME/$ConfigFileName_g\n"; ! print STDERR "\n"; ! print STDERR "If any neccessary options are given, interactive mode is enabled\n"; ! print STDERR "Result of running configure is a xml formated configuration file\n"; ! print STDERR "\$HOME/$ConfigFileName_g (use --config to override location).\n"; } *************** *** 348,386 **** sub Usage { ! print "usage $0 [--help|--configure [configure-options] |[grab-options]]\n"; ! print "command line options are:\n"; ! print " --help\n"; ! print " print this help\n"; ! print " use --configure --help for configure help or\n"; ! print " use --grab --help for grab help\n"; ! print "\n"; ! print " --configure\n"; ! print " run configuration step, see --configure --help for more info\n"; ! print "\n"; ! print "grab-options are:\n"; ! print " --debug\n"; ! print " turn on debugging\n"; ! print "\n"; ! print " --debuglistings\n"; ! print " add debugging material in output xml as comments\n"; ! print "\n"; ! print " --config <file>\n"; ! print " specify file that contains config information, default in \$HOME/$ConfigFileName_g\n"; ! print " (created by using --configure)\n"; ! print "\n"; ! print " --listings <file>\n"; ! print " specify listings.xml filename(s) for channel & program info\n"; ! print " <file> may contain Date::Manip::Unix substitutions\n"; ! print " for instance, use --listings \"listings-%d%m%Y.xml\" to separate output by day.\n"; ! print " similarily, %postalcode, %zipcode, are also substituted from settings\n"; ! print " current configuration.\n"; ! print " The filename is only re-evaluated when a new days listings is started.\n"; ! print " if no --listings is specified stdout is used\n"; ! print "\n"; ! print " --output <file>\n"; ! print " synonym for --listings\n"; ! print "\n"; ! print " --days n\n"; ! print " specify number of days to include in output (default 7)\n"; } --- 348,386 ---- sub Usage { ! print STDERR "usage $0 [--help|--configure [configure-options] |[grab-options]]\n"; ! print STDERR "command line options are:\n"; ! print STDERR " --help\n"; ! print STDERR " print STDERR this help\n"; ! print STDERR " use --configure --help for configure help or\n"; ! print STDERR " use --grab --help for grab help\n"; ! print STDERR "\n"; ! print STDERR " --configure\n"; ! print STDERR " run configuration step, see --configure --help for more info\n"; ! print STDERR "\n"; ! print STDERR "grab-options are:\n"; ! print STDERR " --debug\n"; ! print STDERR " turn on debugging\n"; ! print STDERR "\n"; ! print STDERR " --debuglistings\n"; ! print STDERR " add debugging material in output xml as comments\n"; ! print STDERR "\n"; ! print STDERR " --config <file>\n"; ! print STDERR " specify file that contains config information, default in \$HOME/$ConfigFileName_g\n"; ! print STDERR " (created by using --configure)\n"; ! print STDERR "\n"; ! print STDERR " --listings <file>\n"; ! print STDERR " specify listings.xml filename(s) for channel & program info\n"; ! print STDERR " <file> may contain Date::Manip::Unix substitutions\n"; ! print STDERR " for instance, use --listings \"listings-%d%m%Y.xml\" to separate output by day.\n"; ! print STDERR " similarily, %postalcode, %zipcode, are also substituted from settings\n"; ! print STDERR " current configuration.\n"; ! print STDERR " The filename is only re-evaluated when a new days listings is started.\n"; ! print STDERR " if no --listings is specified stdout is used\n"; ! print STDERR "\n"; ! print STDERR " --output <file>\n"; ! print STDERR " synonym for --listings\n"; ! print STDERR "\n"; ! print STDERR " --days n\n"; ! print STDERR " specify number of days to include in output (default 7)\n"; } *************** *** 882,886 **** $code=$config->{option_zipcode} if ( defined($config->{option_zipcode}) ); ! print "\nchecking provider information for postal/zip code $code, be patient..\n"; my @providers=ZapListings::getProviders($config->{option_postalcode}, $config->{option_zipcode}, --- 882,886 ---- $code=$config->{option_zipcode} if ( defined($config->{option_zipcode}) ); ! print STDERR "\nchecking provider information for postal/zip code $code, be patient..\n"; my @providers=ZapListings::getProviders($config->{option_postalcode}, $config->{option_zipcode}, *************** *** 896,900 **** if ( $p->{id} eq $config->{option_provider} ) { if ( $config->{option_provider_desc} ne $p->{description} ) { ! print "provider description changed ($p->{description}), think about re-running --configure\n"; } $still_valid=1; --- 896,900 ---- if ( $p->{id} eq $config->{option_provider} ) { if ( $config->{option_provider_desc} ne $p->{description} ) { ! print STDERR "provider description changed ($p->{description}), think about re-running --configure\n"; } $still_valid=1; |
From: Jerry V. <jve...@us...> - 2002-01-19 18:40:22
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv10822 Modified Files: getlistings_na Log Message: verifies provider information during configure and during grab. Index: getlistings_na =================================================================== RCS file: /cvsroot/xmltv/xmltv/getlistings_na,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** getlistings_na 2002/01/14 14:16:41 1.34 --- getlistings_na 2002/01/19 18:40:09 1.35 *************** *** 403,410 **** } ! sub askquestion { my $question=shift(@_); my $default=shift(@_); my @options=@_; --- 403,411 ---- } ! sub askMyQuestion { my $question=shift(@_); my $default=shift(@_); + my $validate=shift(@_); my @options=@_; *************** *** 421,424 **** --- 422,428 ---- } } + if ( !$validate ) { + return($res); + } print STDERR "invalid response, please choose one of ".join(',', @options)."\n"; print STDERR "\n"; *************** *** 426,429 **** --- 430,447 ---- } + sub askQuestion + { + my $question=shift(@_); + my $default=shift(@_); + return(askMyQuestion($question, $default, 1, @_)); + } + + sub askQuestionWithoutValidation + { + my $question=shift(@_); + my $default=shift(@_); + return(askMyQuestion($question, $default, 0, @_)); + } + if ( $configure ) { use vars qw/$opt_configure $opt_help $opt_postalcode $opt_zipcode $opt_provider $opt_config $opt_debug/; *************** *** 516,521 **** } ! # get list of providers and give them the choice ! if ( !$config->{option_provider} ) { my $code; --- 534,539 ---- } ! # double check or get list of providers and give them the choice ! if ( 1 ) { my $code; *************** *** 523,527 **** $code=$config->{option_zipcode} if ( defined($config->{option_zipcode}) ); ! print STDERR "\ngetting list of providers for postal/zip code $code, be patient..\n"; my @providers=ZapListings::getProviders($config->{option_postalcode}, $config->{option_zipcode}, --- 541,545 ---- $code=$config->{option_zipcode} if ( defined($config->{option_zipcode}) ); ! print "\ngetting list of providers for postal/zip code $code, be patient..\n"; my @providers=ZapListings::getProviders($config->{option_postalcode}, $config->{option_zipcode}, *************** *** 533,536 **** --- 551,578 ---- } + my $defaultChoice=0; + + if ( $config->{option_provider} ) { + my $still_valid=0; + for my $p (@providers) { + if ( $p->{id} eq $config->{option_provider} ) { + if ( $config->{option_provider_desc} ne $p->{description} ) { + print "updating provider description to: $p->{description}\n"; + $config->{option_provider_desc}=$p->{description}; + } + $still_valid=1; + } + if ( $config->{option_provider_desc} eq $p->{description} ) { + $defaultChoice=$p->{id}; + } + } + if ( $still_valid == 0 ) { + print "provider:\n\t".$config->{option_provider}." \# ".$config->{option_provider_desc}. + "\nis no longer valid, choose a new one\n"; + delete($config->{option_provider}); + delete($config->{option_provider_desc}); + } + } + while ( !$config->{option_provider} ) { print "\n"; *************** *** 541,555 **** } print "\n"; ! my $res=ask("Choose a service provider by id (use '0' to cancel):"); ! if ( defined($res) ) { ! if ( $res eq '0' ) { ! print "operation cancelled by user\n"; ! exit(0); ! } ! for my $p (@providers) { ! if ( $res eq $p->{id} ) { ! $config->{option_provider}=$p->{id}; ! $config->{option_provider_desc}=$p->{description}; ! } } } --- 583,597 ---- } print "\n"; ! my $res=askQuestionWithoutValidation("Choose a service provider by id ?", "$defaultChoice", ('id','use 0 to cancel')); ! ! if ( !defined($res) || $res eq '0' ) { ! print "operation cancelled by user\n"; ! exit(0); ! } ! for my $p (@providers) { ! if ( $res eq $p->{id} ) { ! $config->{option_provider}=$p->{id}; ! $config->{option_provider_desc}=$p->{description}; ! print "\nyou choose $p->{id} \# $p->{description}\n"; } } *************** *** 561,568 **** if ( $config->haveAnyChannels() ) { ! print STDERR "\nchecking for changes to channel list, be patient..\n"; } else { ! print STDERR "\ngetting channel list, be patient..\n"; } --- 603,610 ---- if ( $config->haveAnyChannels() ) { ! print "\nchecking for changes to channel list, be patient..\n"; } else { ! print "\ngetting channel list, be patient..\n"; } *************** *** 597,601 **** } else { ! $res=askquestion("add channel $station ?", 'yes', ('yes', 'no', 'all')); $res=~tr/[A-Z]/[a-z]/; if ( $res eq 'all' ) { --- 639,643 ---- } else { ! $res=askQuestion("add channel $station ?", 'yes', ('yes', 'no', 'all')); $res=~tr/[A-Z]/[a-z]/; if ( $res eq 'all' ) { *************** *** 619,623 **** } else { ! $res=askquestion("add channel $station ?", 'yes', ('yes', 'no', 'all')); $res=~tr/[A-Z]/[a-z]/; if ( $res eq 'all' ) { --- 661,665 ---- } else { ! $res=askQuestion("add channel $station ?", 'yes', ('yes', 'no', 'all')); $res=~tr/[A-Z]/[a-z]/; if ( $res eq 'all' ) { *************** *** 648,652 **** } else { ! $res=askquestion("drop no-longer available channel $station ?", 'yes', ('yes', 'no', 'all')); $res=~tr/[A-Z]/[a-z]/; if ( $res eq 'all' ) { --- 690,694 ---- } else { ! $res=askQuestion("drop no-longer available channel $station ?", 'yes', ('yes', 'no', 'all')); $res=~tr/[A-Z]/[a-z]/; if ( $res eq 'all' ) { *************** *** 666,685 **** if ( $channelsUpdated == 0 ) { if ( $config->haveAnyChannels() ) { ! print STDERR "\nchannel line-up hasn't changed\n"; } else { ! print STDERR "\nno channels added\n"; } } # write out config file ! print STDERR "\nupdating $configfile..\n"; if ( $config->save($configfile) != 0 ) { ! print STDERR "$0: $configfile save failed\n"; exit(1); } ! print STDERR "\nconfiguration step complete, let the games begin !\n"; exit(0); } --- 708,727 ---- if ( $channelsUpdated == 0 ) { if ( $config->haveAnyChannels() ) { ! print "\nchannel line-up hasn't changed\n"; } else { ! print "\nno channels added\n"; } } # write out config file ! print "\nupdating $configfile..\n"; if ( $config->save($configfile) != 0 ) { ! print "$0: $configfile save failed\n"; exit(1); } ! print "\nconfiguration step complete, let the games begin !\n"; exit(0); } *************** *** 740,748 **** if ( $failed ) { - print STDERR "cleaning up after failure..\n"; if ( @FilesWeOpened_g ) { for my $file (@FilesWeOpened_g) { if ( -f $file ) { #print STDERR " removing $file\n"; unlink($file); } --- 782,790 ---- if ( $failed ) { if ( @FilesWeOpened_g ) { for my $file (@FilesWeOpened_g) { if ( -f $file ) { #print STDERR " removing $file\n"; + print STDERR "removing $file after failure..\n"; unlink($file); } *************** *** 833,839 **** } # collect information about channels. if ( 1 ) { - print STDERR "double checking channel information, be patient..\n"; --- 875,913 ---- } + # check provider information, usually fast anyway. + # + if ( 1 ) { + my $code; + $code=$config->{option_postalcode} if ( defined($config->{option_postalcode}) ); + $code=$config->{option_zipcode} if ( defined($config->{option_zipcode}) ); + + print "\nchecking provider information for postal/zip code $code, be patient..\n"; + my @providers=ZapListings::getProviders($config->{option_postalcode}, + $config->{option_zipcode}, + $opt_debug); + if ( ! @providers || !defined($providers[0]) ) { + #print STDERR "$0: failed to get list of providers for postal/zip code $code\n"; + #print STDERR " visit zap2it.com and try the postal/zip code for more information\n"; + exit(1); + } + + my $still_valid=0; + for my $p (@providers) { + if ( $p->{id} eq $config->{option_provider} ) { + if ( $config->{option_provider_desc} ne $p->{description} ) { + print "provider description changed ($p->{description}), think about re-running --configure\n"; + } + $still_valid=1; + } + } + if ( $still_valid == 0 ) { + print STDERR "noticed provider changed (for postal/zip code $code), re-run --configure\n"; + # return failed + return(1); + } + } + # collect information about channels. if ( 1 ) { print STDERR "double checking channel information, be patient..\n"; *************** *** 866,874 **** } else { ! print STDERR "Noticed new station available ($station), re-run --configure\n"; } } else { ! print STDERR "Noticed new station available ($station), re-run --configure\n"; } } --- 940,948 ---- } else { ! print STDERR "noticed new station available ($station), re-run --configure\n"; } } else { ! print STDERR "noticed new station available ($station), re-run --configure\n"; } } *************** *** 880,884 **** } else { ! print STDERR "Noticed station unavailable ($station), re-run --configure\n"; $config->setStationTransientFlag($station, 'notavailable', 1); } --- 954,958 ---- } else { ! print STDERR "noticed station unavailable ($station), re-run --configure\n"; $config->setStationTransientFlag($station, 'notavailable', 1); } |
From: Ed A. <ep...@us...> - 2002-01-19 18:38:24
|
Update of /cvsroot/xmltv/xmltv/todo In directory usw-pr-cvs1:/tmp/cvs-serv10579 Modified Files: TASKS.epa Log Message: Update of my task list. This file will eventually disappear completely - but not quite yet :-(. Index: TASKS.epa =================================================================== RCS file: /cvsroot/xmltv/xmltv/todo/TASKS.epa,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** TASKS.epa 2001/12/28 17:54:51 1.9 --- TASKS.epa 2002/01/19 18:38:21 1.10 *************** *** 4,28 **** the other stuff I wrote. -- Ed Avis, ep...@do... - 4Learning - done - morning on 3 - done - (lw) (fm) - done - FILM 1978 DESC - done - trailing semicolon in desc - done - store yes/no, not maybe - done - richard e. grant stars in - done - news;weather (check mail) - done As World Service - wontfix - news; radio 3 lunchtime concert - done - pick.cgi actually output XML, or something - done Pink Panther film vs cartoon - todos in DTD - done Gareth Hale guests blank lines in sort_listings output - use the TVChannels.pm module 50 poundsbillion Columbo: Foo - pick.cgi list cast etc - done -; -; - FIXMEs 'Last in series' (U) etc after film title --- 4,14 ---- *************** *** 33,51 **** Proper installation routine (Makefile.PL?) Make Perl modules live in XMLTV:: namespace (patch from Justin Hallett) - Add Tie::IxHash, Term::ProgressBar as dependency - done getlistings_uk_ananova: squeeze repeated hyphens in guessed names Write grep_listings at last Merge almost-same channels (eg BBC1 SE vs BBC1 Digital) Suggestions from Jerry V. - next shown (we decided it's not needed) - - shouldn't the channel # and station name be separate (dealt with; each - channel can have zero or more pretty names) - programmes should have taped/joined in progress/live (TODO) - should indicate HDTV somehow (TODO) - - make it clear that channel attribute references channels.xml. (Done; - channels.xml is no more. But see above.) Decided not to deal with channel affiliations. - --- 19,37 ---- Proper installation routine (Makefile.PL?) Make Perl modules live in XMLTV:: namespace (patch from Justin Hallett) getlistings_uk_ananova: squeeze repeated hyphens in guessed names Write grep_listings at last Merge almost-same channels (eg BBC1 SE vs BBC1 Digital) + 'Discovery Plus 1' + + Eliminate colons in output times. + + --output + Suggestions from Jerry V. - next shown (we decided it's not needed) - programmes should have taped/joined in progress/live (TODO) - should indicate HDTV somehow (TODO) Decided not to deal with channel affiliations. |
From: Ed A. <ep...@us...> - 2002-01-19 18:32:15
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv9344 Modified Files: getlistings_uk_ananova Log Message: Fixed selection of regions by name. Dealt with FIXME for multiple descriptions - now all the descriptions from Ananova are included in the output XML, with the main description coming first. Index: getlistings_uk_ananova =================================================================== RCS file: /cvsroot/xmltv/xmltv/getlistings_uk_ananova,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** getlistings_uk_ananova 2002/01/18 20:44:21 1.35 --- getlistings_uk_ananova 2002/01/19 18:32:13 1.36 *************** *** 224,227 **** --- 224,229 ---- # local $Log::TraceMessages::On = 1; foreach my $arg (@ARGV) { + t "working out arg $arg"; + my $larg = lc $arg; my $t; *************** *** 230,239 **** # foreach (sort keys %type_display) { ! my $dn = $type_display{$_}; ! if ($dn =~ /^\Q$arg\E$/i) { $t = $_; last; } ! elsif (not defined $t and $dn =~ /\Q$arg\E/i) { $t = $_; } --- 232,241 ---- # foreach (sort keys %type_display) { ! my $ldn = lc $type_display{$_}; ! if ($ldn eq $larg) { $t = $_; last; } ! elsif (not defined $t and index($ldn, $larg) != -1) { $t = $_; } *************** *** 248,257 **** # Or a terrestrial region. foreach (sort keys %region_display) { ! my $dn = $region_display{$_}; ! if ($dn =~ /^\Q$arg\E$/i) { $t = $_; last; } ! elsif (not defined $t and $dn =~ /^\Q$arg\E$/i) { $t = $_; } --- 250,259 ---- # Or a terrestrial region. foreach (sort keys %region_display) { ! my $ldn = lc $region_display{$_}; ! if ($ldn eq $larg) { $t = $_; last; } ! elsif (not defined $t and index($ldn, $larg) != -1) { $t = $_; } *************** *** 287,299 **** my $dn = $_->get_a_display_name(); next if not defined $dn; my $xmltv_id = $_->get_xmltv_id(); die if not defined $xmltv_id; ! if ($dn =~ /^\Q$arg\E$/i) { $t = $xmltv_id; $found_dn = $dn; last; } ! elsif (not defined $t and $dn =~ /\Q$arg\E/i) { $t = $xmltv_id; $found_dn = $dn; --- 289,302 ---- my $dn = $_->get_a_display_name(); next if not defined $dn; + my $ldn = lc $dn; my $xmltv_id = $_->get_xmltv_id(); die if not defined $xmltv_id; ! if ($ldn eq $larg) { $t = $xmltv_id; $found_dn = $dn; last; } ! elsif (not defined $t and index($ldn, $larg) != -1) { $t = $xmltv_id; $found_dn = $dn; *************** *** 665,668 **** --- 668,672 ---- END ; + $msg .= join(', ', sort values %region_display) . "\n"; $msg .= join(', ', sort values %type_display) . "\n"; $msg .= <<END *************** *** 799,803 **** } my ($title, $time, $when, $episode_num, $episode_name, $cast, ! $director, $duration, $desc, $type, $subtitled, $bw, $stereo, $mono, $new, $repeat, $digital) = @fields; --- 803,807 ---- } my ($title, $time, $when, $episode_num, $episode_name, $cast, ! $director, $duration, $main_desc, $type, $subtitled, $bw, $stereo, $mono, $new, $repeat, $digital) = @fields; *************** *** 959,967 **** } - # Description. Any special munging on this will happen later. - if (length $desc) { - $p{desc} = [ [ $desc, $LANG ] ]; - } - # Programme type. if (length $type) { --- 963,966 ---- *************** *** 1069,1078 **** # ! # Finally there are four descriptions, with increasing levels ! # of detail. It might be a good idea to extend the XMLTV ! # format to support several descriptions of differing length, ! # but for now we just sanity-check them. ! # ! # FIXME it does support this! Output them! # my @descs = @fields[17..20]; --- 1068,1074 ---- # ! # There is one main description and four additional ! # descriptions with increasing levels of detail. We ! # sanity-check that they have more or less increasing length. # my @descs = @fields[17..20]; *************** *** 1100,1106 **** # description. Er, except when it is not present at all. # ! if (defined $descs[3] and $descs[3] ne '' and $descs[3] ne $desc) { ! warn "description 3 ($descs[3]) isn't the same as main desc ($desc) " . "in line from url $url: $_"; } --- 1096,1110 ---- # description. Er, except when it is not present at all. # ! if (defined $descs[3] and $descs[3] ne '' and $descs[3] ne $main_desc) { ! warn "description 3 ($descs[3]) isn't the same as main desc ($main_desc) " . "in line from url $url: $_"; + # Add on the main description so we don't lose it. + push @descs, $main_desc; + } + my %seen; + foreach (reverse @descs) { + next if $_ eq ''; + next if $seen{$_}++; + push @{$p{desc}}, [ $_, $LANG ]; } |
From: Ed A. <ep...@us...> - 2002-01-19 18:07:15
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv2389 Modified Files: tvcheck Log Message: Parse episode-num better. Still not perfect, but should work with files currently generated. Index: tvcheck =================================================================== RCS file: /cvsroot/xmltv/xmltv/tvcheck,v retrieving revision 2.5 retrieving revision 2.6 diff -C2 -d -r2.5 -r2.6 *** tvcheck 2002/01/17 07:18:04 2.5 --- tvcheck 2002/01/19 18:07:11 2.6 *************** *** 571,578 **** my $desc = get_text($ep ->{"sub-title"});# || get_text($ep->{desc}); my $part = ""; ! if ($ep->{"episode-num"}) { ! $part = "$1/$2" if ($ep->{"episode-num"}->[0]) =~ m!Part *(\d+) *of *(\d+)!i; ! $part = ($1+1)."/$2" if ($ep->{"episode-num"}->[0]) =~ m!\.{\d+}/{\d+}!i; } --- 571,593 ---- my $desc = get_text($ep ->{"sub-title"});# || get_text($ep->{desc}); my $part = ""; ! if (defined $ep->{"episode-num"}) { ! my $text = $ep->{"episode-num"}->[0]; ! if ($text =~ m!Part *(\d+) *of *(\d+)!i) ! { ! $part = "$1/$2"; ! } ! elsif ($text =~ m!\.\s*(\d+)\s*/\s*(\d+)\s*$!) ! { ! $part = ($1+1)."/$2"; ! } ! elsif ($text =~ m!\.\s*(\d+)\s*$!) ! { ! $part = $1+1; ! } ! else ! { ! warn "bad episode-num content $text"; ! } } |
From: Ed A. <ep...@us...> - 2002-01-19 18:05:18
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv1683 Modified Files: XMLTV.pm Log Message: Moved the channel writing code into a subroutine write_channel() which can be called externally. This is needed for the new getlistings_uk_ananova. Index: XMLTV.pm =================================================================== RCS file: /cvsroot/xmltv/xmltv/XMLTV.pm,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** XMLTV.pm 2002/01/08 13:28:48 1.11 --- XMLTV.pm 2002/01/19 18:05:14 1.12 *************** *** 986,1007 **** t "writing channel with id $id"; my $names = $channels->{$_}; ! if (not @$names) { ! warn "channel $id has no display names, not writing"; ! next; ! } ! $w->startTag('channel', id => $id); ! foreach (@$names) { ! my ($text, $lang) = @$_; ! my %attrs; ! $attrs{lang} = $lang if defined $lang; ! warn "writing undefined channel name for channel $id" ! if not defined $text; ! $w->dataElement('display-name', $text, %attrs); ! } ! $w->endTag('channel'); } t('write_channels() EXIT'); } # Private. --- 986,1029 ---- t "writing channel with id $id"; my $names = $channels->{$_}; ! write_channel($w, $id, $names); } t('write_channels() EXIT'); } + # write_channel() + # + # Write a single channel. Unlike programmes, channels are not + # self-contained lumps floating about in a big list: they are indexed + # in a hash by channel id for easy lookup. This means that when + # writing them out, you need to know the id as well as the data it + # points to. Accordingly the parameters are: + # + # XMLTV::Writer object + # id of channel + # channel data (at present, a list of display names) + # + # You can call this routine if you want, but most of the time + # write_channels() is a better interface. + # + # FIXME extend this module for icons and stuff. + # In fact for all recent changes to the DTD. + # + sub write_channel { + my ($w, $id, $names) = @_; + if (not @$names) { + warn "channel $id has no display names, not writing"; + return; + } + $w->startTag('channel', id => $id); + foreach (@$names) { + my ($text, $lang) = @$_; + my %attrs; + $attrs{lang} = $lang if defined $lang; + warn "writing undefined channel name for channel $id" + if not defined $text; + $w->dataElement('display-name', $text, %attrs); + } + $w->endTag('channel'); + } # Private. |
From: Ed A. <ep...@us...> - 2002-01-18 20:44:24
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv30581 Modified Files: getlistings_uk_ananova Added Files: Ananova_Channel.pm Log Message: Refactored getlistings_uk_ananova's channel management into Ananova_Channel.pm. Previously there were too many hashes mapping between XMLTV channel id, Ananova channel id, Ananova display name (which comes in two forms), additional display name, broadcast method or region, channel packages, and what the user wishes to download. It's a little bit saner now but still rather ugly. The Ananova_Channel package is not in any way a general or reusable set of channel management routines. It's very specific to the peculiarities of this data source. The name sucks, but we're going to rename everything soon anyway. Also a few bug fixes including that the episode-num is now written out properly (at least until that bit of DTD gets replaced with something saner), updates to channel definitions and packages, and general tidying. The old option ALL to get every one of Ananova's pages will probably become undocumented in the next release. It doesn't work that well because often two different pages on Ananova are mapped to the same XMLTV channel. It ends up grabbing both. This is however useful for checking the output, running it through sort_listings to check that the two Ananova channels are indeed identical, so I won't remove this ability completely. --- NEW FILE: Ananova_Channel.pm --- package Channel; use Carp (); use Log::TraceMessages qw(t d); my @all; my %idx_a; # index by Ananova id my %idx_x; # index by XMLTV id sub new { my $proto = shift; my $class = (ref $proto) || $proto; my $self = {}; bless $self, $class; push @all, $self; return $self; } # Accessors for individual channel. # Each channel can have one or more Ananova ids, but each Ananova id # belongs to only one channel. # # If one channel has several Ananova ids, that means that the same # listings are available on Ananova under two separate names. For # example 'Granada Plus' and 'Granada Plus - ITV Digital' are presumed # to be the same channel, so they have a single channel entry with two # Ananova ids. That raises the question of which id should be used to # calculate the display name of the channel. Therefore the first id # to be added can be fetched specially, and you should probably do # things like setting the display name based only on the first id, and # not again for all the other ids. # sub add_ananova_id { my $self = shift; my $id = shift; if (defined $idx_a{$id} and $idx_a{$id} ne $self) { $self->croak("a channel with Ananova id $id already exists"); } ++ $self->{ananova_ids}->{$id}; $self->{first_ananova_id} = $id if not defined $self->{first_ananova_id}; $idx_a{$id} = $self; return $self; } sub get_first_ananova_id { my $self = shift; $self->croak('no Ananova ids set') if not defined $self->{first_ananova_id}; return $self->{first_ananova_id}; } sub is_ananova_id { my $self = shift; my $id = shift; $self->croak('ids not set') if not defined $self->{ananova_ids}; return $self->{ananova_ids}->{$id}; } # get_ananova_ids() not needed? sub set_xmltv_id { my $self = shift; my $id = shift; for ($self->{xmltv_id}) { $self->croak("cannot set XMLTV id to $id, already set to $_") if defined and $_ ne $id; } if (defined $idx_x{$id} and $idx_x{$id} ne $self) { $self->croak("a channel with XMLTV id $id already exists"); } $self->{xmltv_id} = $id; $idx_x{$id} = $self; return $self; } sub get_xmltv_id { my $self = shift; if (not defined $self->{xmltv_id}) { # Invent an RFC2838-style name, if we have a definitive # display name to make one from. Otherwise undef. # if (not $self->has_definitive_display_name()) { return undef; } my $display = $self->get_main_display_name(); die if not defined $display; my $munged = $display; for ($munged) { tr/ _/-/s; tr/a-zA-Z0-9-//cd; tr/A-Z/a-z/; } my $new = "$munged.tv-listings.ananova.com"; # We just hope that the same name was not picked for some # other channel. It shouldn't be if we can trust display # names to be different. # $self->set_xmltv_id($new); } return $self->{xmltv_id}; } sub set_type { my $self = shift; my $type = shift; for ($self->{type}) { $self->croak("cannot set type to $type, already set to $_") if defined and $_ ne $type; } $self->{type} = $type; return $self; } sub get_type { my $self = shift; # Okay for type to be undef. return $self->{type}; } # Similarly to Ananova id, region can be multivalued. sub add_region { my $self = shift; my $region = shift; ++ $self->{regions}->{$region}; return $self; } sub is_region { my $self = shift; my $region = shift; $self->croak('regions not set') if not defined $self->{regions}; return $self->{regions}->{$region}; } # all_regions() not needed I think. sub set_main_display_name { my $self = shift; my ($new_name, $defin) = @_; if (not $defin) { for ($self->{main_display_name}) { $self->croak("cannot set main display name to $new_name, already set to $_") if defined and $_ ne $new_name; } $self->{main_display_name} = $new_name; $self->{main_display_name_defin} = 0; return $self; } else { for ($self->{main_display_name}) { $self->croak("cannot set main display name to $new_name, definitive name already set to $_") if $self->{main_display_name_defin} and $_ ne $new_name; } $self->{main_display_name} = $new_name; $self->{main_display_name_defin} = 1; return $self; } } # Add additional display names to a channel. This is an ordered list, # but duplicates are silently removed. # sub add_extra_display_names { my $self = shift; my %used; foreach (@{$self->{extra_display_names}}) { $used{$_}++ && die; } foreach (@_) { unless ($used{$_}++) { push @{$self->{extra_display_names}}, $_; } } return $self; } sub get_display_names { my $self = shift; my $main = $self->{main_display_name}; $self->croak('main display name not set') if not defined $main; my @r = ($main); # Add the extra display names to the list. These are without # duplicates but we never bothered to check they didn't clash with # the main name. So weed out that kind of duplication now. # my %used; foreach (@{$self->{extra_display_names}}) { die if not defined; die if $used{$_}++; if (defined and ($_ ne $main)) { push @r, $_; } } return @r; } sub get_main_display_name { my $self = shift; # Okay to return undef. return $self->{main_display_name}; } sub has_definitive_display_name { my $self = shift; return (defined $self->{main_display_name}) && $self->{main_display_name_defin}; } # Get some kind of display name to show to the user in error messages. sub get_a_display_name { my $self = shift; foreach (qw(main_display_name xmltv_id ananova_id)) { return $self->{$_} if defined $self->{$_}; } $self->carp('channel with no name whatsoever'); return '(unknown)'; } # Channel finding sub find_by_ananova_id { my $class = shift; my $id = shift; return $idx_a{$id}; } sub find_by_xmltv_id { my $class = shift; my $id = shift; return $idx_x{$id}; } sub all { my $class = shift; return @all; } sub stringify { my $self = shift; my @r; push @r, $self->{xmltv_id} if defined $self->{xmltv_id}; foreach (sort keys %{$self->{ananova_ids}}) { push @r, $_; last; # let's just have the first one eh? } push @r, $self->{main_display_name} if defined $self->{main_display_name}; return '[' . join(', ', @r) . ']' } # Writing a single channel as XMLTV format. Parameters: # XMLTV::Writer object # Language used for display names # sub write { my $self = shift; t 'writing channel: ' . d $self; my ($writer, $lang) = @_; my $id = $self->get_xmltv_id(); my @names = $self->get_display_names(); t 'writing display names: ' . d \@names; my @out; foreach (@names) { if (not tr/0-9//c) { # Just digits, doesn't need a language. push @out, [ $_ ]; } else { push @out, [ $_, $lang ]; } } t 'to output: ' . d \@out; $writer->write_channel($id, \@out); } sub croak { my $self = shift; my $msg = shift; Carp::croak($self->stringify() . ": $msg"); } sub carp { my $self = shift; my $msg = shift; Carp::carp($self->stringify() . ": $msg"); } 1; Index: getlistings_uk_ananova =================================================================== RCS file: /cvsroot/xmltv/xmltv/getlistings_uk_ananova,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** getlistings_uk_ananova 2002/01/07 17:54:34 1.34 --- getlistings_uk_ananova 2002/01/18 20:44:21 1.35 *************** *** 20,23 **** --- 20,24 ---- use Tie::RefHash; use Term::ProgressBar; + use Ananova_Channel; # Prototype declarations *************** *** 25,38 **** sub get_regions(); sub get_dir(); [...2033 lines suppressed...] } } ! return %r; } --- 1858,1872 ---- ); ! ! # Check that every XMLTV id here is actually known. ! foreach my $pkg_name (keys %pkgs) { ! foreach my $ch_id (@{$pkgs{$pkg_name}}) { ! my $ch = Channel->find_by_xmltv_id($ch_id); ! if (not defined $ch) { ! warn "channel id $ch_id mentioned in package $pkg_name, but not known"; ! } } } ! ! return %pkgs; } |
From: Robert E. <rm...@us...> - 2002-01-17 07:18:08
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv13336/xmltv Modified Files: README.tvcheck tvcheck Log Message: Moved Exit button to under file menu. added OnDestroy method on main app close added keyboard shortcuts to menus SHOW TABLE code for minimum number of rows now works you can no longer select blank rows Selection List changed ENTRY widgets to use a --textvariable, simpler code. Index: README.tvcheck =================================================================== RCS file: /cvsroot/xmltv/xmltv/README.tvcheck,v retrieving revision 2.1 retrieving revision 2.2 diff -C2 -d -r2.1 -r2.2 *** README.tvcheck 2002/01/11 05:37:13 2.1 --- README.tvcheck 2002/01/17 07:18:04 2.2 *************** *** 80,83 **** --- 80,91 ---- indexing ). + Known bug: + --------------------- + If you select a title in the title selection list and then try and select a blank day + or channel the field doesn't blank. I have no clue. The variable doesn't match the + displayed value... looks like a TK bug to me. + + + Index: tvcheck =================================================================== RCS file: /cvsroot/xmltv/xmltv/tvcheck,v retrieving revision 2.4 retrieving revision 2.5 diff -C2 -d -r2.4 -r2.5 *** tvcheck 2002/01/16 05:50:31 2.4 --- tvcheck 2002/01/17 07:18:04 2.5 *************** *** 68,75 **** --- 68,81 ---- @SELECT = (); # array of selector widgits + $ADD_BUTTON = ""; + $DELETE_BUTTON = ""; + $UPDATE_BUTTON = ""; + $CLEAR_BUTTON = ""; + @LANG = (); # preferred languages $COL_VALUE[$_] = "" foreach (0..$#COL); + #Date_Init( "Debug=trace"); # # Step 1, Parse Parameters ------------------------------------------------------- *************** *** 123,137 **** { my $menubar = $TOP->Menu(-type => 'menubar'); $TOP->configure(-menu => $menubar ); my $f = $menubar->cascade(-label => '~File', -tearoff => 0); ! $f->command(-label => 'Open Listings ...', -command => sub { ! my $file = $TOP->getOpenFile(-filetypes => [["XML Files",".xml"]], ! -title => 'Open Listing File' ); ! load_guide($file) if ($file); ! }); ! $f->command(-label => 'Open Shows ...', -command => sub { return if changed_check(); --- 129,152 ---- { my $menubar = $TOP->Menu(-type => 'menubar'); + + $TOP->OnDestroy( sub{ + return if changed_check(1); + $TOP -> destroy(); + } + ); + $TOP->configure(-menu => $menubar ); my $f = $menubar->cascade(-label => '~File', -tearoff => 0); ! $f->command(-label => 'New', ! -underline => 0, -command => sub { ! $SHOW_XML=''; ! @SHOWS=(); ! load_show_table(); ! }); ! $f->command(-label => 'Open...', ! -underline => 0, -command => sub { return if changed_check(); *************** *** 141,155 **** }); - $f->command(-label => 'New Shows', - -command => sub { - $SHOW_XML=''; - @SHOWS=(); - load_show_table(); - }); ! $f->command(-label => 'Save Shows', -command => \&Save_shows ); ! $f->command(-label => 'Save Shows As ...', -command => sub { my $file = $TOP->getSaveFile( -filetypes => [["XML Files",".xml"]], --- 156,166 ---- }); ! $f->command(-label => 'Save', ! -underline => 0, -command => \&Save_shows ); ! $f->command(-label => 'save As...', ! -underline => 5, -command => sub { my $file = $TOP->getSaveFile( -filetypes => [["XML Files",".xml"]], *************** *** 158,166 **** --- 169,195 ---- }); + $f->command(-label => 'Listings...', + -underline => 0, + -command => sub { + my $file = $TOP->getOpenFile(-filetypes => [["XML Files",".xml"]], + -title => 'Open Listing File' ); + load_guide($file) if ($file); + }); + + + $f->command(-label => 'eXit', + -underline => 1, + -command => sub { + return if changed_check(); + $TOP -> destroy(); + }); + my $h = $menubar->cascade(-label => '~Help', -tearoff => 0); $h->command(-label => 'Help', + -underline => 0, -command => \&help_popup ); $h->command(-label => 'About', + -underline => 0, -command => \&help_about ); *************** *** 172,183 **** $SHOW_TABLE = $TOP->Scrolled('TableMatrix', -cols => ($#COL+1), ! -rows => (@SHOWS ? $#SHOWS+1 : 10 ), -height => 10, ! -titlerows => 1, ! -variable => \%SHOW_DATA, ! -roworigin => 0, -colorigin => 0, ! -colstretchmode => 'all', ! -selecttype => 'row', ! -sparsearray => 1, -state => 'disabled', -anchor => 'w', --- 201,212 ---- $SHOW_TABLE = $TOP->Scrolled('TableMatrix', -cols => ($#COL+1), ! -rows => ($#SHOWS > 8 ? $#SHOWS+2 : 10 ), -height => 10, ! -titlerows => 1, ! -variable => \%SHOW_DATA, ! -roworigin => 0, -colorigin => 0, ! -colstretchmode => 'all', ! -selecttype => 'row', ! -sparsearray => 1, -state => 'disabled', -anchor => 'w', *************** *** 192,209 **** $w->selectionClear('all'); if ($row) { $SHOW_ROW=$row; $w->selectionSet("$row,0","$row,".($#COL+1)); for $col (0..$#COL) # load selection pane { $COL_VALUE[$col] = $SHOW_DATA{"$row,$col"}; - if ($COL_TYPE[$col]== 1 || - $COL_TYPE[$col]== 2 ) - { - my $dst = $SELECT[$col]{entry}; - $dst -> delete(0,'end'); - $dst -> insert(0,$SHOW_DATA{"$row,$col"}); - } } } --- 221,238 ---- $w->selectionClear('all'); + $SHOW_ROW=0; + $UPDATE_BUTTON -> configure ( -state => "disabled" ); + $DELETE_BUTTON -> configure ( -state => "disabled" ); + if ($row) { + return unless $SHOW_DATA{"$row,4"}; # title must exist $SHOW_ROW=$row; + $UPDATE_BUTTON -> configure ( -state => "normal" ); + $DELETE_BUTTON -> configure ( -state => "normal" ); $w->selectionSet("$row,0","$row,".($#COL+1)); for $col (0..$#COL) # load selection pane { $COL_VALUE[$col] = $SHOW_DATA{"$row,$col"}; } } *************** *** 221,244 **** { my $frame=$selframe->Frame()->pack( -side => 'left' ); ! $frame->Button( -text => "Clear", -command => sub{ for $col (0..$#COL) { $COL_VALUE[$col]=""; - $SELECT[$col]{entry}->delete(0,'end') if $COL_TYPE[$col]==1; - $SELECT[$col]{entry}->delete(0,'end') if $COL_TYPE[$col]==2; } load_selection_items(); }) -> pack(-fill => 'x'); $frame->Button( -text => "Add", -command => sub{ my $row = $#SHOWS+1; for $col (0..$#COL) { my $val=""; ! $val=$SELECT[$col]{entry}->get if $COL_TYPE[$col]==1; ! $val=$SELECT[$col]{entry}->get if $COL_TYPE[$col]==2; ! $val=$COL_VALUE[$col] if $COL_TYPE[$col]==3; $SHOWS[$row]{$COL[$col]}=$val; } --- 250,279 ---- { my $frame=$selframe->Frame()->pack( -side => 'left' ); ! $CLEAR_BUTTON = ! $frame->Button( -text => "Clear", -command => sub{ + $SHOW_ROW=0; + $UPDATE_BUTTON -> configure ( -state => "disabled" ); + $DELETE_BUTTON -> configure ( -state => "disabled" ); for $col (0..$#COL) { $COL_VALUE[$col]=""; } load_selection_items(); }) -> pack(-fill => 'x'); + $ADD_BUTTON = $frame->Button( -text => "Add", -command => sub{ + $SHOW_ROW=0; + $UPDATE_BUTTON -> configure ( -state => "disabled" ); + $DELETE_BUTTON -> configure ( -state => "disabled" ); + return unless $COL_VALUE[4]; my $row = $#SHOWS+1; for $col (0..$#COL) { my $val=""; ! $val=$COL_VALUE[$col]; ! $val=~ s/^\s+|\s+$//g if $val; $SHOWS[$row]{$COL[$col]}=$val; } *************** *** 246,258 **** $SHOW_CHANGED=1; }) -> pack(-fill => 'x'); $frame->Button( -text => "Update", ! -command => sub{ return unless $SHOW_ROW; for $col (0..$#COL) { my $val=""; ! $val=$SELECT[$col]{entry}->get if $COL_TYPE[$col]==1; ! $val=$SELECT[$col]{entry}->get if $COL_TYPE[$col]==2; ! $val=$COL_VALUE[$col] if $COL_TYPE[$col]==3; $SHOW_DATA[$SHOW_ROW]{$COL[$col]}=$val; } --- 281,295 ---- $SHOW_CHANGED=1; }) -> pack(-fill => 'x'); + $UPDATE_BUTTON = $frame->Button( -text => "Update", ! -state => "disabled", ! -command => sub{ return unless $SHOW_ROW; + return unless $COL_VALUE[4]; for $col (0..$#COL) { my $val=""; ! $val=$COL_VALUE[$col]; ! $val=~ s/^\s+|\s+$//g if $val; $SHOW_DATA[$SHOW_ROW]{$COL[$col]}=$val; } *************** *** 261,266 **** }) -> pack(-fill => 'x'); $frame->Button( -text => "Delete", ! -command => sub{ return unless $SHOW_ROW; $SHOW_DATA[$SHOW_ROW]{title}=undef; --- 298,305 ---- }) -> pack(-fill => 'x'); + $DELETE_BUTTON = $frame->Button( -text => "Delete", ! -state => "disabled", ! -command => sub{ return unless $SHOW_ROW; $SHOW_DATA[$SHOW_ROW]{title}=undef; *************** *** 269,277 **** }) -> pack(-fill => 'x'); ! $frame->Button( -text => "Exit", ! -command => sub{ ! return if changed_check(); ! $TOP -> destroy(); ! }) -> pack(-fill => 'x' ); } # control buttons --- 308,316 ---- }) -> pack(-fill => 'x'); ! # $frame->Button( -text => "Exit", ! # -command => sub{ ! # return if changed_check(); ! # $TOP -> destroy(); ! # }) -> pack(-fill => 'x' ); } # control buttons *************** *** 285,289 **** my $frame =$selframe->Frame()->pack( -side => 'left' ); my $label =$frame->Label(-text => $COL[$col])->pack(); ! my $entry =$frame->Entry()->pack(); my $list =$frame->Scrolled('Listbox', -setgrid => 1, --- 324,328 ---- my $frame =$selframe->Frame()->pack( -side => 'left' ); my $label =$frame->Label(-text => $COL[$col])->pack(); ! my $entry =$frame->Entry(-textvariable => \$COL_VALUE[$col])->pack(); my $list =$frame->Scrolled('Listbox', -setgrid => 1, *************** *** 292,301 **** -scrollbars => 'w'); $list -> {SubWidget} -> {scrolled} -> privateData('Entry') -> {Entry} = $entry; $list -> pack(qw/-side left -expand yes -fill both/); $list -> bind('<ButtonRelease 1>' => sub { my $w = shift; ! my $entry = $w-> privateData('Entry') -> {Entry}; ! $entry -> delete(0,'end'); ! $entry -> insert(0,$w->get('active')); load_selection_items(); }, --- 331,343 ---- -scrollbars => 'w'); $list -> {SubWidget} -> {scrolled} -> privateData('Entry') -> {Entry} = $entry; + $list -> {SubWidget} -> {scrolled} -> privateData('Entry') -> {Col} = $col; $list -> pack(qw/-side left -expand yes -fill both/); $list -> bind('<ButtonRelease 1>' => sub { my $w = shift; ! my $entry = $w->privateData('Entry') -> {Entry}; ! my $col = $w->privateData('Entry') -> {Col}; ! my $val = $w->get('active'); ! print "Storing ($val) into $col\n"; ! $COL_VALUE[$col]=$val; load_selection_items(); }, *************** *** 319,323 **** my $frame = $selframe2; my $label =$frame->Label(-text => $COL[$col])->pack(); ! my $entry =$frame->Entry()->pack(); $frame->Label(-text => " ")->pack(); --- 361,365 ---- my $frame = $selframe2; my $label =$frame->Label(-text => $COL[$col])->pack(); ! my $entry =$frame->Entry(-textvariable => \$COL_VALUE[$col])->pack(); $frame->Label(-text => " ")->pack(); *************** *** 690,700 **** } $SHOW_ROW=0; $SHOW_WIDTH{$_} += 3 foreach keys %SHOW_WIDTH; if ($SHOW_TABLE) { ! $SHOW_TABLE -> configure (-rows => $row+1 ); $SHOW_TABLE -> clearCache if $SHOW_TABLE; $SHOW_TABLE -> selectionClear('all'); $TOP->title("tvcheck config -".( $SHOW_XML || '(untitled)' )); } } # load_show_table --- 732,745 ---- } $SHOW_ROW=0; + $SHOW_WIDTH{$_} += 3 foreach keys %SHOW_WIDTH; if ($SHOW_TABLE) { ! $SHOW_TABLE -> configure (-rows => ($#SHOWS > 8 ? $#SHOWS+2 : 10 )); $SHOW_TABLE -> clearCache if $SHOW_TABLE; $SHOW_TABLE -> selectionClear('all'); $TOP->title("tvcheck config -".( $SHOW_XML || '(untitled)' )); + $UPDATE_BUTTON -> configure ( -state => "normal" ); + $DELETE_BUTTON -> configure ( -state => "normal" ); } } # load_show_table *************** *** 718,727 **** $SELECT[1]{list} -> insert(0,"",@CHAN); - my $day = $SELECT[0]{entry}->get; - my $chan = $SELECT[1]{entry}->get; - my $title = $SELECT[4]{entry}->get; my $match = undef; # # load Title list ( also fill hhmm and day if known ) --- 763,776 ---- $SELECT[1]{list} -> insert(0,"",@CHAN); + my $day = $COL_VALUE[0]; + my $chan = $COL_VALUE[1]; + my $title = $COL_VALUE[4]; my $match = undef; + $day =~ s/^\s+|\s+$//g; + $chan =~ s/^\s+|\s+$//g; + $title =~ s/^\s+|\s+$//g; + # # load Title list ( also fill hhmm and day if known ) *************** *** 754,768 **** if ($match) { ! $SELECT[0]{entry}->delete(0,'end'); ! $SELECT[0]{entry}->insert(0,$match->[0]->[0]); ! ! $SELECT[1]{entry}->delete(0,'end'); ! $SELECT[1]{entry}->insert(0,$match->[0]->[1]); ! ! $SELECT[2]{entry}->delete(0,'end'); ! $SELECT[2]{entry}->insert(0,$match->[0]->[2]); ! ! $SELECT[3]{entry}->delete(0,'end'); ! $SELECT[3]{entry}->insert(0,$match->[0]->[3]); } --- 803,810 ---- if ($match) { ! $COL_VALUE[0] = $match->[0]->[0]; ! $COL_VALUE[1] = $match->[0]->[1]; ! $COL_VALUE[2] = $match->[0]->[2]; ! $COL_VALUE[3] = $match->[0]->[3]; } *************** *** 837,845 **** $SHOW_XML = $file; ! print "Loading xml show info ($SHOW_XML)\n"; my $xml = XMLin($SHOW_XML, searchpath => ".", forcearray => 1 ); ! @SHOWS=@{$xml->{shows}}; ! @LANG= @{$xml->{lang}} if exists $xml->{lang}; # # fix numeric weekday in old shows file --- 879,888 ---- $SHOW_XML = $file; ! print "Loading xml show info ($SHOW_XML) "; my $xml = XMLin($SHOW_XML, searchpath => ".", forcearray => 1 ); ! @SHOWS=@{$xml->{shows}} if exists $xml->{shows}; ! @LANG= @{$xml->{lang}} if exists $xml->{lang}; + printf "(%d/%d)\n",$#SHOWS+1,$#LANG+1; # # fix numeric weekday in old shows file *************** *** 911,917 **** foreach $ep (@GUIDE) { ! print "." unless $c++ % 1000; my $title = get_text($ep->{title}); my $chan = $ep->{channel} || "" ; $ep->{displayed}=""; --- 954,962 ---- foreach $ep (@GUIDE) { ! print "." unless $c++ % 1000; my $title = get_text($ep->{title}); my $chan = $ep->{channel} || "" ; + + $ep->{start} =~ s/://g; $ep->{displayed}=""; *************** *** 933,937 **** { $GUIDE{$chan}{$2}{$3}=$ep; # index by chan, date, time - #print "GUIDE{$chan}{$2}{$3}\n"; } } --- 978,981 ---- *************** *** 965,969 **** { delete $show -> {$item} unless $show->{$item}; - # delete $show -> {$item} if $show->{$item} eq ''; } push @newshow,$show; --- 1009,1012 ---- *************** *** 989,996 **** sub changed_check { if ($SHOW_CHANGED) { my $button = $TOP->messageBox( -icon => 'warning', ! -type => 'YesNoCancel', -title => 'File Change Warning', -message => "Show data changed. Do you want to save?"); --- 1032,1040 ---- sub changed_check { + my $nocan = shift || 0; if ($SHOW_CHANGED) { my $button = $TOP->messageBox( -icon => 'warning', ! -type => ( $nocan ? 'YesNo' : 'YesNoCancel'), -title => 'File Change Warning', -message => "Show data changed. Do you want to save?"); *************** *** 1007,1012 **** my $date1= ParseDate($ep->{start}); ! my $date2= ParseDate($ep->{stop}); ! my ($hhmm, $day, $mmdd ) = UnixDate( $date1,"%H%M","%a","%m%d"); my $len = Delta_Format( DateCalc( $date1, $date2), 0,"%mh"); --- 1051,1057 ---- my $date1= ParseDate($ep->{start}); ! my $date2; ! $date2 = ParseDate($ep->{stop}) if $ep -> {stop}; ! $date2 = $date1 unless $date2; my ($hhmm, $day, $mmdd ) = UnixDate( $date1,"%H%M","%a","%m%d"); my $len = Delta_Format( DateCalc( $date1, $date2), 0,"%mh"); |
From: Robert E. <rm...@us...> - 2002-01-16 05:50:34
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv25514/xmltv Modified Files: tvcheck Log Message: replace --guide paramter with --listings to match getlistings_na avoid warning when no prefered language is given Index: tvcheck =================================================================== RCS file: /cvsroot/xmltv/xmltv/tvcheck,v retrieving revision 2.3 retrieving revision 2.4 diff -C2 -d -r2.3 -r2.4 *** tvcheck 2002/01/11 07:05:57 2.3 --- tvcheck 2002/01/16 05:50:31 2.4 *************** *** 82,86 **** scan => \$scan, 'shows=s' => \$SHOW_XML, ! 'guide=s' => \$GUIDE_XML)) { print " tvcheck v \$Revision\$\n\n"; --- 82,86 ---- scan => \$scan, 'shows=s' => \$SHOW_XML, ! 'guide|listings=s' => \$GUIDE_XML)) { print " tvcheck v \$Revision\$\n\n"; *************** *** 91,95 **** print " xml files with show info (default shows.xml )\n"; print "\n"; ! print " --guide <file>\n"; print " xml files with guide info (default guide.xml )\n"; print "\n"; --- 91,95 ---- print " xml files with show info (default shows.xml )\n"; print "\n"; ! print " --listings <file>\n"; print " xml files with guide info (default guide.xml )\n"; print "\n"; *************** *** 126,133 **** my $f = $menubar->cascade(-label => '~File', -tearoff => 0); ! $f->command(-label => 'Open Guide ...', -command => sub { my $file = $TOP->getOpenFile(-filetypes => [["XML Files",".xml"]], ! -title => 'Open Guide File' ); load_guide($file) if ($file); }); --- 126,133 ---- my $f = $menubar->cascade(-label => '~File', -tearoff => 0); ! $f->command(-label => 'Open Listings ...', -command => sub { my $file = $TOP->getOpenFile(-filetypes => [["XML Files",".xml"]], ! -title => 'Open Listing File' ); load_guide($file) if ($file); }); *************** *** 138,142 **** my $file = $TOP->getOpenFile(-filetypes => [["XML Files",".xml"]], -title => 'Open Show File'); ! load_guide($file) if ($file); }); --- 138,142 ---- my $file = $TOP->getOpenFile(-filetypes => [["XML Files",".xml"]], -title => 'Open Show File'); ! load_shows($file) if ($file); }); *************** *** 412,416 **** { my $show = $SHOW_TIME{$start}{$chan}; ! # # See what episode is on at that time --- 412,416 ---- { my $show = $SHOW_TIME{$start}{$chan}; ! next unless $show->{title}; # # See what episode is on at that time *************** *** 840,844 **** my $xml = XMLin($SHOW_XML, searchpath => ".", forcearray => 1 ); @SHOWS=@{$xml->{shows}}; ! @LANG= @{$xml->{lang}}; # --- 840,844 ---- my $xml = XMLin($SHOW_XML, searchpath => ".", forcearray => 1 ); @SHOWS=@{$xml->{shows}}; ! @LANG= @{$xml->{lang}} if exists $xml->{lang}; # |
From: Jerry V. <jve...@us...> - 2002-01-14 14:16:44
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv11990 Modified Files: getlistings_na Log Message: changed prompts for add/drop channels to have 'all' option. Index: getlistings_na =================================================================== RCS file: /cvsroot/xmltv/xmltv/getlistings_na,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** getlistings_na 2002/01/02 22:10:48 1.33 --- getlistings_na 2002/01/14 14:16:41 1.34 *************** *** 385,389 **** } - # First lets check to see if someone asked for help. # this is easier to do here than later. --- 385,388 ---- *************** *** 404,426 **** } ! sub askyesorno($$) { ! my ($def, $question)=@_; while ( 1 ) { ! my $res=ask("$question [$def] "); if ( !defined($res) || $res eq "" ) { ! return($def); ! } ! $res=~tr/[A-Z]/[a-z]/; ! if ( $res eq "yes" ) { ! return("yes"); ! } ! elsif ( $res eq "no" ) { ! return("no"); } ! else { ! print STDERR "invalid response, please use yes or no\n"; ! print STDERR "\n"; } } } --- 403,426 ---- } ! sub askquestion { ! my $question=shift(@_); ! my $default=shift(@_); ! my @options=@_; ! ! my $str="$question [".join(',',@options)." (default=$default)] "; ! while ( 1 ) { ! my $res=ask($str); if ( !defined($res) || $res eq "" ) { ! return($default); } ! for my $val (@options) { ! if ( $val=~m/$res/i ) { ! return($val); ! } } + print STDERR "invalid response, please choose one of ".join(',', @options)."\n"; + print STDERR "\n"; } } *************** *** 579,582 **** --- 579,583 ---- my $channelsUpdated=0; + my $easyAnswer; # notify user about update channel ids and new channels *************** *** 588,593 **** } else { ! my $res=askyesorno('yes', "add channel $station ?"); ! $res=~tr/[A-Z]/[a-z]/; $config->setStationIncluded($station, ($res eq 'yes')); $config->setStationTransientFlag($station, 'found', 1); --- 589,607 ---- } else { ! my $res; ! if ( $easyAnswer ) { ! $res=$easyAnswer; ! if ( $res eq 'yes' ) { ! print "adding channel $station..\n"; ! } ! } ! else { ! $res=askquestion("add channel $station ?", 'yes', ('yes', 'no', 'all')); ! $res=~tr/[A-Z]/[a-z]/; ! if ( $res eq 'all' ) { ! $easyAnswer='yes'; ! $res=$easyAnswer; ! } ! } $config->setStationIncluded($station, ($res eq 'yes')); $config->setStationTransientFlag($station, 'found', 1); *************** *** 597,602 **** } else { ! my $res=askyesorno('yes', "add channel $station ?"); ! $res=~tr/[A-Z]/[a-z]/; $config->setStationIncluded($station, ($res eq 'yes')); $config->setStationTransientFlag($station, 'found', 1); --- 611,629 ---- } else { ! my $res; ! if ( $easyAnswer ) { ! $res=$easyAnswer; ! if ( $res eq 'yes' ) { ! print "adding channel $station..\n"; ! } ! } ! else { ! $res=askquestion("add channel $station ?", 'yes', ('yes', 'no', 'all')); ! $res=~tr/[A-Z]/[a-z]/; ! if ( $res eq 'all' ) { ! $easyAnswer='yes'; ! $res=$easyAnswer; ! } ! } $config->setStationIncluded($station, ($res eq 'yes')); $config->setStationTransientFlag($station, 'found', 1); *************** *** 606,609 **** --- 633,637 ---- } + undef($easyAnswer); # warn about channel declarations we didn't find foreach my $station ($config->stationsInDisplayOrder()) { *************** *** 612,617 **** } else { ! my $res=askyesorno('yes', "drop no-longer available channel $station ?"); ! $res=~tr/[A-Z]/[a-z]/; if ( $res eq 'yes' ) { #print STDERR "warning: didn't find channel id: $station \#". --- 640,658 ---- } else { ! my $res; ! if ( $easyAnswer ) { ! $res=$easyAnswer; ! if ( $res eq 'yes' ) { ! print "dropping channel $station..\n"; ! } ! } ! else { ! $res=askquestion("drop no-longer available channel $station ?", 'yes', ('yes', 'no', 'all')); ! $res=~tr/[A-Z]/[a-z]/; ! if ( $res eq 'all' ) { ! $easyAnswer='yes'; ! $res=$easyAnswer; ! } ! } if ( $res eq 'yes' ) { #print STDERR "warning: didn't find channel id: $station \#". |
From: Ed A. <ep...@us...> - 2002-01-11 14:59:18
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv31685 Modified Files: README Log Message: Updated for 0.4.2. Index: README =================================================================== RCS file: /cvsroot/xmltv/xmltv/README,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** README 2002/01/01 19:49:51 1.24 --- README 2002/01/11 14:59:15 1.25 *************** *** 1,3 **** ! XMLTV 0.4.1 Suite of programs for processing TV listings and organizing your --- 1,3 ---- ! XMLTV 0.4.2 Suite of programs for processing TV listings and organizing your *************** *** 10,26 **** programme isn't in its usual timeslot. ! This release fixes some 'stop time' related problems in getlistings_na, ! new version of tvcheck and support for 'gratis' channels in ! getlistings_uk_ananova. Getlistings_na changed its configuration file ! format ($HOME/.xmltv_na typically), but older versions remain upward ! compatible with a warning about re-running --configure. For documentation, see the web page at ! <http://www.doc.ic.ac.uk/~epa98/work/apps/xmltv/>. This is free software distributed under the GPL, see COPYING. But if you would like to use the code under some other conditions, please do ! ask. Most of the code is by Ed Avis, Jerry Veldhuis and Gottfried Szing. ! -- Ed Avis, ep...@do..., 2001-12-28 $Id$ --- 10,24 ---- programme isn't in its usual timeslot. ! This version is 0.4.2. It has bugfixes (pick_cgi works again) and a ! new version of tvcheck with a GUI to choose the programmes you want. For documentation, see the web page at ! <http://www.doc.ic.ac.uk/~epa98/work/apps/xmltv/> and the other README ! files. This is free software distributed under the GPL, see COPYING. But if you would like to use the code under some other conditions, please do ! ask. Contributors include Gottfried Szing, Jerry Veldhuis and Robert Eden. ! -- Ed Avis, ep...@do..., 2002-01-11 $Id$ |
From: Robert E. <rm...@us...> - 2002-01-11 07:06:00
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv14703/xmltv Modified Files: tvcheck Log Message: remove debug message... oops Index: tvcheck =================================================================== RCS file: /cvsroot/xmltv/xmltv/tvcheck,v retrieving revision 2.2 retrieving revision 2.3 diff -C2 -d -r2.2 -r2.3 *** tvcheck 2002/01/11 05:36:02 2.2 --- tvcheck 2002/01/11 07:05:57 2.3 *************** *** 211,215 **** { $SHOW_SORT = ($SHOW_SORT == $col ? -$col : $col); - print "Show sort $SHOW_SORT\n"; load_show_table(); } --- 211,214 ---- |
From: Robert E. <rm...@us...> - 2002-01-11 05:37:16
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv2120/xmltv Modified Files: Tag: 2.1 README.tvcheck Log Message: update readme to match current tvcheck version --- NEW FILE: README.tvcheck --- $Id: README.tvcheck,v 2.1 2002/01/11 05:37:13 rmeden Exp $ This file describes the tvcheck module of XMLTV. TVCHECK is a Perl script that reads in a file with show information and checks it against a TV guide listing, alerting you to unexpected episodes or schedule changes. Questions/Comments/Suggestions/Thanks are, of course welcome. XMLTV - users xml...@li.... XMLTV - developers xml...@li... tvcheck author rm...@cp... How to use the script. ---------------------- The default show file name is shows.xml The default guide file name is guide.xml 1. Step one, download guide information. (for example, getlistings_na or getlistings_uk) 2. use tvcheck to create a "show file" tvcheck --configure --guide=your_guide_file.xml Pick some shows to track, Click Add to add to the list. Select File, Save-as, to save your output exit tvcheck 3. use tvcheck to scan the guide tvcheck --scan --guide=your_guide_file.xml --shows=my_show_file.xml Sample shows.xml file ======================= <tvcheck> <lang>en_US</lang> <shows day="Sun" channel="10402" hhmm="2000" len="60" title="The X-Files" /> <shows day="Mon" channel="10402" hhmm="1900" len="30" title="That '70s Show" dayonly="1" /> </tvcheck> Parameters ==================== lang : preferred language. Optional, can have multiple, in order of preferences shows : list of shows you're interested in Show attributes: ==================== day : day of the week and Sun,Mon,Tue,Wed,Thu,Fri,Sat channel: channelID used by the guide title : *EXACT* title of show. hhmm : start time of show (hhmm) len : expected length of show in minutes ( this may become optional ) Optional attributes: ==================== chanonly: if 1, episode scan ignores shows onother channels dayonly : if 1, episode scan ignores shows on other days timeonly: if 1, episode scan ignores shows at other times neartime: if 1, episode scan only reports shows within a 3 hour window Output notes ============ "No Guide Info" means no guide information was found for that channel at that time. something may be wrong with the channel ID,listing fetch, or the guide file is just old. Notes: ---------------------- I'm planning on adding a recording conflict checker. ( yes it will support multiple recording devices and the fuzzy logic of a ReplayTV ) The XML is a memory hog. I have a 2MB guide file and TVCHECK needs about 110MB of working set to run. The guide takes 40 seconds to load. Indexing takes 20 seconds for a --scan, but 100 seconds for a configure ( configure does lots of date calcs when indexing ). |
From: Robert E. <rm...@us...> - 2002-01-11 05:36:05
|
Update of /cvsroot/xmltv/xmltv In directory usw-pr-cvs1:/tmp/cvs-serv1995/xmltv Modified Files: tvcheck Log Message: fix the revision number in the options list Index: tvcheck =================================================================== RCS file: /cvsroot/xmltv/xmltv/tvcheck,v retrieving revision 2.1 retrieving revision 2.2 diff -C2 -d -r2.1 -r2.2 *** tvcheck 2002/01/11 05:20:56 2.1 --- tvcheck 2002/01/11 05:36:02 2.2 *************** *** 84,88 **** 'guide=s' => \$GUIDE_XML)) { ! print " tvcheck v \$revision$\n\n"; print " part of the xmltv toolkit ( http://xmltv.sourceforge.net )\n\n"; print "usage $0 (--configure|--scan) [--options] \n"; --- 84,88 ---- 'guide=s' => \$GUIDE_XML)) { ! print " tvcheck v \$Revision\$\n\n"; print " part of the xmltv toolkit ( http://xmltv.sourceforge.net )\n\n"; print "usage $0 (--configure|--scan) [--options] \n"; |