ehbrs_ruby_utils 0.9.0 → 0.12.1
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/lib/ehbrs_ruby_utils/core_ext.rb +5 -0
- data/lib/ehbrs_ruby_utils/fs/compressed_package.rb +48 -0
- data/lib/ehbrs_ruby_utils/fs/selected/build.rb +41 -0
- data/lib/ehbrs_ruby_utils/fs/selected/build_file.rb +27 -0
- data/lib/ehbrs_ruby_utils/fs/selected.rb +35 -0
- data/lib/ehbrs_ruby_utils/fs.rb +10 -0
- data/lib/ehbrs_ruby_utils/music/lyrics_book/album.rb +42 -0
- data/lib/ehbrs_ruby_utils/music/lyrics_book/resource.rb +64 -0
- data/lib/ehbrs_ruby_utils/music/lyrics_book/song.rb +68 -0
- data/lib/ehbrs_ruby_utils/music/lyrics_book.rb +65 -0
- data/lib/ehbrs_ruby_utils/music.rb +9 -0
- data/lib/ehbrs_ruby_utils/patches/object.rb +4 -0
- data/lib/ehbrs_ruby_utils/patches.rb +4 -0
- data/lib/ehbrs_ruby_utils/version.rb +1 -1
- data/lib/ehbrs_ruby_utils/videos/container.rb +31 -0
- data/template/ehbrs_ruby_utils/music/lyrics_book/album/inner.html.erb +3 -0
- data/template/ehbrs_ruby_utils/music/lyrics_book/custom_style.css +15 -0
- data/template/ehbrs_ruby_utils/music/lyrics_book/index.html.erb +14 -0
- data/template/ehbrs_ruby_utils/music/lyrics_book/main.html.erb +24 -0
- data/template/ehbrs_ruby_utils/music/lyrics_book/resource/main.html.erb +8 -0
- data/template/ehbrs_ruby_utils/music/lyrics_book/song/inner.html.erb +9 -0
- metadata +103 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b04c8994ff027248ae7a38e28ac25b0b6e895b78c01fbf60ef61eebfe520efd1
|
4
|
+
data.tar.gz: af8ada82641ddd7f247d2d0182d71a1a8a5b0e9bd6931dd3cc136ffa0e058140
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0448fc34d7c469378b4ec8e2251c20c1ba63a8fd6461cab3dfa2520a08d8e76574eb4d19d50cd876d691ee2a4e9b8af45bc09baa5d76132985ac3552e06f3b3
|
7
|
+
data.tar.gz: f4b0758f258963daf7e48a171fecd3774d141c351acb0bbc5d571d732f97255c9628b2852bcfcb3d95cd472d58d29465bf7cb959ac439bc2ebb86c1d9610f92a
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_fs/file_info'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module EhbrsRubyUtils
|
7
|
+
module Fs
|
8
|
+
class CompressedPackage < ::EacFs::FileInfo
|
9
|
+
MIME_TYPES = {
|
10
|
+
'application/zip' => :zip,
|
11
|
+
'application/x-7z-compressed' => :sevenzip,
|
12
|
+
'application/x-rar' => :rar,
|
13
|
+
'application/x-tar' => :tar
|
14
|
+
}.freeze
|
15
|
+
|
16
|
+
def extract_to(target)
|
17
|
+
target = target.to_pathname
|
18
|
+
target.mkpath
|
19
|
+
sub_extract_to(target)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def sub_extract_to(target)
|
25
|
+
MIME_TYPES[content_type.mime_type].if_present do |v|
|
26
|
+
return send("#{v}_extract_command", target).execute!
|
27
|
+
end
|
28
|
+
raise "Unknown how to extract \"#{path}\" (#{content_type})"
|
29
|
+
end
|
30
|
+
|
31
|
+
def sevenzip_extract_command(target_dir)
|
32
|
+
::Ehbrs::Executables.sevenzip.command('x', path, '-o', target_dir)
|
33
|
+
end
|
34
|
+
|
35
|
+
def tar_extract_command(target_dir)
|
36
|
+
::Ehbrs::Executables.tar.command('-xf', path, '-C', target_dir)
|
37
|
+
end
|
38
|
+
|
39
|
+
def rar_extract_command(target_dir)
|
40
|
+
::Ehbrs::Executables.rar.command('x', path.expand_path).chdir(target_dir)
|
41
|
+
end
|
42
|
+
|
43
|
+
def zip_extract_command(target_dir)
|
44
|
+
::Ehbrs::Executables.unzip.command(path, '-d', target_dir)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'ehbrs_ruby_utils/fs/selected/build_file'
|
5
|
+
|
6
|
+
module EhbrsRubyUtils
|
7
|
+
module Fs
|
8
|
+
class Selected
|
9
|
+
class Build
|
10
|
+
DEFAULT_TARGET_BASENAME_PROC = ::Proc.new { |path| path.basename.to_path }
|
11
|
+
|
12
|
+
attr_reader :selected, :target_dir, :target_basename_proc
|
13
|
+
|
14
|
+
def initialize(selected, target_dir, &target_basename_proc)
|
15
|
+
@selected = selected
|
16
|
+
@target_dir = target_dir.to_pathname
|
17
|
+
@target_basename_proc = target_basename_proc.presence || DEFAULT_TARGET_BASENAME_PROC
|
18
|
+
end
|
19
|
+
|
20
|
+
def perform
|
21
|
+
clear_target_dir
|
22
|
+
link_selected_found
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def clear_target_dir
|
28
|
+
target_dir.children.each do |c|
|
29
|
+
c.unlink if c.symlink? && c.directory?
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def link_selected_found
|
34
|
+
selected.found.each do |found|
|
35
|
+
::EhbrsRubyUtils::Fs::Selected::BuildFile.new(self, found).perform
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbrsRubyUtils
|
6
|
+
module Fs
|
7
|
+
class Selected
|
8
|
+
class BuildFile
|
9
|
+
common_constructor :build, :path do
|
10
|
+
self.path = path.to_pathname
|
11
|
+
end
|
12
|
+
|
13
|
+
def perform
|
14
|
+
target_path.make_symlink(path)
|
15
|
+
end
|
16
|
+
|
17
|
+
def target_path
|
18
|
+
build.target_dir.join(target_basename)
|
19
|
+
end
|
20
|
+
|
21
|
+
def target_basename
|
22
|
+
build.target_basename_proc.call(path)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbrsRubyUtils
|
6
|
+
module Fs
|
7
|
+
class Selected
|
8
|
+
require_sub __FILE__
|
9
|
+
DEFAULT_FILENAME = '.selected'
|
10
|
+
|
11
|
+
enable_listable
|
12
|
+
enable_simple_cache
|
13
|
+
lists.add_symbol :option, :filename, :target_name_builder
|
14
|
+
common_constructor :root_path, :options, default: [{}] do
|
15
|
+
self.root_path = root_path.to_pathname
|
16
|
+
self.options = self.class.lists.option.hash_keys_validate!(options)
|
17
|
+
end
|
18
|
+
|
19
|
+
def build(target_dir, &directory_target_basename)
|
20
|
+
::EhbrsRubyUtils::Fs::Selected::Build.new(self, target_dir, &directory_target_basename)
|
21
|
+
end
|
22
|
+
|
23
|
+
def filename
|
24
|
+
options[OPTION_FILENAME].if_present(DEFAULT_FILENAME)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
# @return [Pathname]
|
30
|
+
def found_uncached
|
31
|
+
root_path.glob("**/#{filename}").map(&:parent).sort
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs_ruby_utils/core_ext'
|
4
|
+
require 'ehbrs_ruby_utils/music/lyrics_book/resource'
|
5
|
+
|
6
|
+
module EhbrsRubyUtils
|
7
|
+
module Music
|
8
|
+
class LyricsBook
|
9
|
+
class Album < ::EhbrsRubyUtils::Music::LyricsBook::Resource
|
10
|
+
enable_simple_cache
|
11
|
+
|
12
|
+
def book
|
13
|
+
parent
|
14
|
+
end
|
15
|
+
|
16
|
+
def first_previous
|
17
|
+
previous.if_present { |v| v.songs.last }
|
18
|
+
end
|
19
|
+
|
20
|
+
def valid?
|
21
|
+
songs.any?
|
22
|
+
end
|
23
|
+
|
24
|
+
def header_title
|
25
|
+
"#{songs.first.number}-#{songs.last.number} | #{artist} | #{title}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def artist
|
29
|
+
songs.lazy.map { |v| v.tag.artist }.find(&:present?)
|
30
|
+
end
|
31
|
+
|
32
|
+
def title
|
33
|
+
songs.lazy.map { |v| v.tag.album }.find(&:present?)
|
34
|
+
end
|
35
|
+
|
36
|
+
def songs_uncached
|
37
|
+
::EhbrsRubyUtils::Music::LyricsBook::Song.create_list(self, path.children)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbrsRubyUtils
|
6
|
+
module Music
|
7
|
+
class LyricsBook
|
8
|
+
class Resource
|
9
|
+
class << self
|
10
|
+
def create_list(parent, files)
|
11
|
+
r = files.sort.map { |path| new(parent, path) }.select(&:valid?)
|
12
|
+
previous = parent.first_previous
|
13
|
+
r.map do |e|
|
14
|
+
e.reset_cache
|
15
|
+
e.previous = previous
|
16
|
+
previous = e
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
enable_simple_cache
|
22
|
+
include ::Comparable
|
23
|
+
common_constructor :parent, :path
|
24
|
+
attr_accessor :previous
|
25
|
+
|
26
|
+
def filename
|
27
|
+
path.relative_path_from(parent.path)
|
28
|
+
end
|
29
|
+
|
30
|
+
def <=>(other)
|
31
|
+
path <=> other.path
|
32
|
+
end
|
33
|
+
|
34
|
+
def link_to_header
|
35
|
+
"<a href=\"\##{header_id}\" id=\"#{index_id}\">#{header_title}</a>"
|
36
|
+
end
|
37
|
+
|
38
|
+
def index_id
|
39
|
+
"index_#{header_id}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def header_id
|
43
|
+
header_title.variableize
|
44
|
+
end
|
45
|
+
|
46
|
+
def header_index
|
47
|
+
parent.header_index + 1
|
48
|
+
end
|
49
|
+
|
50
|
+
def output_main
|
51
|
+
::EhbrsRubyUtils::Music::LyricsBook::Resource.erb_template('main.html.erb', binding)
|
52
|
+
end
|
53
|
+
|
54
|
+
def output_index
|
55
|
+
erb_template('index.html.erb')
|
56
|
+
end
|
57
|
+
|
58
|
+
def type
|
59
|
+
self.class.name.demodulize.underscore
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs_ruby_utils/core_ext'
|
4
|
+
require 'ehbrs_ruby_utils/music/lyrics_book/resource'
|
5
|
+
|
6
|
+
module EhbrsRubyUtils
|
7
|
+
module Music
|
8
|
+
class LyricsBook
|
9
|
+
class Song < ::EhbrsRubyUtils::Music::LyricsBook::Resource
|
10
|
+
enable_simple_cache
|
11
|
+
delegate :book, to: :album
|
12
|
+
delegate :provider, to: :book
|
13
|
+
delegate :tag, :to_s, to: :container
|
14
|
+
|
15
|
+
def album
|
16
|
+
parent
|
17
|
+
end
|
18
|
+
|
19
|
+
def lyrics
|
20
|
+
fetch_lyrics unless lyrics_cached?
|
21
|
+
cached_lyrics
|
22
|
+
end
|
23
|
+
|
24
|
+
def valid?
|
25
|
+
tag.present?
|
26
|
+
end
|
27
|
+
|
28
|
+
def lyrics_cached?
|
29
|
+
lyrics_cache.cached?
|
30
|
+
end
|
31
|
+
|
32
|
+
def cached_lyrics
|
33
|
+
::YAML.load_file(lyrics_cache.content_path)
|
34
|
+
end
|
35
|
+
|
36
|
+
def header_title
|
37
|
+
"#{number} - #{title}"
|
38
|
+
end
|
39
|
+
|
40
|
+
delegate :title, to: :tag
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def container_uncached
|
45
|
+
::EhbrsRubyUtils::Videos::Container.new(path)
|
46
|
+
end
|
47
|
+
|
48
|
+
def fetch_lyrics
|
49
|
+
lyrics = fetched_lyrics
|
50
|
+
lyrics_cache.write(lyrics.to_yaml)
|
51
|
+
end
|
52
|
+
|
53
|
+
def fetched_lyrics
|
54
|
+
container.lyrics_by_provider(provider)
|
55
|
+
end
|
56
|
+
|
57
|
+
def lyrics_cache
|
58
|
+
(%w[artist album title].map { |k| tag.send(k) } + [provider.identifier])
|
59
|
+
.inject(fs_cache) { |a, e| a.child(e) }
|
60
|
+
end
|
61
|
+
|
62
|
+
def number_uncached
|
63
|
+
previous.if_present(0, &:number) + 1
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'ehbrs_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbrsRubyUtils
|
6
|
+
module Music
|
7
|
+
class LyricsBook
|
8
|
+
require_sub __FILE__
|
9
|
+
|
10
|
+
DEFAULT_PROVIDER_NAME = 'lyrics.com'
|
11
|
+
DEFAULT_TITLE = 'Letras de músicas'
|
12
|
+
|
13
|
+
enable_listable
|
14
|
+
lists.add_symbol :option, :provider_name, :title
|
15
|
+
enable_simple_cache
|
16
|
+
common_constructor :source_dir, :options, default: [{}] do
|
17
|
+
self.source_dir = source_dir.to_pathname
|
18
|
+
self.options = self.class.lists.option.hash_keys_validate!(options)
|
19
|
+
end
|
20
|
+
|
21
|
+
def first_previous
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def header_index
|
26
|
+
1
|
27
|
+
end
|
28
|
+
|
29
|
+
def output
|
30
|
+
erb_template('main.html.erb')
|
31
|
+
end
|
32
|
+
|
33
|
+
def path
|
34
|
+
source_dir
|
35
|
+
end
|
36
|
+
|
37
|
+
def title
|
38
|
+
options[OPTION_TITLE].if_present(DEFAULT_TITLE)
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def albums_directories_uncached
|
44
|
+
r = []
|
45
|
+
t = ::EacRubyUtils::Fs::Traverser.new
|
46
|
+
t.recursive = true
|
47
|
+
t.check_directory = ->(directory) { r << directory }
|
48
|
+
t.check_path(source_dir)
|
49
|
+
r
|
50
|
+
end
|
51
|
+
|
52
|
+
def albums_uncached
|
53
|
+
::EhbrsRubyUtils::Music::LyricsBook::Album.create_list(self, albums_directories)
|
54
|
+
end
|
55
|
+
|
56
|
+
def provider_uncached
|
57
|
+
::UltimateLyrics::Provider.by_name(provider_name)
|
58
|
+
end
|
59
|
+
|
60
|
+
def provider_name
|
61
|
+
options[OPTION_PROVIDER_NAME].if_present(DEFAULT_PROVIDER_NAME)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -4,23 +4,49 @@ require 'eac_ruby_utils/core_ext'
|
|
4
4
|
require 'ehbrs_ruby_utils/executables'
|
5
5
|
require 'ehbrs_ruby_utils/videos/stream'
|
6
6
|
require 'json'
|
7
|
+
require 'taglib'
|
8
|
+
require 'ultimate_lyrics/provider_search'
|
9
|
+
require 'ultimate_lyrics/song_metadata'
|
7
10
|
|
8
11
|
module EhbrsRubyUtils
|
9
12
|
module Videos
|
10
13
|
class Container
|
14
|
+
class << self
|
15
|
+
def from_file(path)
|
16
|
+
new(path)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
11
20
|
enable_simple_cache
|
12
21
|
common_constructor :path do
|
13
22
|
self.path = path.to_pathname
|
14
23
|
end
|
15
24
|
|
25
|
+
delegate :tag, to: :tag_file
|
26
|
+
delegate :to_s, to: :path
|
27
|
+
|
16
28
|
::EhbrsRubyUtils::Videos::Stream.lists.codec_type.each_value do |stream_type|
|
17
29
|
define_method stream_type.to_s.pluralize do
|
18
30
|
streams.select { |stream| stream.codec_type == stream_type }
|
19
31
|
end
|
20
32
|
end
|
21
33
|
|
34
|
+
# @param provider [UltimateLyrics::Provider]
|
35
|
+
# @return [UltimateLyrics::Lyrics]
|
36
|
+
def lyrics_by_provider(provider)
|
37
|
+
::UltimateLyrics::ProviderSearch.new(provider, song_metadata).lyrics
|
38
|
+
end
|
39
|
+
|
22
40
|
private
|
23
41
|
|
42
|
+
# @return [UltimateLyrics::SongMetadata]
|
43
|
+
def song_metadata_uncached
|
44
|
+
::UltimateLyrics::SongMetadata.new(
|
45
|
+
::UltimateLyrics::SongMetadata::Field.lists.sources.values
|
46
|
+
.map { |source| [source, tag.send(source)] }.to_h
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
24
50
|
def probe_data_uncached
|
25
51
|
::JSON.parse(
|
26
52
|
::EhbrsRubyUtils::Executables.ffprobe.command(
|
@@ -34,6 +60,11 @@ module EhbrsRubyUtils
|
|
34
60
|
::EhbrsRubyUtils::Videos::Stream.new(stream_ffprobe_data)
|
35
61
|
end
|
36
62
|
end
|
63
|
+
|
64
|
+
# @return [TagLib::FileRef]
|
65
|
+
def tag_file_uncached
|
66
|
+
::TagLib::FileRef.new(path.to_path)
|
67
|
+
end
|
37
68
|
end
|
38
69
|
end
|
39
70
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= title %></title>
|
5
|
+
<meta charset="utf-8">
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
7
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
|
8
|
+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
|
9
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css">
|
10
|
+
<style>
|
11
|
+
<%= template.child('custom_style.css').content %>
|
12
|
+
</style>
|
13
|
+
</head>
|
14
|
+
<body>
|
15
|
+
<div class="container" >
|
16
|
+
<h1><%= title %></h1>
|
17
|
+
<h2>Índice</h2>
|
18
|
+
<%= erb_template('index.html.erb') %>
|
19
|
+
<% albums.each do |album| %>
|
20
|
+
<%= album.output_main %>
|
21
|
+
<% end %>
|
22
|
+
</div>
|
23
|
+
</body>
|
24
|
+
</html>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="<%= type %>">
|
2
|
+
<h<%= header_index %> id='<%= header_id %>' >
|
3
|
+
<%= header_title %>
|
4
|
+
<a href="#<%= index_id %>" ><i class="bi-arrow-up-circle-fill"></i></a>
|
5
|
+
</h<%= header_index %>>
|
6
|
+
<span class="filename"><%= filename %></span>
|
7
|
+
<%= erb_template('inner.html.erb') %>
|
8
|
+
</div>
|
metadata
CHANGED
@@ -1,15 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ehbrs_ruby_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo H. Bogoni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: aranha-parsers
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.8'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.8.5
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.8'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.8.5
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: avm
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.3'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.3.2
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0.3'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 0.3.2
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: eac_fs
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0.5'
|
60
|
+
type: :runtime
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0.5'
|
13
67
|
- !ruby/object:Gem::Dependency
|
14
68
|
name: eac_ruby_utils
|
15
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,6 +98,34 @@ dependencies:
|
|
44
98
|
- - ">="
|
45
99
|
- !ruby/object:Gem::Version
|
46
100
|
version: 0.1.1
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: taglib-ruby
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "~>"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '1.1'
|
108
|
+
type: :runtime
|
109
|
+
prerelease: false
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - "~>"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '1.1'
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: ultimate_lyrics
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - "~>"
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0.1'
|
122
|
+
type: :runtime
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - "~>"
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0.1'
|
47
129
|
- !ruby/object:Gem::Dependency
|
48
130
|
name: aranha-parsers
|
49
131
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,8 +163,21 @@ files:
|
|
81
163
|
- ".rspec"
|
82
164
|
- ".rubocop.yml"
|
83
165
|
- lib/ehbrs_ruby_utils.rb
|
166
|
+
- lib/ehbrs_ruby_utils/core_ext.rb
|
84
167
|
- lib/ehbrs_ruby_utils/executables.rb
|
85
168
|
- lib/ehbrs_ruby_utils/finances/bb_browser/docker_image.rb
|
169
|
+
- lib/ehbrs_ruby_utils/fs.rb
|
170
|
+
- lib/ehbrs_ruby_utils/fs/compressed_package.rb
|
171
|
+
- lib/ehbrs_ruby_utils/fs/selected.rb
|
172
|
+
- lib/ehbrs_ruby_utils/fs/selected/build.rb
|
173
|
+
- lib/ehbrs_ruby_utils/fs/selected/build_file.rb
|
174
|
+
- lib/ehbrs_ruby_utils/music.rb
|
175
|
+
- lib/ehbrs_ruby_utils/music/lyrics_book.rb
|
176
|
+
- lib/ehbrs_ruby_utils/music/lyrics_book/album.rb
|
177
|
+
- lib/ehbrs_ruby_utils/music/lyrics_book/resource.rb
|
178
|
+
- lib/ehbrs_ruby_utils/music/lyrics_book/song.rb
|
179
|
+
- lib/ehbrs_ruby_utils/patches.rb
|
180
|
+
- lib/ehbrs_ruby_utils/patches/object.rb
|
86
181
|
- lib/ehbrs_ruby_utils/patches/object/template.rb
|
87
182
|
- lib/ehbrs_ruby_utils/version.rb
|
88
183
|
- lib/ehbrs_ruby_utils/videos.rb
|
@@ -114,6 +209,12 @@ files:
|
|
114
209
|
- template/ehbrs_ruby_utils/finances/bb_browser/docker_image/README.md
|
115
210
|
- template/ehbrs_ruby_utils/finances/bb_browser/docker_image/context/firefox.service
|
116
211
|
- template/ehbrs_ruby_utils/finances/bb_browser/docker_image/context/startbrowser.sh
|
212
|
+
- template/ehbrs_ruby_utils/music/lyrics_book/album/inner.html.erb
|
213
|
+
- template/ehbrs_ruby_utils/music/lyrics_book/custom_style.css
|
214
|
+
- template/ehbrs_ruby_utils/music/lyrics_book/index.html.erb
|
215
|
+
- template/ehbrs_ruby_utils/music/lyrics_book/main.html.erb
|
216
|
+
- template/ehbrs_ruby_utils/music/lyrics_book/resource/main.html.erb
|
217
|
+
- template/ehbrs_ruby_utils/music/lyrics_book/song/inner.html.erb
|
117
218
|
homepage:
|
118
219
|
licenses: []
|
119
220
|
metadata: {}
|