etvnet_seek 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -15,4 +15,8 @@
15
15
 
16
16
  == Version 0.4.0
17
17
 
18
+ * Bug fixes, adding support for main menu
19
+
20
+ == Version 0.5.0
21
+
18
22
  * Bug fixes, adding support for main menu
data/README CHANGED
@@ -8,4 +8,12 @@
8
8
 
9
9
  == Usage
10
10
 
11
- etvnet_seek movie_title
11
+ Usage: etvnet_seek [options] keywords
12
+ -s, --search Display Search Menu
13
+ -r, --runglish Enter russian keywords in translit
14
+ -b, --best-ten Display Best 10 Menu
15
+ -p, --popular Display Popular Menu
16
+ -w, --we-recommend Display We recommend Menu
17
+ -c, --channels Display Channels Menu
18
+ -m, --main Display Main Menu
19
+ -h, --help Display this screen
data/bin/etvnet_seek CHANGED
@@ -17,9 +17,10 @@ link_info = client.seek ARGV.join(' ')
17
17
 
18
18
  if not link_info.nil? and link_info.resolved?
19
19
  puts "Link #{link_info.text} [#{link_info.name} (#{link_info.media_file})]: #{link_info.link}"
20
+ puts "#{link_info.rtsp_link}"
20
21
 
21
22
  launch = ask("Launch link (y/n)?")
22
23
 
23
- client.launch_link link_info.link unless launch =~ /n/i
24
+ client.launch_link link_info.link if launch =~ /y/i
24
25
  end
25
26
 
data/etvnet_seek.gemspec CHANGED
@@ -4,7 +4,7 @@ require "rake"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = %q{etvnet_seek}
7
- s.version = "0.4.0"
7
+ s.version = "0.5.0"
8
8
 
9
9
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
10
 
