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 +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
|