ehbrs-tools 0.29.0 → 0.31.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_fs/cache'
3
+ require 'eac_fs/storage_tree'
4
4
  require 'eac_ruby_utils/fs/temp'
5
5
  require 'ehbrs/tools/runner'
6
6
  require 'ehbrs/tools/runner/fs/used_space'
@@ -9,7 +9,7 @@ require 'ehbrs/observers/with_persistence'
9
9
  RSpec.describe ::Ehbrs::Tools::Runner::Fs::UsedSpace do
10
10
  let(:target) { ::EacRubyUtils::Fs::Temp.directory }
11
11
  let(:user_dir) { ::EacRubyUtils::Fs::Temp.directory }
12
- let(:cached_user_dir) { ::EacFs::Cache.new(user_dir) }
12
+ let(:cached_user_dir) { ::EacFs::StorageTree.new(user_dir) }
13
13
  let(:observers_user_dir) { cached_user_dir.child('observers') }
14
14
  let(:observer_path) do
15
15
  observers_user_dir.child(target.to_s.parameterize).content_path.to_pathname
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.29.0
4
+ version: 0.31.1
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: 2021-12-05 00:00:00.000000000 Z
11
+ date: 2022-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm-tools
@@ -16,88 +16,88 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.82'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 0.82.1
19
+ version: '0.135'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0.82'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 0.82.1
26
+ version: '0.135'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: eac_cli
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
- version: '0.12'
33
+ version: '0.27'
40
34
  - - ">="
41
35
  - !ruby/object:Gem::Version
42
- version: 0.12.5
36
+ version: 0.27.8
43
37
  type: :runtime
44
38
  prerelease: false
45
39
  version_requirements: !ruby/object:Gem::Requirement
46
40
  requirements:
47
41
  - - "~>"
48
42
  - !ruby/object:Gem::Version
49
- version: '0.12'
43
+ version: '0.27'
50
44
  - - ">="
51
45
  - !ruby/object:Gem::Version
52
- version: 0.12.5
46
+ version: 0.27.8
53
47
  - !ruby/object:Gem::Dependency
54
48
  name: eac_ruby_utils
55
49
  requirement: !ruby/object:Gem::Requirement
56
50
  requirements:
57
51
  - - "~>"
58
52
  - !ruby/object:Gem::Version
59
- version: '0.71'
53
+ version: '0.102'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 0.102.1
60
57
  type: :runtime
61
58
  prerelease: false
62
59
  version_requirements: !ruby/object:Gem::Requirement
63
60
  requirements:
64
61
  - - "~>"
65
62
  - !ruby/object:Gem::Version
66
- version: '0.71'
63
+ version: '0.102'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 0.102.1
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: ehbrs_ruby_utils
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '0.8'
73
+ version: '0.17'
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 0.8.1
76
+ version: 0.17.3
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '0.8'
83
+ version: '0.17'
84
84
  - - ">="
85
85
  - !ruby/object:Gem::Version
86
- version: 0.8.1
86
+ version: 0.17.3
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: filesize
89
89
  requirement: !ruby/object:Gem::Requirement
90
90
  requirements:
91
- - - ">="
91
+ - - "~>"
92
92
  - !ruby/object:Gem::Version
93
- version: '0'
93
+ version: '0.2'
94
94
  type: :runtime
95
95
  prerelease: false
96
96
  version_requirements: !ruby/object:Gem::Requirement
97
97
  requirements:
98
- - - ">="
98
+ - - "~>"
99
99
  - !ruby/object:Gem::Version
100
- version: '0'
100
+ version: '0.2'
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: inifile
103
103
  requirement: !ruby/object:Gem::Requirement
@@ -116,30 +116,42 @@ dependencies:
116
116
  name: os
117
117
  requirement: !ruby/object:Gem::Requirement
118
118
  requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '1.1'
119
122
  - - ">="
120
123
  - !ruby/object:Gem::Version
121
- version: '0'
124
+ version: 1.1.4
122
125
  type: :runtime
123
126
  prerelease: false
124
127
  version_requirements: !ruby/object:Gem::Requirement
125
128
  requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.1'
126
132
  - - ">="
127
133
  - !ruby/object:Gem::Version
128
- version: '0'
134
+ version: 1.1.4
129
135
  - !ruby/object:Gem::Dependency
130
136
  name: telegram-bot-ruby
