program-tv 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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:last > tbody > tr").map do |e|
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
- @additional_day = true
38
+ additional_day = true
36
39
  element[:stop] += 86400
37
- elsif @additional_day
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 + 1,
57
+ Time.new.day + offset,
55
58
  time[1],
56
59
  time[2])
57
60
  end
@@ -20,7 +20,10 @@ module ProgramTV
20
20
  end
21
21
  end
22
22
  end
23
- new_schedule = (today_schedule + schedule).select{ |p| p[:start] > Time.now.strftime("%Y%m%d000000 %z") }
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.8
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.8.23
88
+ rubygems_version: 2.1.4
97
89
  signing_key:
98
- specification_version: 3
90
+ specification_version: 4
99
91
  summary: TV Channel parser
100
92
  test_files: []