ehbrs-tools 0.23.0 → 0.25.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/.avm.yml +4 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +39 -0
  5. data/Gemfile.lock +269 -0
  6. data/exe/ehbrs +2 -2
  7. data/lib/ehbrs/tools/runner/cooking_book/build.rb +52 -0
  8. data/lib/ehbrs/tools/runner/cooking_book.rb +32 -0
  9. data/lib/ehbrs/tools/runner/finances/bb_browser.rb +66 -0
  10. data/lib/ehbrs/{runner/videos/series.rb → tools/runner/finances.rb} +4 -4
  11. data/lib/ehbrs/tools/runner/fs/selected.rb +81 -0
  12. data/lib/ehbrs/tools/runner/fs/used_space.rb +161 -0
  13. data/lib/ehbrs/tools/runner/fs.rb +18 -0
  14. data/lib/ehbrs/tools/runner/google/translate.rb +89 -0
  15. data/lib/ehbrs/tools/runner/google.rb +18 -0
  16. data/lib/ehbrs/tools/runner/music/selected.rb +28 -0
  17. data/lib/ehbrs/tools/runner/music.rb +18 -0
  18. data/lib/ehbrs/tools/runner/self/test.rb +27 -0
  19. data/lib/ehbrs/tools/runner/self.rb +18 -0
  20. data/lib/ehbrs/tools/runner/telegram/send_message.rb +31 -0
  21. data/lib/ehbrs/tools/runner/telegram.rb +28 -0
  22. data/lib/ehbrs/tools/runner/vg/ips.rb +134 -0
  23. data/lib/ehbrs/tools/runner/vg/wii.rb +74 -0
  24. data/lib/ehbrs/tools/runner/vg.rb +18 -0
  25. data/lib/ehbrs/tools/runner/videos/extract.rb +70 -0
  26. data/lib/ehbrs/tools/runner/videos/probe.rb +34 -0
  27. data/lib/ehbrs/tools/runner/videos/series/rename.rb +74 -0
  28. data/lib/ehbrs/tools/runner/videos/series.rb +20 -0
  29. data/lib/ehbrs/tools/runner/videos/unsupported.rb +61 -0
  30. data/lib/ehbrs/{runner/web_utils → tools/runner}/videos.rb +3 -3
  31. data/lib/ehbrs/tools/runner/web_utils/videos/download.rb +75 -0
  32. data/lib/ehbrs/tools/runner/web_utils/videos/upload.rb +77 -0
  33. data/lib/ehbrs/tools/runner/web_utils/videos.rb +20 -0
  34. data/lib/ehbrs/tools/runner/web_utils.rb +26 -0
  35. data/lib/ehbrs/tools/runner.rb +21 -0
  36. data/lib/ehbrs/tools/version.rb +1 -1
  37. data/spec/code/rubocop_spec.rb +3 -0
  38. data/spec/lib/ehbrs/cooking_book/recipe/measure_spec.rb +21 -0
  39. data/spec/lib/ehbrs/observers/base_spec.rb +93 -0
  40. data/spec/lib/ehbrs/tools/runner/fs/used_space_spec.rb +61 -0
  41. data/spec/lib/ehbrs/tools/runner/vg/ips_spec.rb +31 -0
  42. data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/expected.rom +0 -0
  43. data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/patch_0.ips +0 -0
  44. data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/patch_1.ips +0 -0
  45. data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/source.rom +0 -0
  46. data/spec/lib/ehbrs/tools/runner/videos/probe_spec.rb +19 -0
  47. data/spec/lib/ehbrs/tools/runner/videos/probe_spec_files/fixed.target.yaml +105 -0
  48. data/spec/lib/ehbrs/tools/runner/videos/unsupported_spec.rb +75 -0
  49. data/spec/lib/ehbrs/tools/runner/videos/unsupported_spec_files/dts_audio.probe.yaml +90 -0
  50. data/spec/lib/ehbrs/tools/runner_spec.rb +16 -0
  51. data/spec/lib/ehbrs/vg/wii/game_file_spec.rb +21 -0
  52. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec.rb +11 -0
  53. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.source.witdump +27 -0
  54. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.target.yaml +22 -0
  55. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.source.witdump +28 -0
  56. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.target.yaml +21 -0
  57. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.source.witdump +16 -0
  58. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.target.yaml +19 -0
  59. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.source.witdump +28 -0
  60. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.target.yaml +23 -0
  61. data/spec/lib/ehbrs/vg/wii/wit/path_spec.rb +33 -0
  62. data/spec/spec_helper/videos.rb +30 -0
  63. data/spec/spec_helper/videos_files/stub_source.mp4 +0 -0
  64. data/spec/spec_helper.rb +7 -0
  65. data/vendor/aranha-parsers/aranha-parsers.gemspec +2 -2
  66. data/vendor/aranha-parsers/lib/aranha/parsers/rspec/setup.rb +15 -0
  67. data/vendor/aranha-parsers/lib/aranha/parsers/{spec → rspec}/source_target_fixtures_example.rb +0 -0
  68. data/vendor/aranha-parsers/lib/aranha/parsers/rspec.rb +11 -0
  69. data/vendor/aranha-parsers/lib/aranha/parsers/source_address.rb +10 -8
  70. data/vendor/aranha-parsers/lib/aranha/parsers/version.rb +1 -1
  71. data/vendor/aranha-parsers/spec/lib/rubocop_check_spec.rb +1 -1
  72. data/vendor/aranha-parsers/spec/spec_helper.rb +2 -9
  73. data/vendor/aranha-selenium/aranha-selenium.gemspec +2 -2
  74. data/vendor/aranha-selenium/lib/aranha/selenium/version.rb +1 -1
  75. data/vendor/aranha-selenium/spec/rubocop_check_spec.rb +1 -5
  76. data/vendor/aranha-selenium/spec/spec_helper.rb +2 -98
  77. data/vendor/eac_cli/eac_cli.gemspec +3 -3
  78. data/vendor/eac_cli/lib/eac_cli/config/entry.rb +0 -2
  79. data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
  80. data/vendor/eac_cli/spec/rubocop_spec.rb +1 -1
  81. data/vendor/eac_cli/spec/spec_helper.rb +2 -101
  82. data/vendor/eac_config/eac_config.gemspec +2 -2
  83. data/vendor/eac_config/lib/eac_config/version.rb +1 -1
  84. data/vendor/eac_config/spec/rubocop_spec.rb +1 -1
  85. data/vendor/eac_config/spec/spec_helper.rb +2 -15
  86. data/vendor/eac_docker/eac_docker.gemspec +2 -2
  87. data/vendor/eac_docker/lib/eac_docker/container.rb +7 -3
  88. data/vendor/eac_docker/lib/eac_docker/debug.rb +15 -0
  89. data/vendor/eac_docker/lib/eac_docker/images/coded.rb +4 -0
  90. data/vendor/eac_docker/lib/eac_docker/images/templatized.rb +16 -2
  91. data/vendor/eac_docker/lib/eac_docker/rspec/setup.rb +17 -0
  92. data/vendor/eac_docker/lib/eac_docker/rspec.rb +2 -10
  93. data/vendor/eac_docker/lib/eac_docker/version.rb +1 -1
  94. data/vendor/eac_docker/spec/rubocop_spec.rb +1 -1
  95. data/vendor/eac_docker/spec/spec_helper.rb +2 -104
  96. data/vendor/eac_ruby_base0/eac_ruby_base0.gemspec +4 -4
  97. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  98. data/vendor/eac_ruby_base0/spec/rubocop_spec.rb +1 -1
  99. data/vendor/eac_ruby_base0/spec/spec_helper.rb +2 -101
  100. data/vendor/eac_ruby_utils/eac_ruby_utils.gemspec +1 -1
  101. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/boolean.rb +1 -1
  102. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb +15 -3
  103. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +75 -0
  104. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb +35 -0
  105. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/recursive_builder.rb +51 -0
  106. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/default_setup.rb +20 -0
  107. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/conditionals.rb +17 -0
  108. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb +12 -0
  109. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup_manager.rb +49 -0
  110. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  111. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb +65 -0
  112. data/vendor/eac_ruby_utils/spec/rubocop_check_spec.rb +1 -1
  113. data/vendor/eac_ruby_utils/spec/spec_helper.rb +6 -6
  114. data/vendor/ehbrs_ruby_utils/ehbrs_ruby_utils.gemspec +6 -3
  115. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/finances/bb_browser/docker_image.rb +18 -0
  116. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/patches/object/template.rb +6 -0
  117. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/version.rb +1 -1
  118. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/stream.rb +11 -1
  119. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/file/rename.rb +28 -0
  120. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/file.rb +11 -8
  121. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec.rb +13 -0
  122. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.source.yaml +28 -0
  123. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.target.yaml +7 -0
  124. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.source.yaml +49 -0
  125. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.target.yaml +7 -0
  126. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.source.yaml +43 -0
  127. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.target.yaml +7 -0
  128. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.source.yaml +59 -0
  129. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.target.yaml +7 -0
  130. data/vendor/ehbrs_ruby_utils/spec/rubocop_check_spec.rb +1 -5
  131. data/vendor/ehbrs_ruby_utils/spec/spec_helper.rb +2 -98
  132. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/Dockerfile +44 -0
  133. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/Makefile +35 -0
  134. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/README.md +16 -0
  135. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/context/firefox.service +8 -0
  136. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/context/startbrowser.sh +9 -0
  137. metadata +149 -40
  138. data/lib/ehbrs/runner/cooking_book/build.rb +0 -50
  139. data/lib/ehbrs/runner/cooking_book.rb +0 -30
  140. data/lib/ehbrs/runner/finances/bb_browser.rb +0 -35
  141. data/lib/ehbrs/runner/finances.rb +0 -16
  142. data/lib/ehbrs/runner/fs/selected.rb +0 -79
  143. data/lib/ehbrs/runner/fs/used_space.rb +0 -159
  144. data/lib/ehbrs/runner/fs.rb +0 -16
  145. data/lib/ehbrs/runner/google/translate.rb +0 -87
  146. data/lib/ehbrs/runner/google.rb +0 -16
  147. data/lib/ehbrs/runner/music/selected.rb +0 -26
  148. data/lib/ehbrs/runner/music.rb +0 -16
  149. data/lib/ehbrs/runner/self/test.rb +0 -25
  150. data/lib/ehbrs/runner/self.rb +0 -16
  151. data/lib/ehbrs/runner/telegram/send_message.rb +0 -29
  152. data/lib/ehbrs/runner/telegram.rb +0 -26
  153. data/lib/ehbrs/runner/vg/ips.rb +0 -132
  154. data/lib/ehbrs/runner/vg/wii.rb +0 -72
  155. data/lib/ehbrs/runner/vg.rb +0 -16
  156. data/lib/ehbrs/runner/videos/extract.rb +0 -68
  157. data/lib/ehbrs/runner/videos/probe.rb +0 -32
  158. data/lib/ehbrs/runner/videos/series/rename.rb +0 -72
  159. data/lib/ehbrs/runner/videos/unsupported.rb +0 -59
  160. data/lib/ehbrs/runner/videos.rb +0 -16
  161. data/lib/ehbrs/runner/web_utils/videos/download.rb +0 -63
  162. data/lib/ehbrs/runner/web_utils/videos/upload.rb +0 -75
  163. data/lib/ehbrs/runner/web_utils.rb +0 -24
  164. data/lib/ehbrs/runner.rb +0 -19
  165. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/conditional.rb +0 -35
  166. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/stubbed_ssh.rb +0 -44
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.69.0'
4
+ VERSION = '0.74.0'
5
5
  end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/recursive_builder'
