Class: XMorph::Util

Inherits:
Object
  • Object
show all
Defined in:
lib/xmorph/util.rb

Class Method Summary collapse

Class Method Details

.mediainfo_xml_to_hash(response) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/xmorph/util.rb', line 4

def self.mediainfo_xml_to_hash(response)
  meta = {
  "Audio" => []
  }
  begin
    response_json = Hash.from_xml(response)
    response_json["Mediainfo"]["File"]["track"].each do |track|
      type = track['type']
      track = track.except("type")
      track['Encoding_settings'] = Rack::Utils.parse_nested_query(track['Encoding_settings'].split("/").map {|pair| pair.strip }.join("&")) unless track['Encoding_settings'].nil?
      (type == "Audio") ? meta["Audio"] << track : meta[type] = track
      if type == "Video"
        if track["Display_aspect_ratio"].present?
          track["Display_aspect_ratio"] = track["Display_aspect_ratio"] if track["Display_aspect_ratio"].include? (":")
        end
        if track["Original_display_aspect_ratio"].present?
          track["Display_aspect_ratio"] = track["Original_display_aspect_ratio"] if track["Original_display_aspect_ratio"].include? (":")
        end
      end
    end
    meta['audio_tracks'] = meta['Audio'].count.to_s
  rescue => ex
    puts ex
    return false, {"error" => "Failed to load mediainfo"}
  end
  return true, meta
end

.run_cmd_with_response(cmd) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/xmorph/util.rb', line 32

def self.run_cmd_with_response(cmd)
  raw_response = `#{cmd}`
  successful = true
  exit_status = $?.exitstatus
  if exit_status != 0
    successful = false
  end
  return successful, raw_response
end