lib/m3u8/media_item.rb in m3u8-0.7.1 vs lib/m3u8/media_item.rb in m3u8-0.8.0
- old
+ new
@@ -2,46 +2,56 @@
module M3u8
# MediaItem represents a set of EXT-X-MEDIA attributes
class MediaItem
extend M3u8
attr_accessor :type, :group_id, :language, :assoc_language, :name,
- :autoselect, :default, :uri, :forced
+ :autoselect, :default, :uri, :forced, :instream_id,
+ :characteristics, :channels
def initialize(params = {})
params.each do |key, value|
instance_variable_set("@#{key}", value)
end
end
def self.parse(text)
- attributes = parse_attributes text
+ attributes = parse_attributes(text)
options = { type: attributes['TYPE'], group_id: attributes['GROUP-ID'],
language: attributes['LANGUAGE'],
assoc_language: attributes['ASSOC-LANGUAGE'],
name: attributes['NAME'],
autoselect: parse_yes_no(attributes['AUTOSELECT']),
default: parse_yes_no(attributes['DEFAULT']),
forced: parse_yes_no(attributes['FORCED']),
- uri: attributes['URI'] }
- MediaItem.new options
+ uri: attributes['URI'],
+ instream_id: attributes['INSTREAM-ID'],
+ characteristics: attributes['CHARACTERISTICS'],
+ channels: attributes['CHANNELS'] }
+ MediaItem.new(options)
end
def to_s
- attributes = [type_format,
- group_id_format,
- language_format,
- assoc_language_format,
- name_format,
- autoselect_format,
- default_format,
- uri_format,
- forced_format].compact.join(',')
- "#EXT-X-MEDIA:#{attributes}"
+ "#EXT-X-MEDIA:#{formatted_attributes.join(',')}"
end
private
+ def formatted_attributes
+ [type_format,
+ group_id_format,
+ language_format,
+ assoc_language_format,
+ name_format,
+ autoselect_format,
+ default_format,
+ uri_format,
+ forced_format,
+ instream_id_format,
+ characteristics_format,
+ channels_format].compact
+ end
+
def type_format
"TYPE=#{type}"
end
def group_id_format
@@ -78,9 +88,24 @@
end
def forced_format
return if forced.nil?
"FORCED=#{to_yes_no forced}"
+ end
+
+ def instream_id_format
+ return if instream_id.nil?
+ %(INSTREAM-ID="#{instream_id}")
+ end
+
+ def characteristics_format
+ return if characteristics.nil?
+ %(CHARACTERISTICS="#{characteristics}")
+ end
+
+ def channels_format
+ return if channels.nil?
+ %(CHANNELS="#{channels}")
end
def to_yes_no(boolean)
boolean == true ? 'YES' : 'NO'
end