Class: SimplePvr::XmltvReader
- Inherits:
-
Object
- Object
- SimplePvr::XmltvReader
- Includes:
- Model
- Defined in:
- lib/simple_pvr/xmltv_reader.rb
Instance Method Summary collapse
-
#initialize(mapping_to_channels) ⇒ XmltvReader
constructor
A new instance of XmltvReader.
- #process_channel(channel_xml) ⇒ Object
- #read(input) ⇒ Object
- #set_channel_metadata(channel_name, channel_xml) ⇒ Object
Constructor Details
#initialize(mapping_to_channels) ⇒ XmltvReader
Returns a new instance of XmltvReader.
7 8 9 10 11 12 13 |
# File 'lib/simple_pvr/xmltv_reader.rb', line 7 def initialize(mapping_to_channels) @channel_name_from_id = mapping_to_channels @channel_from_name = {} Channel.all.each do |channel| @channel_from_name[channel.name] = channel end end |
Instance Method Details
#process_channel(channel_xml) ⇒ Object
31 32 33 34 35 |
# File 'lib/simple_pvr/xmltv_reader.rb', line 31 def process_channel(channel_xml) channel_id = channel_xml[:id] channel_name = @channel_name_from_id[channel_id.to_s] (channel_name, channel_xml) if channel_name end |
#read(input) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/simple_pvr/xmltv_reader.rb', line 15 def read(input) doc = Nokogiri::XML.parse(input) Programme.transaction do Programme.clear doc.xpath('/tv/channel').each do |channel| process_channel(channel) end doc.xpath('/tv/programme').each do |programme| process_programme(programme) end end end |
#set_channel_metadata(channel_name, channel_xml) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/simple_pvr/xmltv_reader.rb', line 37 def (channel_name, channel_xml) channel = channel_from_name(channel_name) icon_xml = channel_xml.xpath("icon").first channel.icon_url = icon_xml[:src] if icon_xml end |