4
+
5
+ RSpec.describe ::EacRubyUtils::RecursiveBuilder do
6
+ let(:item_class) do
7
+ ::Class.new do
8
+ class << self
9
+ def create(label, dependencies_keys)
10
+ item = new(label, dependencies_keys)
11
+ registry[item.label] = item
12
+ item
13
+ end
14
+
15
+ def registry
16
+ @registry ||= {}
17
+ end
18
+ end
19
+
20
+ attr_reader :label, :dependencies_keys
21
+
22
+ def initialize(label, dependencies_keys)
23
+ @label = label
24
+ @dependencies_keys = dependencies_keys.freeze
25
+ end
26
+
27
+ def dependencies
28
+ dependencies_keys.map { |key| self.class.registry.fetch(key) }
29
+ end
30
+
31
+ def to_s
32
+ label
33
+ end
34
+ end
35
+ end
36
+
37
+ items = [
38
+ [:a, %w[c], %w[a c]],
39
+ [:b, %w[a], %w[b a c]],
40
+ [:c, [], %w[c]],
41
+ [:d, %w[a b c e], %w[d a b c e]],
42
+ [:e, %w[c b], %w[e c b a]]
43
+ ]
44
+
45
+ items.each do |item|
46
+ let(item[0]) { item_class.create(item[0].to_s, item[1]) }
47
+ before { send(item[0]) }
48
+ end
49
+
50
+ describe '#result' do
51
+ items.each do |item|
52
+ context "when root is \"#{item[0]}\"" do
53
+ let(:root) { send(item[0]) }
54
+ let(:dependencies) { item[2].map { |d| send(d) } }
55
+ let(:builder) do
56
+ described_class.new(root, &:dependencies)
57
+ end
58
+
59
+ it "is #{item[2]}" do
60
+ expect(builder.result).to eq(dependencies)
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- ::EacRubyGemSupport::Rspec.default.describe_rubocop
3
+ ::EacRubyUtils::Rspec.default_setup.describe_rubocop
@@ -3,13 +3,13 @@
3
3
  $LOAD_PATH.push File.expand_path('../lib', __dir__)
