mediainfo 1.2.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9a2a120f86327b4a88642ff37e80810eb03c4ce4322875344e19149a14658cc
4
- data.tar.gz: 50b75301c095921c24d41930781d8580884fefaf534fc1b5252dc1920096775a
3
+ metadata.gz: 4008669b840fdfc16238d0e8650a6960437d77a65daa2b69ebaf74007e849a70
4
+ data.tar.gz: f1c8031c41b8466b7e0c916f361316a294629e60565e12cc160e452b38e219d6
5
5
  SHA512:
6
- metadata.gz: d86c27802289727bffe005dfede51c3b009f317f7275da592db1239434f1e72d7ea919ba2c654e63ebea0fcf40e67b8912157c304787a5c7c3357f73921a12ab
7
- data.tar.gz: f55349f8f875e8535f6f935caa6f3dab5d10c9ddda74887b08305cbf7b6db8ba716c4c7c8c14fabd8588e85611661adbedbc5282f527167cd3c95e587a8532fe
6
+ metadata.gz: 6c12fa15b217f661a9d242fb2f54a7dbc52eeac835e41cc3ecb5cd6905b5b9b35c09097f9b8b2b0aab5652cc1a8f59768ebab3dbbac185f13c3f6fafc6d5091a
7
+ data.tar.gz: 5e75f9f1da3a1d807421cd201615497d577706dc337c59dd6f95eb814b46bd886eb5553f09d6c805727d9a60caedda46415aece461676969b3d18db5b48c7edb
data/README.md CHANGED
@@ -8,6 +8,8 @@ MediaInfo is a class wrapping [the mediainfo CLI](http://mediainfo.sourceforge.n
8
8
 
9
9
  ## Usage
10
10
 
11
+ - Versions > 1.3.0 support S3 URLs. See rspec test for example of how to obtain the supported URL.
12
+
11
13
  #### Parsing raw XML
12
14
  media_info = MediaInfo.from(File.open('iphone6+_video.mov.xml').read)
13
15
  #### Handling a local file
@@ -55,16 +55,6 @@ module MediaInfo
55
55
  return xml_parser
56
56
  end
57
57
 
58
- def self.run(input = nil)
59
- raise ArgumentError, 'Your input cannot be blank.' if input.nil?
60
- command = "#{location} #{input} --Output=XML 2>&1"
61
- raw_response = `#{command}`
62
- unless $? == 0
63
- raise ExecutionError, "Execution of '#{command}' failed. #{raw_response.inspect}"
64
- end
65
- return raw_response
66
- end
67
-
68
58
  def self.from(input)
69
59
  return from_uri(input) if input.is_a?(URI)
70
60
  return from_string(input) if input.is_a?(String)
@@ -96,13 +86,27 @@ module MediaInfo
96
86
  from_uri(URI(input))
97
87
  end
98
88
 
89
+ def self.run(input = nil)
90
+ raise ArgumentError, 'Your input cannot be blank.' if input.nil?
91
+ command = "#{location} '#{input}' --Output=XML"
92
+ raw_response, errors, status = Open3.capture3(command)
93
+ unless errors.empty? && status.exitstatus == 0
94
+ raise ExecutionError, "Execution of '#{command}' failed: \n #{errors.red}"
95
+ end
96
+ return raw_response
97
+ end
98
+
99
99
  def self.from_uri(input)
100
- http = Net::HTTP.new(input.host, input.port) # Check if input is valid
101
- request = Net::HTTP::Head.new(input.request_uri) # Only grab the Headers to be sure we don't try and download the whole file
102
- http.use_ssl = true if input.is_a? URI::HTTPS # For https support
103
- http_request = http.request(request)
104
- raise RemoteUrlError, "HTTP call to #{input} is not working : #{http_request.value}" unless http_request.is_a?(Net::HTTPOK)
105
- MediaInfo::Tracks.new(MediaInfo.run(URI.escape(input.to_s)))
100
+ if input.host.include?('amazonaws.com')
101
+ MediaInfo::Tracks.new(MediaInfo.run(input.to_s)) # Removed URI.escape due to Error parsing the X-Amz-Credential parameter; the Credential is mal-formed; expecting "<YOUR-AKID>/YYYYMMDD/REGION/SERVICE/aws4_request"
102
+ else
103
+ http = Net::HTTP.new(input.host, input.port) # Check if input is valid
104
+ request = Net::HTTP::Head.new(input.request_uri) # Only grab the Headers to be sure we don't try and download the whole file; Doesn't work with presigned_urls in aws/s3
105
+ http.use_ssl = true if input.is_a? URI::HTTPS # For https support
106
+ http_request = http.request(request)
107
+ raise RemoteUrlError, "HTTP call to #{input} is not working : #{http_request.value}" unless http_request.is_a?(Net::HTTPOK)
108
+ MediaInfo::Tracks.new(MediaInfo.run(URI.escape(input.to_s)))
109
+ end
106
110
  end
107
111
 
108
112
  def self.set_singleton_method(object,name,parameters)
@@ -10,6 +10,24 @@ class String
10
10
  #
11
11
  # see: http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_02_03
12
12
  def shell_escape_double_quotes
13
- '"'+gsub(/\\|"|\$|`/, '\\\\\0')+'"'
13
+ ''+gsub(/\\|"|\$|`/, '\\\\\0')+''
14
14
  end unless method_defined?(:shell_escape_double_quotes)
15
+
16
+ # colorization
17
+ def colorize(color_code)
18
+ "\e[#{color_code}m#{self}\e[0m"
19
+ end
20
+
21
+ def red
22
+ colorize(31)
23
+ end
24
+
25
+ def green
26
+ colorize(32)
27
+ end
28
+
29
+ def yellow
30
+ colorize(33)
31
+ end
32
+
15
33
  end
@@ -1,3 +1,3 @@
1
1
  module MediaInfo
2
- VERSION = '1.2.2'
2
+ VERSION = '1.3.0'
3
3
  end
@@ -25,6 +25,8 @@ Gem::Specification.new do |s|
25
25
  s.add_development_dependency 'rake', '~> 12.3'
26
26
  s.add_development_dependency 'rspec', '~> 3.0'
27
27
  s.add_development_dependency 'nokogiri', '>= 1.8', '< 2.0' # Ability to parse XML response # Optional and should be included by user in their own gemfile
28
+ s.add_development_dependency 'aws-sdk-s3'
29
+ s.add_development_dependency 'pry'
28
30
 
29
31
  if s.respond_to? :specification_version then
30
32
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mediainfo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seth Thomas Rasmussen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-10 00:00:00.000000000 Z
11
+ date: 2019-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,6 +72,34 @@ dependencies:
72
72
  - - "<"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '2.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: aws-sdk-s3
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: pry
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
75
103
  description: MediaInfo is a class wrapping the mediainfo CLI (http://mediainfo.sourceforge.net)
76
104
  that standardizes attributes/methods and also converts most values into something
77
105
  Ruby can understand.