xmltv2html 0.7.1 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/ChangeLog +8 -0
  2. data/bin/xmltv2html.rb +80 -6
  3. data/xmltv2htmlrc +7 -0
  4. metadata +2 -2
data/ChangeLog CHANGED
@@ -1,4 +1,12 @@
1
1
  ------------------------------------------------------------------------
2
+ r192 | kvh | 2006-02-25 17:57:39 -0500 (Sat, 25 Feb 2006) | 1 line
3
+ Changed paths:
4
+ M /trunk/bin/xmltv2html.rb
5
+ M /trunk/xmltv2html.gemspec
6
+ M /trunk/xmltv2htmlrc
7
+
8
+ The programs' description can be search for any given string, such as actors names. The favorites' list is now case insensitive.
9
+ ------------------------------------------------------------------------
2
10
  r191 | kvh | 2006-02-19 17:01:20 -0500 (Sun, 19 Feb 2006) | 1 line
3
11
  Changed paths:
4
12
  M /trunk/bin/xmltv2html.rb
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # xmltv2html.rb - A Ruby script to transform the XMLTV output into HTML.
6
6
  #
7
- # Version : 0.7.1
7
+ # Version : 0.8.0
8
8
  # Author : Kurt V. Hindenburg <public@kurt.hindenburg.name>
9
9
  #
10
10
  # Copyright (C) 2003, 2004, 2005 Kurt V. Hindenburg
@@ -75,8 +75,8 @@ require 'time'
75
75
  require 'set'
76
76
  require 'ostruct'
77
77
 
78
- XMLTV2HTML_VERSION="0.7.1"
79
- XMLTV2HTML_DATE="Feb 20, 2006"
78
+ XMLTV2HTML_VERSION="0.8.0"
79
+ XMLTV2HTML_DATE="Feb 26, 2006"
80
80
 
81
81
  class Time
82
82
  class << self
@@ -121,8 +121,16 @@ module XMLTV2HTML
121
121
  read_conf if @@options[:use_config_file]
122
122
  parse_command_line_options
123
123
 
124
+ # Downcase description search list for ease
125
+ @@options[:desc_search_list].each { |l|
126
+ l.downcase!
127
+ }
128
+ @@options[:favorites_list].each { |l|
129
+ l.downcase!
130
+ }
124
131
  # convert favorites_list to Set for faster lookup
125
132
  @@options[:favorites] = Set.new @@options[:favorites_list]
133
+
126
134
  end
127
135
 
128
136
  # Don't edit these, use an external xmltv2htmlrc file.
@@ -136,6 +144,8 @@ module XMLTV2HTML
136
144
  :output_favorites => false,
137
145
  :favorites_list => [],
138
146
  :favorites_sort_by_date => true,
147
+ :desc_search_list => [],
148
+ :desc_search_sort_by_date => true,
139
149
  :css_filename => 'xmltv2html.css',
140
150
  :categories => {},
141
151
  :output_date_in_time => false,
@@ -614,6 +624,7 @@ class XmlTV
614
624
  attr_reader :HTML_title # Title of HTML page
615
625
  attr_reader :top_title # Title of HTML page
616
626
  attr_accessor(:firstShowStartDate, :lastShowStartDate, :lastShowStopDate)
627
+ attr_reader :desc_match_list
617
628
 
618
629
  def initialize
619
630
  @firstShowStartDate = "99999999999999"
@@ -831,6 +842,24 @@ class XmlTV
831
842
  }
832
843
  }
833
844
  end
845
+
846
+ def searchProgrammesDesc
847
+ @desc_match_list = []
848
+
849
+ channels = Channels.instance
850
+
851
+ channels.each { |id, c|
852
+ programmes = c.programmes
853
+
854
+ programmes.each { | id, p|
855
+ p.each { |programme|
856
+ @@options[:desc_search_list].each { |s|
857
+ @desc_match_list << programme if programme.desc.downcase.include?(s)
858
+ }
859
+ }
860
+ }
861
+ }
862
+ end
834
863
 
835
864
  end
836
865
 
@@ -868,6 +897,8 @@ class XMLTV2HTML2
868
897
 
869
898
  @xml.setTitle(@dates)
870
899
 
900
+ @xml.searchProgrammesDesc
901
+
871
902
  end
872
903
 
873
904
  def generatePopups