4
4
  require 'tmpdir'
5
5
 
6
+ require 'i18n'
7
+ ::I18n.load_path << ::File.join(__dir__, 'locales/pt-BR.yml')
8
+ ::I18n.locale = 'pt-BR'
9
+
6
10
  RSpec.configure do |config|
7
11
  config.example_status_persistence_file_path = ::File.join(::Dir.tmpdir, 'eac_ruby_utils_rspec')
8
12
 
9
- require 'eac_ruby_gem_support/rspec'
10
- ::EacRubyGemSupport::Rspec.setup(::File.expand_path('..', __dir__), config)
13
+ require 'eac_ruby_utils/rspec/default_setup'
14
+ ::EacRubyUtils::Rspec.default_setup_create(::File.expand_path('..', __dir__), config)
11
15
  end
12
-
13
- require 'i18n'
14
- ::I18n.load_path << ::File.join(__dir__, 'locales/pt-BR.yml')
15
- ::I18n.locale = 'pt-BR'
@@ -12,9 +12,12 @@ Gem::Specification.new do |s|
12
12
  s.authors = ['Eduardo H. Bogoni']
13
13
  s.summary = 'Utilities for EHB/RS\'s Ruby projects.'
14
14
 
15
- s.files = Dir['{lib}/**/*']
15
+ s.files = Dir['{lib,template}/**/*']
16
+ s.test_files = Dir['{spec}/**/*', '.rubocop.yml', '.rspec']
16
17
 
