mediainfo 1.3.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4008669b840fdfc16238d0e8650a6960437d77a65daa2b69ebaf74007e849a70
4
- data.tar.gz: f1c8031c41b8466b7e0c916f361316a294629e60565e12cc160e452b38e219d6
3
+ metadata.gz: 065c7f90befa0eb7259e1a804f906436c9eeea316b456cb15acb96ffb853eb73
4
+ data.tar.gz: d78a88f13eec40a22e62a63889fdf1221d72a77980d9a517616e93514030a259
5
5
  SHA512:
6
- metadata.gz: 6c12fa15b217f661a9d242fb2f54a7dbc52eeac835e41cc3ecb5cd6905b5b9b35c09097f9b8b2b0aab5652cc1a8f59768ebab3dbbac185f13c3f6fafc6d5091a
7
- data.tar.gz: 5e75f9f1da3a1d807421cd201615497d577706dc337c59dd6f95eb814b46bd886eb5553f09d6c805727d9a60caedda46415aece461676969b3d18db5b48c7edb
6
+ metadata.gz: e384cc2ec918b16e0ee7acf7605be9fb685b1fcc6aa9105bcceef06c863ca2e192959a43e14f78d21492c77052e14adb7b6d2e77c8fbfb8439096506d8273f47
7
+ data.tar.gz: e29af6e586f2677c11005b0e89fba717446f598969e9c372053dd6c0197aa8095c979a670a2e496b0c9950889341208c941811a7c90bb265bbc74e47dc7fb7a5
data/.gitignore CHANGED
@@ -16,5 +16,6 @@ pkg
16
16
  .vscode
17
17
  # rspec failure tracking
18
18
  .rspec_status
19
+ *.gem
19
20
 
20
21
  Gemfile.lock
data/README.md CHANGED
@@ -8,7 +8,7 @@ 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.
11
+ - Versions > 1.3.0 support S3 URLs. See rspec test for example.
12
12
 
13
13
  #### Parsing raw XML
14
14
  media_info = MediaInfo.from(File.open('iphone6+_video.mov.xml').read)
@@ -60,8 +60,18 @@ Sometimes you'll have more than one track of a given type:
60
60
  - Any track attribute name with "date" and matching /\d-/ will be converted using Time.parse:
61
61
 
62
62
 
63
- media_info.video.encoded_date => 2018-03-30 12:12:08 -0400
64
- media_info.video.customdate => 2016-02-10 01:00:00 -0600
63
+ media_info.video.encoded_date => 2018-03-30 12:12:08 UTC
64
+ media_info.video.customdate => 2016-02-10 01:00:00 UTC
65
+
66
+ > 🕑 **A note on time zones:**
67
+ > Whenever possible, mediainfo provides timestamps in UTC.
68
+ > To convert UTC timestamps to your system time zone, use `#getlocal`:
69
+ >
70
+ > media_info.video.encoded_date.getlocal => 2018-03-30 05:12:08 -0700
71
+ >
72
+ > If a `*date` attribute is already in your local time zone,
73
+ > that means no time zone data was found,
74
+ > and the given time zone may not be correct.
65
75
 
66
76
  - .duration and .overall_duration will be returned as milliseconds AS LONG AS the Duration and Overall_Duration match one of the expected units (each separated by a space or not):
67
77
  - h (\<Duration>15h\</Duration>) (hour)
@@ -127,18 +137,30 @@ a variety of information about a file. Some attributes may be present
127
137
  for some files where others are not, but any supported attribute
128
138
  should at least return `nil`.
129
139
 
140
+
141
+ ## Development
142
+
143
+ ```shell
144
+ bundle install
145
+ irb -I ./lib -r mediainfo
146
+ irb(main):002:0> ::MediaInfo.location
147
+ => "/usr/local/bin/mediainfo"
148
+ ```
149
+
150
+ ### Testing
151
+
152
+ ```shell
153
+ bundle exec rspec
154
+ ```
155
+
130
156
  ## Requirements
131
157
 
132
158
  * Gem version 1.0.0 has been tested on v18.03.1
133
159
  * Gem versions < 1.0.0 require at least: MediaInfoLib v0.7.25
134
160
  * Gem versions <= 0.5.1 worked against MediaInfoLib v0.7.11, which did not generate XML output, and is no longer supported.
135
161
 
136
- ## Contributors
162
+ ## TODO
137
163
 