131
137
  requirement: !ruby/object:Gem::Requirement
132
138
  requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: '0.19'
133
142
  - - ">="
134
143
  - !ruby/object:Gem::Version
135
- version: '0'
144
+ version: 0.19.2
136
145
  type: :runtime
137
146
  prerelease: false
138
147
  version_requirements: !ruby/object:Gem::Requirement
139
148
  requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.19'
140
152
  - - ">="
141
153
  - !ruby/object:Gem::Version
142
- version: '0'
154
+ version: 0.19.2
143
155
  - !ruby/object:Gem::Dependency
144
156
  name: eac_ruby_gem_support
145
157
  requirement: !ruby/object:Gem::Requirement
@@ -184,7 +196,6 @@ files:
184
196
  - lib/ehbrs/google/translate.rb
185
197
  - lib/ehbrs/google/translate/session.rb
186
198
  - lib/ehbrs/music.rb
187
- - lib/ehbrs/music/album.rb
188
199
  - lib/ehbrs/observers.rb
189
200
  - lib/ehbrs/observers/base.rb
190
201
  - lib/ehbrs/observers/with_persistence.rb
@@ -213,8 +224,7 @@ files:
213
224
  - lib/ehbrs/tools/runner/music/lyrics.rb
214
225
  - lib/ehbrs/tools/runner/music/lyrics_book.rb
215
226
  - lib/ehbrs/tools/runner/music/selected.rb
216
- - lib/ehbrs/tools/runner/self.rb
217
- - lib/ehbrs/tools/runner/self/test.rb
227
+ - lib/ehbrs/tools/runner/music/spread.rb
218
228
  - lib/ehbrs/tools/runner/telegram.rb
219
229
  - lib/ehbrs/tools/runner/telegram/send_message.rb
220
230
  - lib/ehbrs/tools/runner/vg.rb
@@ -252,16 +262,6 @@ files:
252
262
  - lib/ehbrs/videos/file.rb
253
263
  - lib/ehbrs/videos/profiles/base.rb
254
264
  - lib/ehbrs/videos/profiles/same_quality.rb
255
- - lib/ehbrs/videos/series.rb
256
- - lib/ehbrs/videos/series/rename.rb
257
- - lib/ehbrs/videos/series/rename/directory_group.rb
258
- - lib/ehbrs/videos/series/rename/file.rb
259
- - lib/ehbrs/videos/series/rename/file/basename_parser.rb
260
- - lib/ehbrs/videos/series/rename/file/options.rb
261
- - lib/ehbrs/videos/series/rename/line_result.rb
262
- - lib/ehbrs/videos/series/rename/line_result_group.rb
263
- - lib/ehbrs/videos/series/rename/results_builder.rb
264
- - lib/ehbrs/videos/series/rename/season_group.rb
265
265
  - lib/ehbrs/videos/track.rb
266
266
  - lib/ehbrs/videos/unsupported/check_result.rb