@@ -923,8 +954,7 @@ class XMLTV2HTML2
923
954
  end
924
955
 
925
956
  @out.outputProgramme(prog, sindex, span)
926
- if @@options[:use_favorites] and @@options[:output_favorites] and @@options[:favorites].include?(prog.title)
927
- #$stderr.print "found a fav #{prog.title}\n"
957
+ if @@options[:use_favorites] and @@options[:output_favorites] and @@options[:favorites].include?(prog.title.downcase)
928
958
  favorites_list << prog
929
959
  end
930
960
  when "Q" # Use previous Programme's info
@@ -954,6 +984,8 @@ class XMLTV2HTML2
954
984
 
955
985
  @out.output_favorites_list(favorites_list) if not favorites_list.empty?
956
986
 
987
+ @out.output_desc_matches(@xml.desc_match_list) if not @xml.desc_match_list.empty?
988
+
957
989
  @out.text_after_table
958
990
  @out.footer
959
991
  end
@@ -1212,7 +1244,7 @@ class Html
1212
1244
  end
1213
1245
 
1214
1246
  # Favorites override category.
1215
- if @@options[:use_favorites] and @@options[:favorites].include?(s.title)
1247
+ if @@options[:use_favorites] and @@options[:favorites].include?(s.title.downcase)
1216
1248
  print 'favorite">'
1217
1249
  elsif s.category
1218
1250
  print s.category,'">'
@@ -1284,6 +1316,48 @@ class Html
1284
1316
  print '</table>'; nl
1285
1317
  end
1286
1318
 
1319
+ def output_desc_matches(list)
1320
+ if @@options[:desc_search_sort_by_date]
1321
+ list = list.sort! { |a, b| a.startTime<=>b.startTime }
1322
+ else
1323
+ list = list.sort! { |a, b| a.title<=>b.title }
1324
+ end
1325
+
1326
+ print '<br><br>'; nl
1327
+ print '<table width="100%" border="3" cellpadding="3">'; nl
1328
+ print '<tr><td colspan="4" align="center">Description Search Matches</td></tr>'; nl
1329
+ print '<tr><td width="15%" align="center" nowrap>Channel</td>';
1330
+ print '<td width="45%" align="center" nowrap>Title</td>';
1331
+ print '<td width="20%" align="center">Start</td>';
1332
+ print '<td width="20%" align="center">Stop</td>';
1333
+ print '</tr>'; nl
1334
+
1335
+ channels = Channels.instance
1336
+
1337
+ list.each { |p|
1338
+ print '<tr>'; nl
1339
+
1340
+ print '<td class="channel">'; nl
1341
+ print channels[p.channelid].fullname
1342
+ print '</td>'; nl
1343
+
1344
+ outputProgramme(p, p.popupIndex, 1)
1345
+
1346
+ print '<td align="center">'; nl
1347
+ print p.startTime.strftime("%a %b %d %I:%M %p")
1348
+ print '</td>'; nl
1349
+
1350
+ print '<td align="center">'; nl
1351
+ print p.stopTime.strftime("%a %b %d %I:%M %p")
1352
+ print '</td>'; nl
1353
+
1354
+ print '</tr>'; nl
1355
+ }
1356
+
1357
+ print '</table>'; nl
1358
+
1359
+ end
1360
+
1287
1361
  def outputInfo
1288
1362
  print '<br>'
1289
1363
  print '<span class="info">'
@@ -31,6 +31,13 @@
31
31
  # If true, sort favorite list by programme's start time (else by title)
32
32
  #:favorites_sort_by_date: true
33
33
 
34
+ # List of strings to serach each program's description for.
35
+ #:desc_search_list: []
36
+ #Example :desc_search_list: [ "jessica alba", "Scarlett Johansson" ]
37
+
38
+ # If true, sort desc matches by programme's start time (else by title)
39
+ #:desc_search_sort_by_date: true
40
+
34
41
  # Name of CSS file
35
42
  #:css_filename: 'xmltv2html.css'
36
43
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: xmltv2html
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.7.1
7
- date: 2006-02-19 00:00:00 -05:00
6
+ version: 0.8.0
7
+ date: 2006-02-25 00:00:00 -05:00
8
8
  summary: xmltv2html generates a HTML page from the output of XMLTV.
9
9
  require_paths:
10
10
  - lib