Sha256: 51759e12d3d3776a9fd00adcbe3114b654cb169c236db7db1da892f438903f32

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

module Iyoutu
  Format = Struct.new(:format_code, :extension, :resolution_note)
  class YoutubeDLFormats
    attr_accessor :formats_output
    attr_accessor :video_only
    attr_accessor :audio_only
    attr_accessor :video_with_audio

    def initialize(formats_output)
      @formats_output = formats_output
      @video_only = []
      @audio_only = []
      @video_with_audio   = []

      formats_output_lines = formats_output.split("\n")
      # Partition formats
      formats_output_lines.each do |line|
        if line    =~ /audio only/
          @audio_only << parse_format_line(line)
        elsif line =~ /video only/
          @video_only << parse_format_line(line)
        elsif line =~ /^(\d+).*$/ # line starts with number(s)
          @video_with_audio   << parse_format_line(line)
        else
          # skip
        end
      end
    end

    def parse_format_line(line)
      format_line_regexp = /^(?<format_code>\d+) +(?<extension>[[:alnum:]]+) +(?<resolution_note>.*)$/
      matches = format_line_regexp.match(line)
      Format.new(matches[:format_code], matches[:extension], matches[:resolution_note])
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
iyoutu-0.1.0 lib/iyoutu/youtube_dl_formats.rb