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 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