138
- * Seth Thomas Rasmussen -
139
- [http://github.com/greatseth](http://github.com/greatseth)
140
- * Peter Vandenberk - [http://github.com/pvdb](http://github.com/pvdb)
141
- * Ned Campion - [http://github.com/nedcampion](http://github.com/nedcampion)
142
- * Daniel Jagszent - [http://github.com/d--j](http://github.com/d--j)
143
- * Robert Mrasek - [http://github.com/derobo](http://github.com/derobo)
144
- * Nathan Pierce - [http://github.com/NorseGaud](http://github.com/NorseGaud)
164
+ - Use github actions to test
165
+ - Replace URI.escape cause it's EOL
166
+ - Mocks/Stubs for AWS code? Maybe just disable the tests instead and only test when changing the code?
File without changes
data/lib/mediainfo.rb CHANGED
@@ -3,6 +3,7 @@ require 'net/http'
3
3
  require 'mediainfo/errors'
4
4
  require 'mediainfo/tracks'
5
5
  require 'mediainfo/string'
6
+ require 'open3'
6
7
 
7
8
  module MediaInfo
8
9
 
@@ -25,7 +26,7 @@ module MediaInfo
25
26
  mediainfo_location = ENV['MEDIAINFO_PATH']
26
27
  raise EnvironmentError, "MediaInfo path you provided cannot be found. Please check your mediainfo installation location..." unless ::File.exist? mediainfo_location
27
28
  end
28
- raise EnvironmentError, "MediaInfo binary cannot be found. Are you sure mediainfo is installed?" if which('mediainfo').nil?
29
+ raise EnvironmentError, "MediaInfo binary cannot be found. Are you sure mediainfo is installed?" if mediainfo_location.nil? || mediainfo_location.empty?
29
30
  return mediainfo_location
30
31
  end
31
32
 
@@ -88,9 +89,9 @@ module MediaInfo
88
89
 
89
90
  def self.run(input = nil)
90
91
  raise ArgumentError, 'Your input cannot be blank.' if input.nil?
91
- command = "#{location} '#{input}' --Output=XML"
92
+ command = "#{location} \"#{input}\" --Output=XML"
92
93
  raw_response, errors, status = Open3.capture3(command)
93
- unless errors.empty? && status.exitstatus == 0
94
+ unless status.exitstatus == 0
94
95
  raise ExecutionError, "Execution of '#{command}' failed: \n #{errors.red}"
95
96
  end
96
97
  return raw_response
@@ -109,14 +109,14 @@ module MediaInfo
109
109
  return value.to_f
110
110
  elsif name.downcase.include?('date') && !value.match(/\d-/).nil?
111
111
  # Dates
112
- return Time.parse(value)
112
+ return Time.parse(value.sub(/^UTC\s+(.*)$/, '\1 UTC'))
113
113
  end
114
114
 
115
115
  value
116
116
  end
117
117
 
118
118
  def self.standardize_to_milliseconds(value)
119
- return standardize_float_to_milliseconds(value.to_f) if value.to_f.to_s == value.to_s
119
+ return standardize_float_to_milliseconds(value.to_f) if value =~ /^\d+\.?\d*$/
120
120
  return standardize_string_to_milliseconds(value)
121
121
  value
122
122
  end
@@ -1,3 +1,3 @@
1
1
  module MediaInfo
2
- VERSION = '1.3.0'
3
- end
2
+ VERSION = '1.5.0'
3
+ end
data/mediainfo.gemspec CHANGED
@@ -14,7 +14,6 @@ Gem::Specification.new do |s|
14
14
  s.homepage = %q{https://github.com/greatseth/mediainfo}
15
15
  s.rdoc_options = ['--line-numbers', '--inline-source', '--title', 'Mediainfo', '--main']
16
16
  s.require_paths = ['lib']
17
- s.rubyforge_project = %q{mediainfo}
18
17
  s.summary = %q{MediaInfo is a class wrapping the mediainfo CLI (http://mediainfo.sourceforge.net)}
19
18
  s.files = `git ls-files -z`.split("\x0").reject do |f|
20
19
  f.match(%r{^(test|spec|features)/})
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.3.0
4
+ version: 1.5.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-15 00:00:00.000000000 Z
11
+ date: 2021-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -110,12 +110,12 @@ extra_rdoc_files: []
110
110
  files:
111
111
  - ".gitignore"
112
112
  - ".rspec"
113
- - ".travis.yml"
114
113
  - Changelog
115
114
  - Gemfile
116
115
  - LICENSE
117
116
  - README.md
118
117
  - Rakefile
118
+ - disabled.travis.yml
119
119
  - lib/attribute_standardization_rules.yml
120
120
  - lib/mediainfo.rb
121
121
  - lib/mediainfo/errors.rb
@@ -147,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
147
  - !ruby/object:Gem::Version
148
148
  version: '1.2'
149
149
  requirements: []
150
- rubygems_version: 3.0.3
150
+ rubygems_version: 3.1.4
151
151
  signing_key:
152
152
  specification_version: 3
153
153
  summary: MediaInfo is a class wrapping the mediainfo CLI (http://mediainfo.sourceforge.net)