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.
@@ -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: []