etvnet_seek 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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