17
- s.add_dependency 'eac_ruby_utils', '~> 0.36'
18
+ s.add_dependency 'eac_ruby_utils', '~> 0.70'
19
+ s.add_dependency 'eac_templates', '~> 0.1', '>= 0.1.1'
18
20
 
19
- s.add_development_dependency 'eac_ruby_gem_support', '~> 0.1', '>= 0.1.1'
21
+ s.add_development_dependency 'aranha-parsers', '~> 0.8'
22
+ s.add_development_dependency 'eac_ruby_gem_support', '~> 0.3'
20
23
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_docker/images/templatized'
4
+ require 'ehbrs_ruby_utils/patches/object/template'
5
+
6
+ module EhbrsRubyUtils
7
+ module Finances
8
+ module BbBrowser
9
+ class DockerImage < ::EacDocker::Images::Templatized
10
+ class << self
11
+ def create
12
+ new.tag(name.variableize)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_templates/patches/object/template'
4
+
5
+ ::EacTemplates::Searcher.default.included_paths <<
6
+ ::File.expand_path('../../../../template', __dir__)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EhbrsRubyUtils
4
- VERSION = '0.5.1'
4
+ VERSION = '0.8.1'
5
5
  end
@@ -29,12 +29,18 @@ module EhbrsRubyUtils
29
29
  ffprobe_data