267
267
  - lib/ehbrs/videos/unsupported/check_set.rb
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module Ehbrs
6
- module Music
7
- class Album
8
- include ::Comparable
9
- common_constructor :path do
10
- self.path = path.to_pathname.expand_path
11
- end
12
-
13
- def <=>(other)
14
- to_a <=> other.to_a
15
- end
16
-
17
- def to_a
18
- [category, artist, name]
19
- end
20
-
21
- def to_label
22
- (to_a + [id]).map(&:light_white).join(' | '.blue)
23
- end
24
-
25
- delegate :to_path, to: :path
26
-
27
- def id
28
- [artist, name].join('_').variableize
29
- end
30
-
31
- def name
32
- path.basename.to_s
33
- end
34
-
35
- def artist
36
- path.parent.basename.to_s
37
- end
38
-
39
- def category
40
- path.parent.parent.basename.to_s
41
- end
42
- end
43
- end
44
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_cli/core_ext'
4
- require 'ehbrs/gems'
5
- require 'eac_ruby_gems_utils/tests/multiple'
6
-
7
- module Ehbrs
8
- module Tools
9
- class Runner
10
- class Self
11
- class Test
12
- runner_with :help do
13
- desc 'Test core and local gems.'
14
- end
15
-
16
- def run
17
- fatal_error 'Some test did not pass' unless tests.ok?
18
- end
19
-
20
- def tests_uncached
21
- ::EacRubyGemsUtils::Tests::Multiple.new(::Ehbrs::Gems.all)
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_cli/core_ext'
4
-
5
- module Ehbrs
6
- module Tools
7
- class Runner
8
- class Self
9
- require_sub __FILE__
10
-
11
- runner_with :help, :subcommands do
12
- desc 'Self utilities'
13
- subcommands
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'ehbrs/videos/series/rename/line_result_group'
4
- require 'ehbrs/videos/series/rename/season_group'
5
-
6
- module Ehbrs
7
- module Videos
8
- module Series
9
- module Rename
10
- class DirectoryGroup < LineResultGroup
11
- def line_out
12
- name.light_yellow
13
- end
14
-
15
- protected
16
-
17
- def child_key
18
- :season
19
- end
20
-
21
- def child_class
22
- ::Ehbrs::Videos::Series::Rename::SeasonGroup
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'ehbrs/videos/series/rename/line_result'
4
-
5
- module Ehbrs
6
- module Videos
7
- module Series
8
- module Rename
9
- class File < ::Ehbrs::Videos::Series::Rename::LineResult
10
- module BasenameParser
11
- FORMATS = [{
12
- format: /(\d+)(\d{2})(\d{2})/i,
13
- build: ->(m) { { s: padding(m[1]), e: padding(m[2]) + '-' + padding(m[3]) } }
14
- }, {
15
- format: /s(\d+)e(\d+)-(\d+)/i,
16
- build: ->(m) { { s: padding(m[1]), e: padding(m[2]) + '-' + padding(m[3]) } }
17
- }, {
18
- format: /(\d{1,2})\s*[^\d]\s*(\d{2})/i,
19
- build: ->(m) { { s: padding(m[1]), e: padding(m[2]) } }
20
- }, {
21
- format: /(\d+)(\d{2})/i,
22
- build: ->(m) { { s: padding(m[1]), e: padding(m[2]) } }
23
- }, {
24
- format: /(\d{2})/i,
25
- build: ->(m) { { s: padding(1), e: padding(m[1]) } }
26
- }].freeze
27
-
28
- def self.padding(string)
29
- string.to_s.rjust(2, '0')
30
- end
31
-
32
- def parse_uncached
33
- FORMATS.each do |format|
34
- m = format.fetch(:format).match(current_name)
35
- return format.fetch(:build).call(m) if m
36
- end
37
- nil
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ehbrs
4
- module Videos
5
- module Series
6
- module Rename
7
- class File
8
- class Options
9
- common_constructor :options
10
- delegate :kernel, :confirm, :recursive, :extension, to: :options
11
-
12
- def episode_increment
13
- options.episode_increment.if_present(0, &:to_i)
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,114 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/fs/extname'
4
- require 'ostruct'
5
- require_relative 'line_result'
6
- require_relative 'file/basename_parser'
7
-
8
- module Ehbrs
9
- module Videos
10
- module Series
11
- module Rename
12
- class File < ::Ehbrs::Videos::Series::Rename::LineResult
13
- include ::Ehbrs::Videos::Series::Rename::File::BasenameParser
14
-
15
- attr_reader :file, :options
16
-
17
- def initialize(file, options)
18
- @file = file
19
- @options = options
20
- @options = ::OpenStruct.new(options) if options.is_a?(::Hash)
21
- end
22
-
23
- def rename
24
- target = ::File.expand_path(new_name, dirname)
25
- return if ::File.exist?(target)
26
-
27
- infov 'Renaming', @file
28
- FileUtils.mv(@file, target)
29
- end
30
-
31
- def season
32
- return '??' if parse.blank?
33
-
34
- parse.fetch(:s)
35
- end
36
-
37
- def episode
38
- return '??' if parse.blank?
39
-
40
- parse.fetch(:e)
41
- end
42
-
43
- def dirname
44
- d = @file
45
- while d != '/'
46
- d = ::File.dirname(d)
47
- return ::File.expand_path(d) + '/' unless ::File.basename(d).starts_with?('_')
48
- end
49
- raise "series_dirname not found for #{@file}"
50
- end
51
-
52
- def line_out
53
- "#{episode.green}: " + if new_name == current_name
54
- current_name.light_black
55
- else
56
- "#{new_name} <= #{current_name}"
57
- end
58
- end
59
-
60
- def new_name
61
- return "#{kernel}-s#{parse[:s]}e#{new_name_episodes}#{extension}" if parse.present?
62
-
63
- current_name
64
- end
65
-
66
- private
67
-
68
- def current_name
69
- ::File.expand_path(@file).gsub(/\A#{::Regexp.quote(dirname)}/, '')
70
- end
71
-
72
- def rename?
73
- return false unless new_name
74
-
75
- current_name != new_name
76
- end
77
-
78
- def kernel
79
- options.kernel || kernel_from_directory_name ||
80
- raise("Kernel undefined (File: #{@file})")
81
- end
82
-
83
- def kernel_from_directory_name
84
- dir = ::File.basename(dirname).sub(/\([0-9]+\)/, '')
85
- dir.split(/\W+/).select { |w| /\A[a-z0-9]/.match(w) }.map { |p| p[0].downcase }.join('')
86
- end
87
-
88
- def extension
89
- return options.extension if options.extension
90
-
91
- extension_by_directory || ::EacRubyUtils::Fs.extname2(current_name)
92
- end
93
-
94
- def extension_by_directory
95
- r = ::File.dirname(current_name)
96
- return nil if r == '.'
97
-
98
- r.gsub(/\A_/, '.')
99
- end
100
-
101
- def source_episodes
102
- parse[:e].split('-').map(&:to_i)
103
- end
104
-
105
- def new_name_episodes
106
- source_episodes.map do |i|
107
- (i + options.episode_increment).to_s.rjust(2, '0')
108
- end.join('-')
109
- end
110
- end
111
- end
112
- end
113
- end
114
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module Ehbrs
6
- module Videos
7
- module Series
8
- module Rename
9
- class LineResult
10
- enable_simple_cache
11
- enable_speaker
12
-
13
- def show(level)
14
- out(padding_level(level) + line_out + "\n")
15
- end
16
-
17
- private
18
-
19
- def padding_level(level)
20
- (' ' * level.to_i) + '* '
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'line_result'
4
-
5
- module Ehbrs
6
- module Videos
7
- module Series
8
- module Rename
9
- class LineResultGroup < ::Ehbrs::Videos::Series::Rename::LineResult
10
- attr_reader :name, :children
11
-
12
- def initialize(name, files)
13
- @name = name
14
- @children = build_children(files)
15
- end
16
-
17
- def show(level)
18
- super(level)
19
- children.each do |child|
20
- child.show(level + 1)
21
- end
22
- end
23
-
24
- private
25
-
26
- def build_children(files)
27
- r = {}
28
- files.each do |file|
29
- key = file.send(child_key)
30
- r[key] ||= []
31
- r[key] << file
32
- end
33
- r.sort.map { |v| child_class.new(v[0], v[1]) }
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'ehbrs/videos/series/rename/directory_group'
4
- require 'ehbrs/videos/series/rename/line_result_group'
5
-
6
- module Ehbrs
7
- module Videos
8
- module Series
9
- module Rename
10
- class ResultsBuilder < LineResultGroup
11
- def initialize(files)
12
- super '', files
13
- end
14
-
15
- def line_out
16
- 'Groups: '.cyan + children.count.to_s
17
- end
18
-
19
- protected
20
-
21
- def child_key
22
- :dirname
23
- end
24
-
25
- def child_class
26
- ::Ehbrs::Videos::Series::Rename::DirectoryGroup
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'line_result'
4
-
5
- module Ehbrs
6
- module Videos
7
- module Series
8
- module Rename
9
- class SeasonGroup < ::Ehbrs::Videos::Series::Rename::LineResult
10
- attr_reader :season, :files
11
-
12
- def initialize(season, files)
13
- @season = season
14
- @files = files.sort_by { |f| [f.episode] }
15
- end
16
-
17
- def line_out
18
- 'Season: '.cyan + "#{season} (#{first_episode} - #{last_episode})"
19
- end
20
-
21
- def show(level)
22
- super
23
- files.each { |file| file.show(level + 1) }
24
- end
25
-
26
- private
27
-
28
- def first_episode
29
- files.first.episode
30
- end
31
-
32
- def last_episode
33
- files.last.episode
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module Ehbrs
6
- module Videos
7
- module Series
8
- module Rename
9
- require_sub __FILE__
10
- end
11
- end
12
- end
13
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module Ehbrs
6
- module Videos
7
- module Series
8
- require_sub __FILE__
9
- end
10
- end
11
- end