ehbrs-tools 0.34.0 → 0.35.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: 8ec0a90959fd8dc48f9c799b20af55016cd219efae701640eb2060ff55ceeab9
4
- data.tar.gz: 754779dd2ae2cce3b6495793c975027b6f0240997b42688fbd9d8935caba7920
3
+ metadata.gz: d78056d7a130e8950f026ebe3cf1665570287c56b1786c90d5d5b534d27ce2e2
4
+ data.tar.gz: e1ddc5d688b88dccc0e744763972c67558d75e403e8d25b26c9c16b8318ebd59
5
5
  SHA512:
6
- metadata.gz: f2d1cf8696c59243b3b3756830ec520d762b9fce5f5ae96a94a32c95d001d7420d1fdfd2d14c771208bb3163d3761b5b312383b61a29f48c652a8d63529a9cd3
7
- data.tar.gz: c9225832e1bf272b8c1a8be6bafedce2eaea075c6564d04b0912ce78fc6d63d43571c786bb65202b8651b89f3bf263dff6a42962589f9a0b52d9d40e9f01dbe1
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.34.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.20)
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.20.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.0-x86_64-linux)
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ehbrs
4
4
  module Tools
5
- VERSION = '0.34.0'
5
+ VERSION = '0.35.0'
6
6
  end
7
7
  end
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.34.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-30 00:00:00.000000000 Z
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.20'
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.20'
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