30
30
  end
31
31
 
32
- %i[index codec_name codec_long_name].each do |method_name|
32
+ %i[index].each do |method_name|
33
33
  define_method method_name do
34
34
  ffprobe_data.fetch(method_name)
35
35
  end
36
36
  end
37
37
 
38
+ %i[codec_name codec_long_name].each do |method_name|
39
+ define_method method_name do
40
+ ffprobe_data[method_name]
41
+ end
42
+ end
43
+
38
44
  def codec_type
39
45
  ffprobe_data.fetch(:codec_type).to_sym
40
46
  end
@@ -46,6 +52,10 @@ module EhbrsRubyUtils
46
52
  def language
47
53
  tags[:language]
48
54
  end
55
+
56
+ def title
57
+ tags[:title]
58
+ end
49
59
  end
50
60
  end
51
61
  end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EhbrsRubyUtils
6
+ module WebUtils
7
+ module Videos
8
+ class File < ::SimpleDelegator
9
+ class Rename
10
+ common_constructor :file, :target_path
11
+
12
+ delegate :original_path, to: :file
13
+
14
+ def can_rename?
15
+ ::File.exist?(original_path) && !::File.exist?(target_path)
16
+ end
17
+
18
+ def perform
19
+ return unless can_rename?
20
+
21
+ ::FileUtils.mkdir_p(::File.dirname(target_path))
22
+ ::FileUtils.mv(original_path, target_path)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,11 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'ostruct'
4
+ require 'eac_ruby_utils/core_ext'
4
5
 
5
6
  module EhbrsRubyUtils
6
7
  module WebUtils
7
8
  module Videos
8
9
  class File < ::SimpleDelegator
10
+ require_sub __FILE__
11
+
9
12
  def initialize(data)
10
13
  super(::OpenStruct.new(data))
11
14
  end
@@ -14,12 +17,15 @@ module EhbrsRubyUtils
14
17
  ::File.exist?(original_path)
15
18
  end
16
19
 
17
- def path_changed?
18
- original_path != new_path
20
+ def move(target_dir)
21
+ ::EhbrsRubyUtils::WebUtils::Videos::File::Rename.new(
22
+ self,
23
+ target_dir.to_pathname.join(original_path.to_pathname.relative_path_from(root_path))
24
+ ).perform
19
25
  end
20
26
 
21
- def can_rename?
22
- ::File.exist?(original_path) && !::File.exist?(new_path)
27
+ def path_changed?
28
+ original_path != new_path
23
29
  end
24
30
 
25
31
  def remove
@@ -29,10 +35,7 @@ module EhbrsRubyUtils
29
35
  end
30
36
 
31
37
  def rename
32
- return unless can_rename?
33
-
34
- ::FileUtils.mkdir_p(::File.dirname(new_path))
35
- ::FileUtils.mv(original_path, new_path)
38
+ ::EhbrsRubyUtils::WebUtils::Videos::File::Rename.new(self, new_path).perform
36
39
  end
37
40
  end
