apple_music_library 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/README.md +10 -0
- data/lib/apple_music_library/album.rb +2 -6
- data/lib/apple_music_library/artist.rb +26 -5
- data/lib/apple_music_library/genre.rb +0 -23
- data/lib/apple_music_library/track_collection.rb +28 -2
- data/lib/apple_music_library/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c00fde335b53ca8bacdd13bdbce297b0bea1a7f5f4453f4c42bbe9c867b6c02
|
4
|
+
data.tar.gz: cec158953268525e8142c5a51960d0b79584e646c4e16def0fb2e71cd66b2b7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: debab2473712160521d5bc793b65e3febd984620f53d060e3864285bcb906119b074d645c678fcb4e865ea23ae90b6005eff4ccc89c26a3cfb0d91b556f26199
|
7
|
+
data.tar.gz: 47e7b6381f4d94afda90441cdd975fed9ba6afc6ff09de115e0cd0a1144b0bd9b3582cec0f5f736d394308d6537b5f3e31bba407cde5496b7ace6b5cc59ee6b6
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,10 @@
|
|
3
3
|
## [Unreleased]
|
4
4
|
- Ability to print out playlist folder hierarchy
|
5
5
|
|
6
|
+
## 0.8.0 - 2022-03-13
|
7
|
+
### Added
|
8
|
+
- Ability to sort artists by track count and album count
|
9
|
+
|
6
10
|
## 0.7.0 - 2022-03-12
|
7
11
|
### Added
|
8
12
|
- Average star ratings for track collectsion (albums, playlists, genres)
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -56,6 +56,16 @@ library.artists(:most_played).each do |artist|
|
|
56
56
|
puts "#{artist.play_count} :: #{artist.name}"
|
57
57
|
end
|
58
58
|
|
59
|
+
# List out artists with the most tracks
|
60
|
+
library.artists(:most_tracks).each do |artist|
|
61
|
+
puts "#{artist.track_count} :: #{artist.name}"
|
62
|
+
end
|
63
|
+
|
64
|
+
# List out artists with the most albums
|
65
|
+
library.artists(:most_albums).each do |artist|
|
66
|
+
puts "#{artist.album_count} :: #{artist.name}"
|
67
|
+
end
|
68
|
+
|
59
69
|
# Display track counts per genre
|
60
70
|
library.genres.each do |genre|
|
61
71
|
puts "#{genre.tracks.count} #{genre.name}"
|
@@ -4,14 +4,10 @@ module AppleMusicLibrary
|
|
4
4
|
class Album < TrackCollection
|
5
5
|
attr_reader :artist
|
6
6
|
|
7
|
-
|
8
|
-
attr_reader :artist
|
9
|
-
|
10
7
|
@@albums = {}
|
11
8
|
|
12
|
-
def initialize(
|
9
|
+
def initialize(album_name, artist)
|
13
10
|
@artist = artist
|
14
|
-
@album_name = album_name
|
15
11
|
super
|
16
12
|
end
|
17
13
|
|
@@ -24,7 +20,7 @@ module AppleMusicLibrary
|
|
24
20
|
if @@albums[key]
|
25
21
|
return @@albums[key]
|
26
22
|
end
|
27
|
-
@@albums[key] = self.new(
|
23
|
+
@@albums[key] = self.new(album_name, artist)
|
28
24
|
end
|
29
25
|
|
30
26
|
def id
|
@@ -16,11 +16,15 @@ module AppleMusicLibrary
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def self.most_played(limit = 20)
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
self.sorted_set(:play_count, limit)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.most_tracks(limit = 20)
|
23
|
+
self.sorted_set(:track_count, limit)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.most_albums(limit = 20)
|
27
|
+
self.sorted_set(:album_count, limit)
|
24
28
|
end
|
25
29
|
|
26
30
|
def self.find_or_create(name)
|
@@ -53,13 +57,30 @@ module AppleMusicLibrary
|
|
53
57
|
@albums.sort_by(&:year)
|
54
58
|
end
|
55
59
|
|
60
|
+
def album_count
|
61
|
+
@albums.size
|
62
|
+
end
|
63
|
+
|
56
64
|
def tracks
|
57
65
|
@tracks
|
58
66
|
end
|
59
67
|
|
68
|
+
def track_count
|
69
|
+
@tracks.size
|
70
|
+
end
|
71
|
+
|
60
72
|
def play_count
|
61
73
|
tracks.map(&:play_count).sum
|
62
74
|
end
|
63
75
|
|
76
|
+
protected
|
77
|
+
|
78
|
+
def self.sorted_set(sort_by_method, limit)
|
79
|
+
if limit.nil?
|
80
|
+
self.all.sort_by{|a| a.send(sort_by_method)}.reverse
|
81
|
+
else
|
82
|
+
self.all.sort_by{|a| a.send(sort_by_method)}.reverse.take(limit)
|
83
|
+
end
|
84
|
+
end
|
64
85
|
end
|
65
86
|
end
|
@@ -1,29 +1,6 @@
|
|
1
1
|
module AppleMusicLibrary
|
2
2
|
class Genre < TrackCollection
|
3
3
|
|
4
|
-
attr_reader :name
|
5
|
-
|
6
|
-
@@genres = {}
|
7
|
-
|
8
|
-
def initialize(name)
|
9
|
-
@name = name
|
10
|
-
super
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.all
|
14
|
-
@@genres.values
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.find_or_create(name)
|
18
|
-
if @@genres[name]
|
19
|
-
return @@genres[name]
|
20
|
-
end
|
21
|
-
@@genres[name] = self.new(name)
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.find_by_name(name)
|
25
|
-
@@genres[name]
|
26
|
-
end
|
27
4
|
|
28
5
|
end
|
29
6
|
end
|
@@ -1,10 +1,28 @@
|
|
1
1
|
module AppleMusicLibrary
|
2
2
|
class TrackCollection
|
3
3
|
|
4
|
-
attr_reader :tracks
|
4
|
+
attr_reader :name, :tracks
|
5
5
|
|
6
|
-
|
6
|
+
@@track_collections = {}
|
7
|
+
|
8
|
+
def initialize(name, *args)
|
7
9
|
@tracks = []
|
10
|
+
@name = name
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.all
|
14
|
+
@@track_collections[token].values
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.find_by_name(lookup_name)
|
18
|
+
@@track_collections[token][lookup_name]
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.find_or_create(lookup_name)
|
22
|
+
unless @@track_collections[token]
|
23
|
+
@@track_collections[token] = {}
|
24
|
+
end
|
25
|
+
@@track_collections[token][lookup_name] = self.new(lookup_name)
|
8
26
|
end
|
9
27
|
|
10
28
|
def add_track(track)
|
@@ -22,5 +40,13 @@ module AppleMusicLibrary
|
|
22
40
|
@rated_tracks ||= tracks.select{|t| t.rated?}
|
23
41
|
end
|
24
42
|
|
43
|
+
def self.token
|
44
|
+
self.class.name
|
45
|
+
end
|
46
|
+
|
47
|
+
def token
|
48
|
+
self.class.token
|
49
|
+
end
|
50
|
+
|
25
51
|
end
|
26
52
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apple_music_library
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Todd Gehman
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|