apple_music_library 0.7.0 → 0.8.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 +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
|