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