mkvtoolnix 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +33 -0
- data/.rubocop.yml +24 -0
- data/CODE_OF_CONDUCT.md +73 -0
- data/Gemfile +12 -0
- data/LICENSE.txt +21 -0
- data/README.md +238 -0
- data/Rakefile +12 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/lib/mkvtoolnix/errors/mkvtoolnix_error.rb +13 -0
- data/lib/mkvtoolnix/extensions/iterable.rb +18 -0
- data/lib/mkvtoolnix/modules/mkv_module.rb +37 -0
- data/lib/mkvtoolnix/modules/mkvextract.rb +152 -0
- data/lib/mkvtoolnix/modules/mkvmerge.rb +33 -0
- data/lib/mkvtoolnix/modules/mkvpropedit.rb +243 -0
- data/lib/mkvtoolnix/propedit_selector.rb +65 -0
- data/lib/mkvtoolnix/types/extract/attachment.rb +18 -0
- data/lib/mkvtoolnix/types/extract/track.rb +17 -0
- data/lib/mkvtoolnix/types/info/attachment.rb +27 -0
- data/lib/mkvtoolnix/types/info/audio.rb +53 -0
- data/lib/mkvtoolnix/types/info/mkv_container.rb +58 -0
- data/lib/mkvtoolnix/types/info/subtitle.rb +51 -0
- data/lib/mkvtoolnix/types/info/video.rb +69 -0
- data/lib/mkvtoolnix/types/propedit/audio_property.rb +17 -0
- data/lib/mkvtoolnix/types/propedit/common_property.rb +29 -0
- data/lib/mkvtoolnix/types/propedit/info_property.rb +17 -0
- data/lib/mkvtoolnix/types/propedit/property.rb +17 -0
- data/lib/mkvtoolnix/types/propedit/subtitle_property.rb +12 -0
- data/lib/mkvtoolnix/types/propedit/video_property.rb +19 -0
- data/lib/mkvtoolnix.rb +70 -0
- data/mkvtoolnix.gemspec +34 -0
- metadata +80 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MkvToolNix
|
4
|
+
module Types
|
5
|
+
module PropEdit
|
6
|
+
module CommonProperty
|
7
|
+
|
8
|
+
TRACK_NUMBER = Property.new('track-number', false)
|
9
|
+
UID = Property.new('track-uid', false)
|
10
|
+
NAME = Property.new('name')
|
11
|
+
CODEC_ID = Property.new('codec-id', false)
|
12
|
+
CODEC_NAME = Property.new('codec-name')
|
13
|
+
CODEC_INHERENT_DELAY = Property.new('codec-delay')
|
14
|
+
FLAG_DEFAULT = Property.new('flag-default')
|
15
|
+
FLAG_ENABLED = Property.new('flag-enabled')
|
16
|
+
FLAG_COMMENTARY = Property.new('flag-commentary')
|
17
|
+
FLAG_HEARING_IMPAIRED = Property.new('flag-hearing-impaired')
|
18
|
+
FLAG_ORIGINAL = Property.new('flag-original')
|
19
|
+
FLAG_TEXT_DESCRIPTIONS = Property.new('flag-text-descriptions')
|
20
|
+
FLAG_VISUAL_IMPAIRED = Property.new('flag-visual-impaired')
|
21
|
+
FLAG_FORCED = Property.new('flag-forced')
|
22
|
+
LANGUAGE = Property.new('language')
|
23
|
+
LANGUAGE_IETF = Property.new('language-ietf')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MkvToolNix
|
4
|
+
module Types
|
5
|
+
module PropEdit
|
6
|
+
module InfoProperty
|
7
|
+
extend Extensions::Iterable
|
8
|
+
|
9
|
+
TITLE = Property.new('title')
|
10
|
+
DATE = Property.new('date')
|
11
|
+
SEGMENT_UUID = Property.new('segment-uid')
|
12
|
+
MUX_APPLICATION = Property.new('muxing-application', false)
|
13
|
+
WRITING_APPLICATION = Property.new('writing-application', false)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MkvToolNix
|
4
|
+
module Types
|
5
|
+
module PropEdit
|
6
|
+
class Property
|
7
|
+
|
8
|
+
attr_reader :property, :removable
|
9
|
+
|
10
|
+
def initialize(property, removable = true)
|
11
|
+
@property = property
|
12
|
+
@removable = removable
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MkvToolNix
|
4
|
+
module Types
|
5
|
+
module PropEdit
|
6
|
+
module VideoProperty
|
7
|
+
include CommonProperty
|
8
|
+
extend Extensions::Iterable
|
9
|
+
|
10
|
+
PIXEL_WIDTH = Property.new('pixel-width', false)
|
11
|
+
PIXEL_HEIGHT = Property.new('pixel-height', false)
|
12
|
+
DISPLAY_WIDTH = Property.new('display-width')
|
13
|
+
DISPLAY_HEIGHT = Property.new('display-height')
|
14
|
+
DISPLAY_UNIT = Property.new('display-unit')
|
15
|
+
STEREO_MODE = Property.new('stereo-mode')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/mkvtoolnix.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'open3'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
require 'mkvtoolnix/errors/mkvtoolnix_error'
|
7
|
+
|
8
|
+
require 'mkvtoolnix/modules/mkv_module'
|
9
|
+
|
10
|
+
require 'mkvtoolnix/extensions/iterable'
|
11
|
+
|
12
|
+
require 'mkvtoolnix/propedit_selector'
|
13
|
+
|
14
|
+
require 'mkvtoolnix/types/propedit/property'
|
15
|
+
require 'mkvtoolnix/types/propedit/common_property'
|
16
|
+
require 'mkvtoolnix/types/propedit/audio_property'
|
17
|
+
require 'mkvtoolnix/types/propedit/video_property'
|
18
|
+
require 'mkvtoolnix/types/propedit/info_property'
|
19
|
+
require 'mkvtoolnix/types/propedit/subtitle_property'
|
20
|
+
|
21
|
+
require 'mkvtoolnix/types/extract/track'
|
22
|
+
require 'mkvtoolnix/types/extract/attachment'
|
23
|
+
|
24
|
+
require 'mkvtoolnix/types/info/mkv_container'
|
25
|
+
require 'mkvtoolnix/types/info/audio'
|
26
|
+
require 'mkvtoolnix/types/info/subtitle'
|
27
|
+
require 'mkvtoolnix/types/info/video'
|
28
|
+
require 'mkvtoolnix/types/info/attachment'
|
29
|
+
|
30
|
+
require 'mkvtoolnix/modules/mkvmerge'
|
31
|
+
require 'mkvtoolnix/modules/mkvpropedit'
|
32
|
+
require 'mkvtoolnix/modules/mkvextract'
|
33
|
+
|
34
|
+
module MkvToolNix
|
35
|
+
|
36
|
+
def self.init
|
37
|
+
mkv_bin_path('')
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.mkv_bin_path(bin_path)
|
41
|
+
bin_path = "#{bin_path}/" if !bin_path.empty? && !bin_path.end_with?('/')
|
42
|
+
MkvToolNix.new(bin_path)
|
43
|
+
end
|
44
|
+
|
45
|
+
class MkvToolNix
|
46
|
+
|
47
|
+
attr_reader :mkvmerge, :mkvpropedit, :mkvextract
|
48
|
+
|
49
|
+
def initialize(bin_path)
|
50
|
+
@mkvmerge = Modules::MkvMerge.new(bin_path)
|
51
|
+
@mkvpropedit = Modules::MkvPropEdit.new(bin_path)
|
52
|
+
@mkvextract = Modules::MkvExtract.new(bin_path)
|
53
|
+
end
|
54
|
+
|
55
|
+
def info(file)
|
56
|
+
@mkvmerge.info(file)
|
57
|
+
end
|
58
|
+
|
59
|
+
def abort_at_warning(abort: true)
|
60
|
+
@mkvpropedit.abort_at_warning = abort
|
61
|
+
@mkvextract.abort_at_warning = abort
|
62
|
+
self
|
63
|
+
end
|
64
|
+
|
65
|
+
def disable_language_ietf(disabled: true)
|
66
|
+
@mkvpropedit.disable_language_ietf = disabled
|
67
|
+
self
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/mkvtoolnix.gemspec
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = 'mkvtoolnix'
|
5
|
+
spec.version = '0.7.0'
|
6
|
+
spec.authors = ['Christian Feier']
|
7
|
+
spec.email = ['Christian.Feier@gmail.com']
|
8
|
+
|
9
|
+
spec.summary = 'A wrapper for MkvToolNix https://mkvtoolnix.download/ to create, alter and inspect MKV files. For more'\
|
10
|
+
' information, please check the github page: https://github.com/cfe86/RubyMkvToolNix'
|
11
|
+
spec.description = 'A wrapper for MkvToolNix https://mkvtoolnix.download/ to create, alter and inspect MKV files.'\
|
12
|
+
'Currently mkvpropedit and mkvextract are fully implemented. mkvmerge is in progress.'
|
13
|
+
spec.homepage = 'https://github.com/cfe86/RubyMkvToolNix'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
spec.required_ruby_version = '>= 2.5.0'
|
16
|
+
|
17
|
+
spec.metadata['homepage_uri'] = 'https://github.com/cfe86/RubyMkvToolNix'
|
18
|
+
spec.metadata['source_code_uri'] = 'https://github.com/cfe86/RubyMkvToolNix'
|
19
|
+
spec.metadata['changelog_uri'] = 'https://github.com/cfe86/RubyMkvToolNix'
|
20
|
+
|
21
|
+
# Specify which files should be added to the gem when it is released.
|
22
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
23
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
24
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
25
|
+
end
|
26
|
+
spec.bindir = 'exe'
|
27
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
28
|
+
spec.require_paths = ['lib']
|
29
|
+
|
30
|
+
# Uncomment to register a new dependency of your gem
|
31
|
+
|
32
|
+
# For more information and examples about making a new gem, checkout our
|
33
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mkvtoolnix
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.7.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Christian Feier
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-11-30 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A wrapper for MkvToolNix https://mkvtoolnix.download/ to create, alter
|
14
|
+
and inspect MKV files.Currently mkvpropedit and mkvextract are fully implemented.
|
15
|
+
mkvmerge is in progress.
|
16
|
+
email:
|
17
|
+
- Christian.Feier@gmail.com
|
18
|
+
executables: []
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- ".gitignore"
|
23
|
+
- ".rubocop.yml"
|
24
|
+
- CODE_OF_CONDUCT.md
|
25
|
+
- Gemfile
|
26
|
+
- LICENSE.txt
|
27
|
+
- README.md
|
28
|
+
- Rakefile
|
29
|
+
- bin/console
|
30
|
+
- bin/setup
|
31
|
+
- lib/mkvtoolnix.rb
|
32
|
+
- lib/mkvtoolnix/errors/mkvtoolnix_error.rb
|
33
|
+
- lib/mkvtoolnix/extensions/iterable.rb
|
34
|
+
- lib/mkvtoolnix/modules/mkv_module.rb
|
35
|
+
- lib/mkvtoolnix/modules/mkvextract.rb
|
36
|
+
- lib/mkvtoolnix/modules/mkvmerge.rb
|
37
|
+
- lib/mkvtoolnix/modules/mkvpropedit.rb
|
38
|
+
- lib/mkvtoolnix/propedit_selector.rb
|
39
|
+
- lib/mkvtoolnix/types/extract/attachment.rb
|
40
|
+
- lib/mkvtoolnix/types/extract/track.rb
|
41
|
+
- lib/mkvtoolnix/types/info/attachment.rb
|
42
|
+
- lib/mkvtoolnix/types/info/audio.rb
|
43
|
+
- lib/mkvtoolnix/types/info/mkv_container.rb
|
44
|
+
- lib/mkvtoolnix/types/info/subtitle.rb
|
45
|
+
- lib/mkvtoolnix/types/info/video.rb
|
46
|
+
- lib/mkvtoolnix/types/propedit/audio_property.rb
|
47
|
+
- lib/mkvtoolnix/types/propedit/common_property.rb
|
48
|
+
- lib/mkvtoolnix/types/propedit/info_property.rb
|
49
|
+
- lib/mkvtoolnix/types/propedit/property.rb
|
50
|
+
- lib/mkvtoolnix/types/propedit/subtitle_property.rb
|
51
|
+
- lib/mkvtoolnix/types/propedit/video_property.rb
|
52
|
+
- mkvtoolnix.gemspec
|
53
|
+
homepage: https://github.com/cfe86/RubyMkvToolNix
|
54
|
+
licenses:
|
55
|
+
- MIT
|
56
|
+
metadata:
|
57
|
+
homepage_uri: https://github.com/cfe86/RubyMkvToolNix
|
58
|
+
source_code_uri: https://github.com/cfe86/RubyMkvToolNix
|
59
|
+
changelog_uri: https://github.com/cfe86/RubyMkvToolNix
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.5.0
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
requirements: []
|
75
|
+
rubygems_version: 3.2.15
|
76
|
+
signing_key:
|
77
|
+
specification_version: 4
|
78
|
+
summary: 'A wrapper for MkvToolNix https://mkvtoolnix.download/ to create, alter and
|
79
|
+
inspect MKV files. For more information, please check the github page: https://github.com/cfe86/RubyMkvToolNix'
|
80
|
+
test_files: []
|