ehbrs-tools 0.34.0 → 0.35.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 +4 -4
- data/Gemfile.lock +19 -35
- data/lib/ehbrs/tools/runner/videos/languages/file_runner.rb +110 -0
- data/lib/ehbrs/tools/runner/videos/languages/labelized.rb +28 -0
- data/lib/ehbrs/tools/runner/videos/languages/language.rb +24 -0
- data/lib/ehbrs/tools/runner/videos/languages/track.rb +49 -0
- data/lib/ehbrs/tools/runner/videos/languages.rb +73 -0
- data/lib/ehbrs/tools/version.rb +1 -1
- metadata +9 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d78056d7a130e8950f026ebe3cf1665570287c56b1786c90d5d5b534d27ce2e2
|
4
|
+
data.tar.gz: e1ddc5d688b88dccc0e744763972c67558d75e403e8d25b26c9c16b8318ebd59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86648f427adaa4a9b107f12b650332b281455652597c1ab1fc232ca49842b79524c9d2c27ed4077f3e18e03fc63f56e5e7a56963bce5b5ad3699eaea2aa04f30
|
7
|
+
data.tar.gz: b09cbfad7a04969b3cdd4bb616c9ca0de828b654633e0bc3473b9a893923546b30f058541b57132ae5cb8924506a720aa4427d983564088aa4d84894ee4f053e
|
data/Gemfile.lock
CHANGED
@@ -1,43 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ehbrs-tools (0.
|
4
|
+
ehbrs-tools (0.35.0)
|
5
5
|
avm-tools (~> 0.145, >= 0.145.1)
|
6
6
|
eac_cli (~> 0.30, >= 0.30.1)
|
7
7
|
eac_ruby_utils (~> 0.112)
|
8
|
-
ehbrs_ruby_utils (~> 0.
|
8
|
+
ehbrs_ruby_utils (~> 0.21)
|
9
9
|
filesize (~> 0.2)
|
10
10
|
inifile (~> 3.0)
|
11
11
|
os (~> 1.1, >= 1.1.4)
|
12
12
|
telegram-bot-ruby (~> 0.23)
|
13
13
|
|
14
|
-
PATH
|
15
|
-
remote: sub/aranha-parsers
|
16
|
-
specs:
|
17
|
-
aranha-parsers (0.15.0)
|
18
|
-
activesupport (>= 4.0.0)
|
19
|
-
addressable (~> 2.8, >= 2.8.1)
|
20
|
-
eac_ruby_utils (~> 0.112)
|
21
|
-
faraday (~> 2.7, >= 2.7.4)
|
22
|
-
faraday-gzip (~> 0.1)
|
23
|
-
nokogiri (~> 1.14)
|
24
|
-
ofx-parser (~> 1.1)
|
25
|
-
|
26
|
-
PATH
|
27
|
-
remote: sub/aranha-selenium
|
28
|
-
specs:
|
29
|
-
aranha-selenium (0.5.0)
|
30
|
-
eac_ruby_utils (~> 0.106, >= 0.106.1)
|
31
|
-
selenium-webdriver (~> 3.142, >= 3.142.7)
|
32
|
-
|
33
|
-
PATH
|
34
|
-
remote: sub/aranha
|
35
|
-
specs:
|
36
|
-
aranha (0.19.0)
|
37
|
-
aranha-parsers (~> 0.15)
|
38
|
-
aranha-selenium (~> 0.5)
|
39
|
-
eac_ruby_utils (~> 0.112)
|
40
|
-
|
41
14
|
PATH
|
42
15
|
remote: sub/eac_cli
|
43
16
|
specs:
|
@@ -91,7 +64,7 @@ PATH
|
|
91
64
|
PATH
|
92
65
|
remote: sub/ehbrs_ruby_utils
|
93
66
|
specs:
|
94
|
-
ehbrs_ruby_utils (0.
|
67
|
+
ehbrs_ruby_utils (0.21.0)
|
95
68
|
aranha (~> 0.19)
|
96
69
|
aranha-parsers (~> 0.15)
|
97
70
|
avm (~> 0.62)
|
@@ -112,6 +85,21 @@ GEM
|
|
112
85
|
zeitwerk (~> 2.3)
|
113
86
|
addressable (2.8.1)
|
114
87
|
public_suffix (>= 2.0.2, < 6.0)
|
88
|
+
aranha (0.19.0)
|
89
|
+
aranha-parsers (~> 0.15)
|
90
|
+
aranha-selenium (~> 0.5)
|
91
|
+
eac_ruby_utils (~> 0.112)
|
92
|
+
aranha-parsers (0.15.0)
|
93
|
+
activesupport (>= 4.0.0)
|
94
|
+
addressable (~> 2.8, >= 2.8.1)
|
95
|
+
eac_ruby_utils (~> 0.112)
|
96
|
+
faraday (~> 2.7, >= 2.7.4)
|
97
|
+
faraday-gzip (~> 0.1)
|
98
|
+
nokogiri (~> 1.14)
|
99
|
+
ofx-parser (~> 1.1)
|
100
|
+
aranha-selenium (0.5.0)
|
101
|
+
eac_ruby_utils (~> 0.106, >= 0.106.1)
|
102
|
+
selenium-webdriver (~> 3.142, >= 3.142.7)
|
115
103
|
ast (2.4.2)
|
116
104
|
avm (0.62.0)
|
117
105
|
aranha-parsers (~> 0.14, >= 0.14.4)
|
@@ -210,7 +198,6 @@ GEM
|
|
210
198
|
rchardet (~> 1.8)
|
211
199
|
hpricot (0.8.6)
|
212
200
|
htmlbeautifier (1.4.2)
|
213
|
-
httpclient (2.8.3)
|
214
201
|
i18n (1.12.0)
|
215
202
|
concurrent-ruby (~> 1.0)
|
216
203
|
ice_nine (0.11.2)
|
@@ -220,7 +207,7 @@ GEM
|
|
220
207
|
minitest (5.17.0)
|
221
208
|
multipart-post (2.3.0)
|
222
209
|
net-ssh (4.2.0)
|
223
|
-
nokogiri (1.14.
|
210
|
+
nokogiri (1.14.1-x86_64-linux)
|
224
211
|
racc (~> 1.4)
|
225
212
|
ofx-parser (1.1.0)
|
226
213
|
hpricot (>= 0.6)
|
@@ -293,9 +280,6 @@ PLATFORMS
|
|
293
280
|
x86_64-linux
|
294
281
|
|
295
282
|
DEPENDENCIES
|
296
|
-
aranha!
|
297
|
-
aranha-parsers!
|
298
|
-
aranha-selenium!
|
299
283
|
eac_cli!
|
300
284
|
eac_docker!
|
301
285
|
eac_rest!
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Ehbrs
|
6
|
+
module Tools
|
7
|
+
class Runner
|
8
|
+
class Videos
|
9
|
+
class Languages
|
10
|
+
class FileRunner
|
11
|
+
enable_simple_cache
|
12
|
+
enable_speaker
|
13
|
+
common_constructor :runner, :file do
|
14
|
+
run
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def run
|
20
|
+
start_banner
|
21
|
+
extract_check || delete_check
|
22
|
+
end
|
23
|
+
|
24
|
+
def start_banner
|
25
|
+
infov 'File', file
|
26
|
+
infov " * Tracks (#{tracks.count})", tracks.map(&:to_label).join(', ')
|
27
|
+
infov " * Languages (#{languages.count})", languages.map(&:to_label).join(', ')
|
28
|
+
end
|
29
|
+
|
30
|
+
def tracks_uncached
|
31
|
+
audios_if_selected + subtitles_if_selected
|
32
|
+
end
|
33
|
+
|
34
|
+
def audios_if_selected
|
35
|
+
return [] unless runner.include_audios?
|
36
|
+
|
37
|
+
container.audios.map do |s|
|
38
|
+
::Ehbrs::Tools::Runner::Videos::Languages::Track.new(runner, s, file)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def subtitles_if_selected
|
43
|
+
return [] unless runner.include_subtitles?
|
44
|
+
|
45
|
+
container.subtitles.map do |s|
|
46
|
+
::Ehbrs::Tools::Runner::Videos::Languages::Track.new(runner, s, file)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def included_tracks_uncached
|
51
|
+
tracks.select(&:included?)
|
52
|
+
end
|
53
|
+
|
54
|
+
def container_uncached
|
55
|
+
::EhbrsRubyUtils::Videos::Container.new(file)
|
56
|
+
end
|
57
|
+
|
58
|
+
def track_label(track)
|
59
|
+
track.to_s.green
|
60
|
+
end
|
61
|
+
|
62
|
+
def languages_uncached
|
63
|
+
::Set.new(
|
64
|
+
tracks.map do |s|
|
65
|
+
::Ehbrs::Tools::Runner::Videos::Languages::Language.new(runner, s.language)
|
66
|
+
end
|
67
|
+
).to_a.sort
|
68
|
+
end
|
69
|
+
|
70
|
+
def delete_check
|
71
|
+
return unless runner.delete?
|
72
|
+
|
73
|
+
infov 'Delete args', ::Shellwords.join(delete_tracks_job_args)
|
74
|
+
delete_tracks_job.run
|
75
|
+
end
|
76
|
+
|
77
|
+
def delete_tracks_job_uncached
|
78
|
+
::EhbrsRubyUtils::Videos::ConvertJob.new(file, delete_tracks_job_args)
|
79
|
+
end
|
80
|
+
|
81
|
+
def delete_tracks_job_args
|
82
|
+
%w[-map 0] + tracks.flat_map(&:delete_ffmpeg_args) + %w[-c copy]
|
83
|
+
end
|
84
|
+
|
85
|
+
def extract_check
|
86
|
+
return false unless runner.extract?
|
87
|
+
|
88
|
+
unless included_tracks.any?
|
89
|
+
infom 'No selected tracks'
|
90
|
+
return true
|
91
|
+
end
|
92
|
+
|
93
|
+
infov 'Extract args', ::Shellwords.join(extract_tracks_job_args)
|
94
|
+
extract_tracks_command.system!
|
95
|
+
true
|
96
|
+
end
|
97
|
+
|
98
|
+
def extract_tracks_job_args
|
99
|
+
['-txt_format', 'text', '-i', file] + tracks.flat_map(&:extract_ffmpeg_args)
|
100
|
+
end
|
101
|
+
|
102
|
+
def extract_tracks_command_uncached
|
103
|
+
::Ehbrs::Executables.ffmpeg.command(*extract_tracks_job_args)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Ehbrs
|
6
|
+
module Tools
|
7
|
+
class Runner
|
8
|
+
class Videos
|
9
|
+
class Languages
|
10
|
+
class Labelized < ::SimpleDelegator
|
11
|
+
attr_reader :runner
|
12
|
+
|
13
|
+
def initialize(runner, object)
|
14
|
+
@runner = runner
|
15
|
+
super(object)
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_label
|
19
|
+
return to_s unless runner.keep_languages?
|
20
|
+
|
21
|
+
to_s.colorize(runner.keep_languages.include?(language) ? :green : :red)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'ehbrs/tools/runner/videos/languages/labelized'
|
5
|
+
|
6
|
+
module Ehbrs
|
7
|
+
module Tools
|
8
|
+
class Runner
|
9
|
+
class Videos
|
10
|
+
class Languages
|
11
|
+
class Language < ::Ehbrs::Tools::Runner::Videos::Languages::Labelized
|
12
|
+
def to_s
|
13
|
+
__getobj__
|
14
|
+
end
|
15
|
+
|
16
|
+
def language
|
17
|
+
__getobj__
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'ehbrs/tools/runner/videos/languages/labelized'
|
5
|
+
|
6
|
+
module Ehbrs
|
7
|
+
module Tools
|
8
|
+
class Runner
|
9
|
+
class Videos
|
10
|
+
class Languages
|
11
|
+
class Track < ::Ehbrs::Tools::Runner::Videos::Languages::Labelized
|
12
|
+
BLANK_LANGUAGE = 'BLANK'
|
13
|
+
|
14
|
+
attr_reader :file
|
15
|
+
|
16
|
+
def initialize(runner, object, file)
|
17
|
+
super(runner, object)
|
18
|
+
@file = file
|
19
|
+
end
|
20
|
+
|
21
|
+
def delete_ffmpeg_args
|
22
|
+
return [] if included?
|
23
|
+
|
24
|
+
['-map', "-0:#{index}"]
|
25
|
+
end
|
26
|
+
|
27
|
+
def extract_ffmpeg_args
|
28
|
+
return [] unless included?
|
29
|
+
|
30
|
+
['-map', "0:#{index}", extract_target]
|
31
|
+
end
|
32
|
+
|
33
|
+
def included?
|
34
|
+
runner.keep_languages.include?(language)
|
35
|
+
end
|
36
|
+
|
37
|
+
def language
|
38
|
+
language_with_title.presence || BLANK_LANGUAGE
|
39
|
+
end
|
40
|
+
|
41
|
+
def extract_target
|
42
|
+
file.basename_sub('.*') { |b| "#{b}.#{language}_#{index}.srt" }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_base0/core_ext'
|
4
|
+
require 'ehbrs/executables'
|
5
|
+
require 'ehbrs_ruby_utils/videos/container'
|
6
|
+
require 'ehbrs_ruby_utils/videos/convert_job'
|
7
|
+
|
8
|
+
module Ehbrs
|
9
|
+
module Tools
|
10
|
+
class Runner
|
11
|
+
class Videos
|
12
|
+
class Languages
|
13
|
+
runner_with :help, :filesystem_traverser do
|
14
|
+
desc 'Lê e modifica trilhas com idiomas de um vídeo.'
|
15
|
+
bool_opt '-a', '--audios', 'Seleciona áudios.'
|
16
|
+
bool_opt '-d', '--delete', 'Remove trilhas selecionadas.'
|
17
|
+
bool_opt '-e', '--extract', 'Extrai trilhas selecionadas'
|
18
|
+
arg_opt '-k', '--keep', 'Mantém legendas com o idioma especificado.', repeat: true
|
19
|
+
bool_opt '-s', '--subtitles', 'Seleciona legendas.'
|
20
|
+
end
|
21
|
+
|
22
|
+
def keep_languages?
|
23
|
+
keep_languages.any?
|
24
|
+
end
|
25
|
+
|
26
|
+
delegate :delete?, :extract?, to: :parsed
|
27
|
+
|
28
|
+
def run
|
29
|
+
infov 'Keep', keep_languages
|
30
|
+
all_languages_banner
|
31
|
+
end
|
32
|
+
|
33
|
+
def keep_languages
|
34
|
+
parsed.keep.map(&:strip).reject(&:blank?)
|
35
|
+
end
|
36
|
+
|
37
|
+
def include_audios?
|
38
|
+
parsed.audios?
|
39
|
+
end
|
40
|
+
|
41
|
+
def include_subtitles?
|
42
|
+
parsed.subtitles?
|
43
|
+
end
|
44
|
+
|
45
|
+
def traverser_check_file(file)
|
46
|
+
@files << ::Ehbrs::Tools::Runner::Videos::Languages::FileRunner.new(self, file)
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def all_languages_uncached
|
52
|
+
::Set.new(files.flat_map(&:languages)).to_a.sort
|
53
|
+
end
|
54
|
+
|
55
|
+
def all_languages_banner
|
56
|
+
infov 'Languages', all_languages.count
|
57
|
+
all_languages.each do |language|
|
58
|
+
infov ' * ', language.to_label
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def files_uncached
|
63
|
+
@files = []
|
64
|
+
run_filesystem_traverser
|
65
|
+
@files
|
66
|
+
end
|
67
|
+
|
68
|
+
require_sub __FILE__
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/lib/ehbrs/tools/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ehbrs-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.35.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-01
|
11
|
+
date: 2023-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: avm-tools
|
@@ -70,14 +70,14 @@ dependencies:
|
|
70
70
|
requirements:
|
71
71
|
- - "~>"
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version: '0.
|
73
|
+
version: '0.21'
|
74
74
|
type: :runtime
|
75
75
|
prerelease: false
|
76
76
|
version_requirements: !ruby/object:Gem::Requirement
|
77
77
|
requirements:
|
78
78
|
- - "~>"
|
79
79
|
- !ruby/object:Gem::Version
|
80
|
-
version: '0.
|
80
|
+
version: '0.21'
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: filesize
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -220,6 +220,11 @@ files:
|
|
220
220
|
- lib/ehbrs/tools/runner/vg/wii.rb
|
221
221
|
- lib/ehbrs/tools/runner/videos.rb
|
222
222
|
- lib/ehbrs/tools/runner/videos/extract.rb
|
223
|
+
- lib/ehbrs/tools/runner/videos/languages.rb
|
224
|
+
- lib/ehbrs/tools/runner/videos/languages/file_runner.rb
|
225
|
+
- lib/ehbrs/tools/runner/videos/languages/labelized.rb
|
226
|
+
- lib/ehbrs/tools/runner/videos/languages/language.rb
|
227
|
+
- lib/ehbrs/tools/runner/videos/languages/track.rb
|
223
228
|
- lib/ehbrs/tools/runner/videos/opensubtitles.rb
|
224
229
|
- lib/ehbrs/tools/runner/videos/probe.rb
|
225
230
|
- lib/ehbrs/tools/runner/videos/series.rb
|