program-tv 0.0.8 → 0.0.9
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.
- checksums.yaml +7 -0
- data/lib/program-tv/parser.rb +15 -12
- data/lib/program-tv/writer.rb +4 -1
- metadata +12 -20
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 69f10a915324a9025ca1d2fb6a7289e22e841222
|
4
|
+
data.tar.gz: a32ad77616dd2facf6dc59d167098780092862f0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1ae69d2a160eecd3f503891b005ae4af7a1d90429e076c5c955a851709b11054d86e44679c03dc22ac5fb990e782e7b828d6b7396dd6f43983f25e802982dbb4
|
7
|
+
data.tar.gz: 726dd9a2d566065a5fb9291f941d97a4f0a7fefc3ecd5d1590bcdb56dd9199166f4d08d738abbdc4f1420d62ce3d7cc3d0fe8d13bcc1181b038d0a79808485a6
|
data/lib/program-tv/parser.rb
CHANGED
@@ -16,25 +16,28 @@ module ProgramTV
|
|
16
16
|
private
|
17
17
|
|
18
18
|
def schedule(epg_name, url)
|
19
|
-
@additional_day = false
|
20
19
|
page = Nokogiri::HTML(@agent.get(url).body)
|
21
|
-
data = page.css(".main.col > table:
|
20
|
+
data = build_hash epg_name, page.css(".main.col > table:first > tbody > tr")
|
21
|
+
data += build_hash epg_name, page.css(".main.col > table:last > tbody > tr"), 1
|
22
|
+
puts "Missing schedule for channel #{epg_name}" and return if data.empty?
|
23
|
+
end
|
24
|
+
|
25
|
+
# convert nokogiri html data to handy hash structure
|
26
|
+
def build_hash(epg_name, data, offset = 0)
|
27
|
+
additional_day = false
|
28
|
+
data = data.map do |e|
|
22
29
|
{
|
23
|
-
start: running_time(e),
|
30
|
+
start: running_time(e, offset),
|
24
31
|
channel: epg_name,
|
25
32
|
title: e.css('.name').text
|
26
33
|
}
|
27
34
|
end
|
28
|
-
if data.empty?
|
29
|
-
puts "Missing schedule for channel #{epg_name}"
|
30
|
-
return
|
31
|
-
end
|
32
35
|
data[0..-2].each_with_index do |element, i|
|
33
36
|
element[:stop] = data[i+1][:start]
|
34
37
|
if element[:stop] < element[:start]
|
35
|
-
|
38
|
+
additional_day = true
|
36
39
|
element[:stop] += 86400
|
37
|
-
elsif
|
40
|
+
elsif additional_day
|
38
41
|
element[:start] += 86400
|
39
42
|
element[:stop] += 86400
|
40
43
|
end
|
@@ -42,16 +45,16 @@ module ProgramTV
|
|
42
45
|
element[:stop] = element[:stop].strftime("%Y%m%d%H%M%S %z")
|
43
46
|
end
|
44
47
|
data.pop
|
45
|
-
data
|
48
|
+
return data
|
46
49
|
end
|
47
50
|
|
48
51
|
# Methods to retrieve channel attributes
|
49
|
-
def running_time(element)
|
52
|
+
def running_time(element, offset = 0)
|
50
53
|
time = element.css('.time').text.match(/([0-9]+):([0-9]+)/)
|
51
54
|
return nil unless time
|
52
55
|
Time.new(Time.new.year,
|
53
56
|
Time.new.month,
|
54
|
-
Time.new.day +
|
57
|
+
Time.new.day + offset,
|
55
58
|
time[1],
|
56
59
|
time[2])
|
57
60
|
end
|
data/lib/program-tv/writer.rb
CHANGED
@@ -20,7 +20,10 @@ module ProgramTV
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
|
-
new_schedule = (today_schedule + schedule).
|
23
|
+
new_schedule = (today_schedule + schedule).
|
24
|
+
select{ |p| p[:start] > Time.now.strftime("%Y%m%d000000 %z") }.
|
25
|
+
uniq.
|
26
|
+
sort{ |a,b| a[:start] <=> b[:start] }
|
24
27
|
File.open(xml_path(schedule), "w+") do |file|
|
25
28
|
file.write(build_xml(new_schedule))
|
26
29
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: program-tv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.9
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Maciej Walusiak
|
@@ -14,49 +13,43 @@ dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: builder
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: mechanize
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: nokogiri
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
description: Downloads TV channel schedule in XML format
|
@@ -75,26 +68,25 @@ files:
|
|
75
68
|
homepage: https://github.com/Rabsztok/program-tv
|
76
69
|
licenses:
|
77
70
|
- GPL
|
71
|
+
metadata: {}
|
78
72
|
post_install_message:
|
79
73
|
rdoc_options: []
|
80
74
|
require_paths:
|
81
75
|
- lib
|
82
76
|
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
77
|
requirements:
|
85
|
-
- -
|
78
|
+
- - '>='
|
86
79
|
- !ruby/object:Gem::Version
|
87
80
|
version: '0'
|
88
81
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
82
|
requirements:
|
91
|
-
- -
|
83
|
+
- - '>='
|
92
84
|
- !ruby/object:Gem::Version
|
93
85
|
version: '0'
|
94
86
|
requirements: []
|
95
87
|
rubyforge_project:
|
96
|
-
rubygems_version: 1.
|
88
|
+
rubygems_version: 2.1.4
|
97
89
|
signing_key:
|
98
|
-
specification_version:
|
90
|
+
specification_version: 4
|
99
91
|
summary: TV Channel parser
|
100
92
|
test_files: []
|