38
41
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs_ruby_utils/videos/stream'
4
+
5
+ RSpec.describe ::EhbrsRubyUtils::Videos::Stream do
6
+ include_examples 'source_target_fixtures', __FILE__
7
+
8
+ def source_data(source_file)
9
+ instance = described_class.new(::YAML.load_file(source_file))
10
+ %w[codec_name codec_long_name codec_type index language title]
11
+ .map { |k| [k.to_sym, instance.send(k)] }.sort.to_h
12
+ end
13
+ end
@@ -0,0 +1,28 @@
1
+ ---
2
+ :index: 19
3
+ :codec_type: attachment
4
+ :codec_tag_string: "[0][0][0][0]"
5
+ :codec_tag: '0x0000'
6
+ :r_frame_rate: 0/0
7
+ :avg_frame_rate: 0/0
8
+ :time_base: 1/90000
9
+ :start_pts: 0
10
+ :start_time: '0.000000'
11
+ :duration_ts: 383973120
12
+ :duration: '4266.368000'
13
+ :disposition:
14
+ :default: 0
15
+ :dub: 0
16
+ :original: 0
17
+ :comment: 0
18
+ :lyrics: 0
19
+ :karaoke: 0
20
+ :forced: 0
21
+ :hearing_impaired: 0
22
+ :visual_impaired: 0
23
+ :clean_effects: 0
24
+ :attached_pic: 0
25
+ :timed_thumbnails: 0
26
+ :tags:
27
+ :filename: encoding-source-code.7z
28
+ :mimetype: application/octet-stream
@@ -0,0 +1,7 @@
1
+ ---
2
+ :codec_long_name:
3
+ :codec_name:
4
+ :codec_type: :attachment
5
+ :index: 19
6
+ :language:
7
+ :title:
@@ -0,0 +1,49 @@
1
+ ---
2
+ :index: 18
3
+ :codec_name: aac
4
+ :codec_long_name: AAC (Advanced Audio Coding)
5
+ :profile: LC
6
+ :codec_type: audio
7
+ :codec_time_base: 1/48000
8
+ :codec_tag_string: "[0][0][0][0]"
9
+ :codec_tag: '0x0000'
10
+ :sample_fmt: fltp
11
+ :sample_rate: '48000'
12
+ :channels: 2
13
+ :channel_layout: stereo
14
+ :bits_per_sample: 0
15
+ :r_frame_rate: 0/0
16
+ :avg_frame_rate: 0/0
17
+ :time_base: 1/1000
18
+ :start_pts: 0
19
+ :start_time: '0.000000'
20
+ :disposition:
21
+ :default: 1
22
+ :dub: 0
23
+ :original: 0
24
+ :comment: 0
25
+ :lyrics: 0
26
+ :karaoke: 0
27
+ :forced: 0
28
+ :hearing_impaired: 0
29
+ :visual_impaired: 0
30
+ :clean_effects: 0
31
+ :attached_pic: 0
32
+ :timed_thumbnails: 0
33
+ :tags:
34
+ :language: jpn
35
+ :title: "[AnimeRG] Tenshi No Tamago [1080p] [ScavvyKiD]"
36
+ :BPS: '125375'
37
+ :BPS-eng: '125375'
38
+ :DURATION: '01:11:06.368000000'
39
+ :DURATION-eng: '01:11:06.368000000'
40
+ :NUMBER_OF_FRAMES: '199986'
41
+ :NUMBER_OF_FRAMES-eng: '199986'
42
+ :NUMBER_OF_BYTES: '66861986'
43
+ :NUMBER_OF_BYTES-eng: '66861986'
44
+ :_STATISTICS_WRITING_APP: mkvmerge v8.3.0 ('Over the Horizon') 32bit
45
+ :_STATISTICS_WRITING_APP-eng: mkvmerge v8.3.0 ('Over the Horizon') 32bit
46
+ :_STATISTICS_WRITING_DATE_UTC: '2015-12-04 08:47:49'
47
+ :_STATISTICS_WRITING_DATE_UTC-eng: '2015-12-04 08:47:49'
48
+ :_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
49
+ :_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
@@ -0,0 +1,7 @@
1
+ ---
2
+ :codec_long_name: AAC (Advanced Audio Coding)
3
+ :codec_name: aac
4
+ :codec_type: :audio
5
+ :index: 18
6
+ :language: jpn
7
+ :title: "[AnimeRG] Tenshi No Tamago [1080p] [ScavvyKiD]"
@@ -0,0 +1,43 @@
1
+ ---
2
+ :index: 0
3
+ :codec_name: ass
4
+ :codec_long_name: ASS (Advanced SSA) subtitle
5
+ :codec_type: subtitle
6
+ :codec_time_base: 0/1
7
+ :codec_tag_string: "[0][0][0][0]"
8
+ :codec_tag: '0x0000'
9
+ :r_frame_rate: 0/0
10
+ :avg_frame_rate: 0/0
11
+ :time_base: 1/1000
12
+ :start_pts: 980
13
+ :start_time: '0.980000'
14
+ :disposition:
15
+ :default: 0
16
+ :dub: 0
17
+ :original: 0
18
+ :comment: 0
19
+ :lyrics: 0
20
+ :karaoke: 0
21
+ :forced: 0
22
+ :hearing_impaired: 0
23
+ :visual_impaired: 0
24
+ :clean_effects: 0
25
+ :attached_pic: 0
26
+ :timed_thumbnails: 0
27
+ :tags:
28
+ :language: fre
29
+ :title: French Subs
30
+ :BPS: '19'
31
+ :BPS-eng: '19'
32
+ :DURATION: '01:11:01.020000000'
33
+ :DURATION-eng: '01:11:01.020000000'
34
+ :NUMBER_OF_FRAMES: '134'
35
+ :NUMBER_OF_FRAMES-eng: '134'
36
+ :NUMBER_OF_BYTES: '10267'
37
+ :NUMBER_OF_BYTES-eng: '10267'
38
+ :_STATISTICS_WRITING_APP: mkvmerge v8.3.0 ('Over the Horizon') 32bit
39
+ :_STATISTICS_WRITING_APP-eng: mkvmerge v8.3.0 ('Over the Horizon') 32bit
40
+ :_STATISTICS_WRITING_DATE_UTC: '2015-12-04 08:47:49'
41
+ :_STATISTICS_WRITING_DATE_UTC-eng: '2015-12-04 08:47:49'
42
+ :_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
43
+ :_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
@@ -0,0 +1,7 @@
1
+ ---
2
+ :codec_long_name: ASS (Advanced SSA) subtitle
3
+ :codec_name: ass
4
+ :codec_type: :subtitle
5
+ :index: 0
6
+ :language: fre
7
+ :title: French Subs
@@ -0,0 +1,59 @@
1
+ ---
2
+ :index: 17
3
+ :codec_name: h264
4
+ :codec_long_name: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
5
+ :profile: High
6
+ :codec_type: video
7
+ :codec_time_base: 1001/48000
8
+ :codec_tag_string: "[0][0][0][0]"
9
+ :codec_tag: '0x0000'
10
+ :width: 1920
11
+ :height: 1080
12
+ :coded_width: 1920
13
+ :coded_height: 1088
14
+ :has_b_frames: 2
15
+ :sample_aspect_ratio: '1:1'
16
+ :display_aspect_ratio: '16:9'
17
+ :pix_fmt: yuv420p
18
+ :level: 41
19
+ :chroma_location: left
20
+ :field_order: progressive
21
+ :refs: 1
22
+ :is_avc: 'true'
23
+ :nal_length_size: '4'
24
+ :r_frame_rate: 24000/1001
25
+ :avg_frame_rate: 24000/1001
26
+ :time_base: 1/1000
27
+ :start_pts: 0
28
+ :start_time: '0.000000'
29
+ :bits_per_raw_sample: '8'
30
+ :disposition:
31
+ :default: 1
32
+ :dub: 0
33
+ :original: 0
34
+ :comment: 0
35
+ :lyrics: 0
36
+ :karaoke: 0
37
+ :forced: 0
38
+ :hearing_impaired: 0
39
+ :visual_impaired: 0
40
+ :clean_effects: 0
41
+ :attached_pic: 0
42
+ :timed_thumbnails: 0
43
+ :tags:
44
+ :language: eng
45
+ :title: "[AnimeRG] Tenshi No Tamago [1080p] [ScavvyKiD]"
46
+ :BPS: '3495932'
47
+ :BPS-eng: '3495932'
48
+ :DURATION: '01:11:06.218000000'
49
+ :DURATION-eng: '01:11:06.218000000'
50
+ :NUMBER_OF_FRAMES: '102288'
51
+ :NUMBER_OF_FRAMES-eng: '102288'
52
+ :NUMBER_OF_BYTES: '1864301082'
53
+ :NUMBER_OF_BYTES-eng: '1864301082'
54
+ :_STATISTICS_WRITING_APP: mkvmerge v8.3.0 ('Over the Horizon') 32bit
55
+ :_STATISTICS_WRITING_APP-eng: mkvmerge v8.3.0 ('Over the Horizon') 32bit
56
+ :_STATISTICS_WRITING_DATE_UTC: '2015-12-04 08:47:49'
57
+ :_STATISTICS_WRITING_DATE_UTC-eng: '2015-12-04 08:47:49'
58
+ :_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
59
+ :_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES