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 +4 -0
- data/README +9 -1
- data/bin/etvnet_seek +2 -1
- data/etvnet_seek.gemspec +3 -3
- data/lib/etvnet_seek/cookie_helper.rb +0 -3
- data/lib/etvnet_seek/core/archive_media_item.rb +38 -0
- data/lib/etvnet_seek/core/archive_media_page.rb +49 -0
- data/lib/etvnet_seek/core/base_page.rb +7 -99
- data/lib/etvnet_seek/core/browse_media_item.rb +2 -1
- data/lib/etvnet_seek/core/channel_media_item.rb +4 -0
- data/lib/etvnet_seek/core/channels_page.rb +2 -2
- data/lib/etvnet_seek/core/media_page.rb +8 -6
- data/lib/etvnet_seek/core/page_factory.rb +5 -1
- data/lib/etvnet_seek/core/search_page.rb +2 -0
- data/lib/etvnet_seek/link_info.rb +4 -0
- data/lib/etvnet_seek/main.rb +8 -3
- data/lib/etvnet_seek/user_selection.rb +0 -20
- metadata +86 -46
- data/lib/etvnet_seek/core/main_page.rb +0 -20
data/CHANGES
CHANGED
data/README
CHANGED
@@ -8,4 +8,12 @@
|
|
8
8
|
|
9
9
|
== Usage
|
10
10
|
|
11
|
-
etvnet_seek
|
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
|
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.
|
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.
|
24
|
-
s.summary = %q{
|
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
|
@@ -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
|
-
|
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, :
|
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
|
|
@@ -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").
|
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
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
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
|
data/lib/etvnet_seek/main.rb
CHANGED
@@ -65,12 +65,17 @@ class Main
|
|
65
65
|
end
|
66
66
|
elsif mode == 'channels'
|
67
67
|
if user_selection.archive?
|
68
|
-
process('
|
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
|
-
|
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
|
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
|
-
|
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
|
-
|
18
|
-
|
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
|
-
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: highline
|
27
|
-
|
28
|
-
|
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
|
-
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
35
48
|
- !ruby/object:Gem::Dependency
|
36
49
|
name: libxml-ruby
|
37
|
-
|
38
|
-
|
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
|
-
|
60
|
+
type: :runtime
|
61
|
+
version_requirements: *id003
|
45
62
|
- !ruby/object:Gem::Dependency
|
46
63
|
name: nokogiri
|
47
|
-
|
48
|
-
|
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
|
-
|
74
|
+
type: :runtime
|
75
|
+
version_requirements: *id004
|
55
76
|
- !ruby/object:Gem::Dependency
|
56
77
|
name: rspec
|
57
|
-
|
58
|
-
|
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
|
-
|
88
|
+
type: :development
|
89
|
+
version_requirements: *id005
|
65
90
|
- !ruby/object:Gem::Dependency
|
66
91
|
name: mocha
|
67
|
-
|
68
|
-
|
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
|
-
|
102
|
+
type: :development
|
103
|
+
version_requirements: *id006
|
75
104
|
- !ruby/object:Gem::Dependency
|
76
105
|
name: metric_fu
|
77
|
-
|
78
|
-
|
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
|
-
|
114
|
+
type: :development
|
115
|
+
version_requirements: *id007
|
85
116
|
- !ruby/object:Gem::Dependency
|
86
117
|
name: reek
|
87
|
-
|
88
|
-
|
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
|
-
|
126
|
+
type: :development
|
127
|
+
version_requirements: *id008
|
95
128
|
- !ruby/object:Gem::Dependency
|
96
129
|
name: roodi
|
97
|
-
|
98
|
-
|
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
|
-
|
138
|
+
type: :development
|
139
|
+
version_requirements: *id009
|
105
140
|
- !ruby/object:Gem::Dependency
|
106
141
|
name: googlecharts
|
107
|
-
|
108
|
-
|
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
|
-
|
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.
|
220
|
+
rubygems_version: 1.3.6
|
181
221
|
signing_key:
|
182
222
|
specification_version: 2
|
183
|
-
summary:
|
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
|