Module: M3u8

Included in:
ContentSteeringItem, DateRangeItem, DefineItem, KeyItem, MapItem, MapItem, MediaItem, PartInfItem, PartItem, PartItem, PlaybackStart, PlaylistItem, PreloadHintItem, RenditionReportItem, SegmentItem, ServerControlItem, SessionDataItem, SessionKeyItem, SkipItem, TimeItem
Defined in:
lib/m3u8.rb,
lib/m3u8/cli.rb,
lib/m3u8/error.rb,
lib/m3u8/codecs.rb,
lib/m3u8/reader.rb,
lib/m3u8/scte35.rb,
lib/m3u8/writer.rb,
lib/m3u8/builder.rb,
lib/m3u8/version.rb,
lib/m3u8/gap_item.rb,
lib/m3u8/key_item.rb,
lib/m3u8/map_item.rb,
lib/m3u8/playlist.rb,
lib/m3u8/part_item.rb,
lib/m3u8/skip_item.rb,
lib/m3u8/time_item.rb,
lib/m3u8/byte_range.rb,
lib/m3u8/media_item.rb,
lib/m3u8/define_item.rb,
lib/m3u8/encryptable.rb,
lib/m3u8/bitrate_item.rb,
lib/m3u8/segment_item.rb,
lib/m3u8/serializable.rb,
lib/m3u8/part_inf_item.rb,
lib/m3u8/playlist_item.rb,
lib/m3u8/playback_start.rb,
lib/m3u8/date_range_item.rb,
lib/m3u8/cli/diff_command.rb,
lib/m3u8/session_key_item.rb,
lib/m3u8/preload_hint_item.rb,
lib/m3u8/scte35_bit_reader.rb,
lib/m3u8/session_data_item.rb,
lib/m3u8/variable_resolver.rb,
lib/m3u8/discontinuity_item.rb,
lib/m3u8/scte35_splice_null.rb,
lib/m3u8/scte35_time_signal.rb,
lib/m3u8/attribute_formatter.rb,
lib/m3u8/cli/inspect_command.rb,
lib/m3u8/server_control_item.rb,
lib/m3u8/cli/validate_command.rb,
lib/m3u8/scte35_splice_insert.rb,
lib/m3u8/content_steering_item.rb,
lib/m3u8/rendition_report_item.rb,
lib/m3u8/scte35_segmentation_descriptor.rb

Overview

M3u8 provides parsing, generation, and validation of m3u8 playlists

Defined Under Namespace

Modules: AttributeFormatter, Codecs, Encryptable, Serializable Classes: BitrateItem, Builder, ByteRange, CLI, ContentSteeringItem, DateRangeItem, DefineItem, DiscontinuityItem, GapItem, InvalidPlaylistError, KeyItem, MapItem, MediaItem, PartInfItem, PartItem, PlaybackStart, Playlist, PlaylistItem, PlaylistTypeError, PreloadHintItem, Reader, RenditionReportItem, Scte35, Scte35BitReader, Scte35SegmentationDescriptor, Scte35SpliceInsert, Scte35SpliceNull, Scte35TimeSignal, SegmentItem, ServerControlItem, SessionDataItem, SessionKeyItem, SkipItem, TimeItem, VariableResolver, Writer

Constant Summary collapse

VERSION =
'1.9.0'

Instance Method Summary collapse

Instance Method Details

#initialize_with_byterange(params = {}) ⇒ void

This method returns an undefined value.

Initialize attributes from a params hash, converting any Hash values for :byterange into ByteRange instances.

Parameters:

  • params (Hash) (defaults to: {})

    attribute key-value pairs



15
16
17
18
19
20
# File 'lib/m3u8.rb', line 15

def initialize_with_byterange(params = {})
  params.each do |key, value|
    value = ByteRange.new(value) if value.is_a?(Hash)
    instance_variable_set("@#{key}", value)
  end
end

#parse_attributes(line) ⇒ Hash<String, String>

Parse an HLS attribute list string into a Hash.

Parameters:

  • line (String)

    raw attribute list (e.g. ‘KEY=“val”,NUM=1’)

Returns:

  • (Hash<String, String>)

    attribute name-value pairs



25
26
27
28
# File 'lib/m3u8.rb', line 25

def parse_attributes(line)
  line.delete("\n").scan(/([A-Za-z0-9-]+)\s*=\s*("[^"]*"|[^,]*)/)
      .to_h { |key, value| [key, value.delete('"')] }
end

#parse_float(value) ⇒ Float?

Convert a string value to Float, returning nil when nil.

Parameters:

  • value (String, nil)

    numeric string

Returns:

  • (Float, nil)


33
34
35
# File 'lib/m3u8.rb', line 33

def parse_float(value)
  value&.to_f
end

#parse_int(value) ⇒ Integer?

Convert a string value to Integer, returning nil when nil.

Parameters:

  • value (String, nil)

    numeric string

Returns:

  • (Integer, nil)


40
41
42
# File 'lib/m3u8.rb', line 40

def parse_int(value)
  value&.to_i
end

#parse_yes_no(value) ⇒ Boolean

Parse an HLS YES/NO attribute into a boolean.

Parameters:

  • value (String)

    ‘YES’ or ‘NO’

Returns:

  • (Boolean)


47
48
49
# File 'lib/m3u8.rb', line 47

def parse_yes_no(value)
  value == 'YES'
end

#to_yes_no(boolean) ⇒ String

Convert a boolean into an HLS YES/NO string.

Parameters:

  • boolean (Boolean)

    value to convert

Returns:

  • (String)

    ‘YES’ or ‘NO’



54
55
56
# File 'lib/m3u8.rb', line 54

def to_yes_no(boolean)
  boolean == true ? 'YES' : 'NO'
end