@@ -20,8 +20,8 @@ Gem::Specification.new do |s|
20
20
  s.homepage = %q{http://github.com/shvets/etvnet_seek}
21
21
  s.require_paths = ["lib"]
22
22
  s.rubyforge_project = %q{etvnet_seek}
23
- s.rubygems_version = %q{1.3.2}
24
- s.summary = %q{Command line tool for getting mms urls from etvnet service.}
23
+ s.rubygems_version = %q{1.3.6}
24
+ s.summary = %q{Accessing etvnet service from command line.}
25
25
 
26
26
  if s.respond_to? :specification_version then
27
27
  s.specification_version = 2
@@ -1,6 +1,3 @@
1
- require 'net/http'
2
- require 'uri'
3
-
4
1
  class CookieHelper
5
2
 
6
3
  def initialize cookie_file_name
@@ -0,0 +1,38 @@
1
+ class ArchiveMediaItem < MediaItem
2
+ attr_accessor :folder, :showtime, :duration, :year, :rating_image, :rating, :channel
3
+
4
+ def folder?
5
+ folder == true
6
+ end
7
+
8
+ def to_s
9
+ if folder?
10
+ buffer = "*** Folder *** "
11
+ else
12
+ buffer = ""
13
+ end
14
+
15
+ buffer += text
16
+
17
+ unless folder?
18
+ if underscore_name
19
+ buffer += ": #{underscore_name}"
20
+ else
21
+ buffer += ": #{link}"
22
+ end
23
+ end
24
+
25
+ buffer += " --- #{showtime}" if showtime
26
+
27
+ buffer += " (#{media_file})" if not media_file.nil? and media_file.size > 0
28
+ buffer += " --- #{duration}" if not duration.nil? and duration.size > 0
29
+ buffer += " --- #{year}" if not year.nil? and year.size > 2
30
+
31
+ buffer += " --- #{channel}" if channel
32
+ buffer += " --- #{rating_image}" if rating_image
33
+ buffer += " --- #{rating}" if rating
34
+
35
+ buffer
36
+ end
37
+
38
+ end
@@ -0,0 +1,49 @@
1
+ class ArchiveMediaPage < BasePage
2
+ def items
3
+ list = []
4
+
5
+ document.css("b a.media_file").each do |item|
6
+ link = item.attributes['href'].value
7
+ new_link = list.select {|l| l.link == link}.empty?
8
+
9
+ if new_link
10
+ text = item.content.strip
11
+ additional_info = additional_info(item, 1)
12
+
13
+ text += additional_info unless additional_info.nil?
14
+
15
+ tr = item.parent.parent.parent
16
+ showtime = tr.css("td[1]").text.strip
17
+ rating_image = tr.css("td[2] img").at(0) ? tr.css("td[2] img").at(0).attributes['src'].value.strip : ""
18
+ rating = tr.css("td[3]").text.strip
19
+
20
+ year = tr.css("td[6]") ? tr.css("td[6]").text.strip : ""
21
+ duration = tr.css("td[7]").text.strip ? tr.css("td[7]").text.strip : ""
22
+ channel = tr.css("td[8]") ? tr.css("td[8]").text.strip : ""
23
+
24
+ if link =~ /action=browse_container/
25
+ folder = true
26
+ link = link[Page::BASE_URL.size..link.size]
27
+ else
28
+ folder = false
29
+ end
30
+
31
+ record = ArchiveMediaItem.new(text, link)
32
+ record.folder = folder
33
+ record.rating_image = rating_image
34
+ record.rating = rating
35
+ record.showtime = showtime
36
+ record.duration = duration
37
+ record.year = year
38
+ record.channel = channel
39
+
40
+ list << record
41
+ end
42
+ end
43
+
44
+ list
45
+ end
46
+
47
+ end
48
+
49
+
@@ -1,4 +1,5 @@
1
1
  class BasePage < Page
2
+
2
3
  def items
3
4
  list = []
4
5
 
@@ -6,12 +7,16 @@ class BasePage < Page
6
7
  text = item.css("img").at(0).attributes['alt'].value
7
8
  href = item['href']
8
9
 
9
- list << MediaItem.new(text, href)
10
+ unless href =~ /(forum|action=browse_persons|valentines2010)/
11
+ list << MediaItem.new(text, href)
12
+ end
10
13
  end
11
14
 
15
+ list.delete_at(0)
16
+
12
17
  list
13
18
  end
14
-
19
+
15
20
  def title
16
21
  document.css("title").text
17
22
  end
@@ -20,103 +25,6 @@ class BasePage < Page
20
25
  document.css(".global_content .global_content h1").text
21
26
  end
22
27
 
23
- def navigation_menu
24
- list = []
25
-
26
- document.css("table tr td .navigation").first.parent.parent.parent.css("tr td a").each do |item|
27
- text = item.children.at(0).content
28
- href = item['href']
29
-
30
- list << MediaItem.new(text, href) unless href =~ /(login|signup)/
31
- end
32
-
33
- list
34
- end
35
-
36
- def category_breadcrumbs
37
- list = []
38
-
39
- document.css("table tr td table tr td table tr td strong").each_with_index do |item, index|
40
- if index == 0
41
- item.children.each do |child|
42
- text = child.text
43
- link = child.attributes['href']
44
- href = link.nil? ? nil : link.value
45
-
46
- list << MediaItem.new(text, href)
47
- end
48
- end
49
- end
50
-
51
- list
52
- end
53
-
54
- def categories
55
- list = []
56
-
57
- document.css("table").each_with_index do |table1, index1|
58
- if index1 == 5
59
- table1.css("tr/td/table/tr/td/table").each_with_index do |table2, index2|
60
- if index2 == 2
61
- table2.css("tr[2]/td[2]/table").each_with_index do |table3, index3|
62
-
63
- #if index2 > 1
64
- table2.css("tr td a").each_with_index do |item2, index4|
65
- link = item2.attributes['href'].value
66
-
67
- if index4 > 0
68
- text = item2.text
69
- href = link
70
-
71
- additional_info = additional_info(item2, 2)
72
-
73
- list << MediaItem.new(text, href, additional_info)
74
- end
75
- end
76
- end
77
- end
78
- end
79
- end
80
- end
81
-
82
- list
83
- end
84
-
85
- def title_items
86
- list = []
87
-
88
- root = nil
89
- document.css("a").each do |item|
90
- link = item.attributes['href']
91
-
92
- unless link.value =~ /login.fcgi/
93
- if link.value =~ /order_by/
94
- root = link.parent.parent.parent.parent.parent.parent
95
- break
96
- end
97
- end
98
- end
99
-
100
- if root
101
- root.css("td").each do |item|
102
- if item.search("table/tr/td/a").size > 0
103
- link = item.css("table tr td a").first
104
-
105
- text = link.text
106
- href = link.attributes['href'].value
107
-
108
- list << MediaItem.new(text, href)
109
- elsif item.children.size == 1
110
- if list.all? { |e| e.text != item.text }
111
- list << MediaItem.new(item.text, nil)
112
- end
113
- end
114
- end
115
- end
116
-
117
- list
118
- end
119
-
120
28
  protected
121
29
 
122
30
  def additional_info node, index
@@ -1,5 +1,5 @@
1
1
  class BrowseMediaItem < MediaItem
2
- attr_accessor :folder, :showtime, :year, :duration, :rating_image, :image
2
+ attr_accessor :folder, :showtime, :year, :duration, :image, :rating_image, :channel
3
3
 
4
4
  def initialize(text, link)
5
5
  super(text, link)
@@ -31,6 +31,7 @@ class BrowseMediaItem < MediaItem
31
31
  buffer += " (#{media_file})" if not media_file.nil? and media_file.size > 0
32
32
  buffer += " --- #{year}" if not year.nil? and year.size > 2
33
33
  buffer += " --- #{duration}" if not duration.nil? and duration.size > 0
34
+ buffer += " --- #{channel}" if channel
34
35
  buffer += " --- #{image}" if image
35
36
  buffer += " --- #{rating_image}" if rating_image
36
37
 
@@ -10,4 +10,8 @@ class ChannelMediaItem < MediaItem
10
10
  def channel
11
11
  link[link.index("channel=") + "channel=".size, link.size-1]
12
12
  end
13
+
14
+ def to_s
15
+ super + " (#{channel})"
16
+ end
13
17
  end
@@ -9,7 +9,7 @@ class ChannelsPage < MediaPage
9
9
  def items
10
10
  list = []
11
11
 
12
- document.css("table table table.rounded_white table tr").each_with_index do |item, index|
12
+ document.css("table table table.rounded_white table tr").each do |item|
13
13
  links = item.css("table tr td a")
14
14
 
15
15
  text = item.children.at(0).text.strip
@@ -27,7 +27,7 @@ class ChannelsPage < MediaPage
27
27
  archive_link = archive_href.attributes['href'].value unless archive_href.nil?
28
28
  end
29
29
 
30
- list << ChannelMediaItem.new(text, link, archive_link)
30
+ list << ChannelMediaItem.new(text, link, archive_link) unless link.nil?
31
31
  end
32
32
  end
33
33
 
@@ -12,17 +12,18 @@ class MediaPage < BasePage
12
12
 
13
13
  text += additional_info unless additional_info.nil?
14
14
 
15
- showtime = item.parent.parent.parent.css('td[1]').text.strip
16
- year = item.parent.parent.next.next.content.strip
17
- duration = ""
15
+ tr = item.parent.parent.parent
16
+
17
+ showtime = tr.css("td[1]").text.strip
18
+ year = tr.css("td[4]") ? tr.css("td[4]").text.strip : ""
19
+ duration = tr.css("td[5]").text.strip ? tr.css("td[5]").text.strip : ""
20
+ channel = tr.css("td[6]") ? tr.css("td[6]").text.strip : ""
18
21
 
19
22
  if link =~ /action=browse_container/
20
23
  folder = true
21
24
  link = link[Page::BASE_URL.size..link.size]
22
25
  else
23
26
  folder = false
24
- duration = item.parent.parent.next.next.next.next.content.strip unless
25
- item.parent.parent.next.next.next.next.nil?
26
27
  end
27
28
 
28
29
  record = BrowseMediaItem.new(text, link)
@@ -30,7 +31,8 @@ class MediaPage < BasePage
30
31
  record.showtime = showtime
31
32
  record.year = year
32
33
  record.duration = duration
33
-
34
+ record.channel = channel
35
+
34
36
  list << record
35
37
  end
36
38
  end
@@ -1,5 +1,6 @@
1
1
 
2
2
  require 'etvnet_seek/core/media_item'
3
+ require 'etvnet_seek/core/archive_media_item'
3
4
  require 'etvnet_seek/core/media_info'
4
5
  require 'etvnet_seek/core/browse_media_item'
5
6
  require 'etvnet_seek/core/channel_media_item'
@@ -9,6 +10,7 @@ require 'etvnet_seek/core/service_call'
9
10
  require 'etvnet_seek/core/page'
10
11
  require 'etvnet_seek/core/base_page'
11
12
  require 'etvnet_seek/core/media_page'
13
+ require 'etvnet_seek/core/archive_media_page'
12
14
  require 'etvnet_seek/core/main_page'
13
15
  require 'etvnet_seek/core/search_page'
14
16
  require 'etvnet_seek/core/freetv_page'
@@ -26,7 +28,7 @@ class PageFactory
26
28
  when 'search' then
27
29
  SearchPage.new *params
28
30
  when 'main' then
29
- MainPage.new
31
+ BasePage.new
30
32
  when 'channels' then
31
33
  ChannelsPage.new
32
34
  when 'best_ten' then
@@ -41,6 +43,8 @@ class PageFactory
41
43
  FreetvPage.new
42
44
  when 'media' then
43
45
  MediaPage.new url
46
+ when 'archive_media' then
47
+ ArchiveMediaPage.new url
44
48
  when 'access' then
45
49
  AccessPage.new
46
50
  when 'login' then
@@ -1,3 +1,5 @@
1
+ require 'cgi'
2
+
1
3
  class SearchPage < MediaPage
2
4
  SEARCH_URL = BASE_URL + "/cgi-bin/video/eitv_browse.fcgi?action=search"
3
5
 
@@ -30,4 +30,8 @@ class LinkInfo
30
30
  media_info.link
31
31
  end
32
32
 
33
+ def rtsp_link
34
+ media_info.rtsp_link
35
+ end
36
+
33
37
  end
@@ -65,12 +65,17 @@ class Main
65
65
  end
66
66
  elsif mode == 'channels'
67
67
  if user_selection.archive?
68
- process('media', current_item.archive_link)
68
+ process('archive_media', current_item.archive_link)
69
69
  else
70
70
  process('media', current_item.link)
71
71
  end
72
72
  else # media : announces, freetv, category
73
- if current_item.folder? or current_item.link =~ /action=view_recommended/
73
+ require 'nokogiri'
74
+ require 'open-uri'
75
+
76
+ size = Nokogiri::HTML(open(Page::BASE_URL + current_item.link)).css("b a.media_file").size
77
+
78
+ if current_item.folder? or current_item.link =~ /action=view_recommended/ or size > 0
74
79
  process('media', current_item.link)
75
80
  else
76
81
  process("access", current_item)
@@ -126,7 +131,7 @@ class Main
126
131
  end
127
132
 
128
133
  def display_bottom_menu_part mode
129
- puts "<number> => today; <number>.a => archive" if mode == 'channels'
134
+ puts "<number> => today; <number> a => archive" if mode == 'channels'
130
135
  puts "q. to exit"
131
136
  end
132
137
 
@@ -8,22 +8,6 @@ class UserSelection
8
8
 
9
9
  @index = result[0].to_i-1
10
10
  @quit = (result & ['q', 'Q']).empty? ? false : true
11
- @archive = (result & ['a', 'A']).empty? ? false : true
12
-
13
- # @quit = (['q', 'Q'].include? text) ? true : false
14
- # @blank = text.strip.size == 0
15
- # dot_index = text.index('.')
16
- #
17
- # if not dot_index.nil?
18
- # part1 = text[0..dot_index-1]
19
- # part2 = text[dot_index+1..-1]
20
- #
21
- # @index = (part1.to_i)-1
22
- #
23
- # @archive = (['a', 'A'].include? part2) ? true : false
24
- # else
25
- # @index = text.to_i-1
26
- # end
27
11
  end
28
12
 
29
13
  def quit?
@@ -38,8 +22,4 @@ class UserSelection
38
22
  @archive
39
23
  end
40
24
 
41
- def item items
42
- items[index]
43
- end
44
-
45
25
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: etvnet_seek
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 5
8
+ - 0
9
+ version: 0.5.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Alexander Shvets
@@ -14,104 +19,136 @@ default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: json_pure
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 2
30
+ - 0
23
31
  version: 1.2.0
24
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: highline
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ">="
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 1
43
+ - 5
44
+ - 1
33
45
  version: 1.5.1
34
- version:
46
+ type: :runtime
47
+ version_requirements: *id002
35
48
  - !ruby/object:Gem::Dependency
36
49
  name: libxml-ruby
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
40
52
  requirements:
41
53
  - - ">="
42
54
  - !ruby/object:Gem::Version
55
+ segments:
56
+ - 1
57
+ - 1
58
+ - 3
43
59
  version: 1.1.3
44
- version:
60
+ type: :runtime
61
+ version_requirements: *id003
45
62
  - !ruby/object:Gem::Dependency
46
63
  name: nokogiri
47
- type: :runtime
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
50
66
  requirements:
51
67
  - - ">="
52
68
  - !ruby/object:Gem::Version
69
+ segments:
70
+ - 1
71
+ - 4
72
+ - 1
53
73
  version: 1.4.1
54
- version:
74
+ type: :runtime
75
+ version_requirements: *id004
55
76
  - !ruby/object:Gem::Dependency
56
77
  name: rspec
57
- type: :development
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
60
80
  requirements:
61
81
  - - ">="
62
82
  - !ruby/object:Gem::Version
83
+ segments:
84
+ - 1
85
+ - 2
86
+ - 9
63
87
  version: 1.2.9
64
- version:
88
+ type: :development
89
+ version_requirements: *id005
65
90
  - !ruby/object:Gem::Dependency
66
91
  name: mocha
67
- type: :development
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
92
+ prerelease: false
93
+ requirement: &id006 !ruby/object:Gem::Requirement
70
94
  requirements:
71
95
  - - ">="
72
96
  - !ruby/object:Gem::Version
97
+ segments:
98
+ - 0
99
+ - 9
100
+ - 7
73
101
  version: 0.9.7
74
- version:
102
+ type: :development
103
+ version_requirements: *id006
75
104
  - !ruby/object:Gem::Dependency
76
105
  name: metric_fu
77
- type: :development
78
- version_requirement:
79
- version_requirements: !ruby/object:Gem::Requirement
106
+ prerelease: false
107
+ requirement: &id007 !ruby/object:Gem::Requirement
80
108
  requirements:
81
109
  - - ">="
82
110
  - !ruby/object:Gem::Version
111
+ segments:
112
+ - 0
83
113
  version: "0"
84
- version:
114
+ type: :development
115
+ version_requirements: *id007
85
116
  - !ruby/object:Gem::Dependency
86
117
  name: reek
87
- type: :development
88
- version_requirement:
89
- version_requirements: !ruby/object:Gem::Requirement
118
+ prerelease: false
119
+ requirement: &id008 !ruby/object:Gem::Requirement
90
120
  requirements:
91
121
  - - ">="
92
122
  - !ruby/object:Gem::Version
123
+ segments:
124
+ - 0
93
125
  version: "0"
94
- version:
126
+ type: :development
127
+ version_requirements: *id008
95
128
  - !ruby/object:Gem::Dependency
96
129
  name: roodi
97
- type: :development
98
- version_requirement:
99
- version_requirements: !ruby/object:Gem::Requirement
130
+ prerelease: false
131
+ requirement: &id009 !ruby/object:Gem::Requirement
100
132
  requirements:
101
133
  - - ">="
102
134
  - !ruby/object:Gem::Version
135
+ segments:
136
+ - 0
103
137
  version: "0"
104
- version:
138
+ type: :development
139
+ version_requirements: *id009
105
140
  - !ruby/object:Gem::Dependency
106
141
  name: googlecharts
107
- type: :development
108
- version_requirement:
109
- version_requirements: !ruby/object:Gem::Requirement
142
+ prerelease: false
143
+ requirement: &id010 !ruby/object:Gem::Requirement
110
144
  requirements:
111
145
  - - ">="
112
146
  - !ruby/object:Gem::Version
147
+ segments:
148
+ - 0
113
149
  version: "0"
114
- version:
150
+ type: :development
151
+ version_requirements: *id010
115
152
  description: Command line tool for getting mms urls from etvnet service.
116
153
  email: alexander.shvets@gmail.com
117
154
  executables:
@@ -127,6 +164,8 @@ files:
127
164
  - lib/etvnet_seek/cookie_helper.rb
128
165
  - lib/etvnet_seek/core/access_page.rb
129
166
  - lib/etvnet_seek/core/announces_page.rb
167
+ - lib/etvnet_seek/core/archive_media_item.rb
168
+ - lib/etvnet_seek/core/archive_media_page.rb
130
169
  - lib/etvnet_seek/core/base_page.rb
131
170
  - lib/etvnet_seek/core/browse_media_item.rb
132
171
  - lib/etvnet_seek/core/channel_media_item.rb
@@ -135,7 +174,6 @@ files:
135
174
  - lib/etvnet_seek/core/group_media_item.rb
136
175
  - lib/etvnet_seek/core/group_page.rb
137
176
  - lib/etvnet_seek/core/login_page.rb
138
- - lib/etvnet_seek/core/main_page.rb
139
177
  - lib/etvnet_seek/core/media_info.rb
140
178
  - lib/etvnet_seek/core/media_item.rb
141
179
  - lib/etvnet_seek/core/media_page.rb
@@ -166,20 +204,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
166
204
  requirements:
167
205
  - - ">="
168
206
  - !ruby/object:Gem::Version
207
+ segments:
208
+ - 0
169
209
  version: "0"
170
- version:
171
210
  required_rubygems_version: !ruby/object:Gem::Requirement
172
211
  requirements:
173
212
  - - ">="
174
213
  - !ruby/object:Gem::Version
214
+ segments:
215
+ - 0
175
216
  version: "0"
176
- version:
177
217
  requirements:
178
218
  - none
179
219
  rubyforge_project: etvnet_seek
180
- rubygems_version: 1.3.5
220
+ rubygems_version: 1.3.6
181
221
  signing_key:
182
222
  specification_version: 2
183
- summary: Command line tool for getting mms urls from etvnet service.
223
+ summary: Accessing etvnet service from command line.
184
224
  test_files:
185
225
  - spec/etvnet_seek_spec.rb
@@ -1,20 +0,0 @@
1
- class MainPage < BasePage
2
-
3
- def items
4
- list = []
5
-
6
- document.css("#tblCategories a").each do |item|
7
- text = item.css("img").at(0).attributes['alt'].value
8
- href = item['href']
9
-
10
- unless href =~ /forum.etvnet.ca/ or href =~ /action=browse_persons/ or href =~ /valentines2010/
11
- list << MediaItem.new(text, href)
12
- end
13
- end
14
-
15
- list.delete_at(0)
16
-
17
- list
18
- end
19
-
20
- end