apple_music_library 0.10.0 → 0.11.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 +5 -1
- data/Gemfile.lock +1 -1
- data/README.md +14 -0
- data/lib/apple_music_library/decade.rb +25 -0
- data/lib/apple_music_library/library.rb +9 -8
- data/lib/apple_music_library/track.rb +3 -0
- data/lib/apple_music_library/track_collection.rb +4 -0
- data/lib/apple_music_library/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b345adc65b1d7e12d09e6a7019a857b8abd77ae831420d92e33266b0106fd61
|
4
|
+
data.tar.gz: a372d17051416b41edfd62095b5f09b35bd0ca580dffbf545650caac9c0283c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1261413cf1b0583017abcc2189f986927820a67faa1d970e70fbe42e4ecf27bfa41adaf3599829f210cbfd5f12b1dda8c544f935405a43dced50f8349f2d7a28
|
7
|
+
data.tar.gz: 1cda8031165413f399bfa1eeaf58187063435f0a5598cf190b11cabc3785d7a45f0ce99d356e3176aad894ba48bcbb911cc183254ff821c136807bb669db867a
|
data/CHANGELOG.md
CHANGED
@@ -3,7 +3,11 @@
|
|
3
3
|
## [Unreleased]
|
4
4
|
- Ability to print out playlist folder hierarchy
|
5
5
|
|
6
|
-
## 0.
|
6
|
+
## 0.11.0 - 2022-03-19
|
7
|
+
### Added
|
8
|
+
- Added Decade model to retrieve track and album info per decade
|
9
|
+
|
10
|
+
## 0.10.0 - 2022-03-16
|
7
11
|
### Fixed
|
8
12
|
- Fixed incorrect handling of tracks when added to track collections
|
9
13
|
### Added
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -81,6 +81,20 @@ library.years.each do |year|
|
|
81
81
|
puts "#{year.track_count} #{year.name}"
|
82
82
|
end
|
83
83
|
|
84
|
+
# Display track counts per decade
|
85
|
+
library.decades.each do |decade|
|
86
|
+
puts "#{decade.track_count} #{decade.name}"
|
87
|
+
end
|
88
|
+
|
89
|
+
# Print a report on all decades in the library
|
90
|
+
# e.g.
|
91
|
+
# 1990-1999 - 7217 tracks on 1030 albums
|
92
|
+
# 2000-2009 - 9083 tracks on 1876 albums
|
93
|
+
# 2010-2019 - 4729 tracks on 1046 albums
|
94
|
+
# 2020-2029 - 1074 tracks on 455 albums
|
95
|
+
library.decades_report
|
96
|
+
|
97
|
+
|
84
98
|
|
85
99
|
```
|
86
100
|
All stored attributes are available via snake_cased methods on `Track` and `Playlist`. However, note that `#artist`, `#album`, and `#genre` are special cases, returning Ruby objects rather than their associated string values. Methods to return the string versions of these track attributes are provided as `track.artist_name`, `track.album_name`, and `track.genre_name`.
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'track_collection'
|
2
|
+
|
3
|
+
module AppleMusicLibrary
|
4
|
+
class Decade < TrackCollection
|
5
|
+
|
6
|
+
def self.report
|
7
|
+
self.all.sort_by{|d| d.name}.each do |decade|
|
8
|
+
puts "#{decade.name} - #{decade.track_count} tracks on #{decade.album_count} albums"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.find_or_create_for(year_name)
|
13
|
+
decade_start_year = year_name.to_i - (year_name.to_i % 10)
|
14
|
+
decade_stop_year = decade_start_year + 9
|
15
|
+
decade_name = "#{decade_start_year}-#{decade_stop_year}"
|
16
|
+
|
17
|
+
self.find_or_create(decade_name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.token
|
21
|
+
:decade
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -1,11 +1,4 @@
|
|
1
|
-
|
2
|
-
require_relative 'artist'
|
3
|
-
require_relative 'genre'
|
4
|
-
require_relative 'playlist'
|
5
|
-
require_relative 'playlist_folder'
|
6
|
-
require_relative 'track'
|
7
|
-
require_relative 'year'
|
8
|
-
require_relative "utils"
|
1
|
+
Dir[File.join(__dir__, '.', '*.rb')].each { |file| require file }
|
9
2
|
require 'plist'
|
10
3
|
|
11
4
|
module AppleMusicLibrary
|
@@ -89,6 +82,14 @@ module AppleMusicLibrary
|
|
89
82
|
@years ||= Year.all
|
90
83
|
end
|
91
84
|
|
85
|
+
def decades
|
86
|
+
@decades ||= Decade.all
|
87
|
+
end
|
88
|
+
|
89
|
+
def decades_report
|
90
|
+
Decade.report
|
91
|
+
end
|
92
|
+
|
92
93
|
def valid?
|
93
94
|
has_tracks?
|
94
95
|
end
|
@@ -43,6 +43,10 @@ module AppleMusicLibrary
|
|
43
43
|
@track_count ||= tracks.count
|
44
44
|
end
|
45
45
|
|
46
|
+
def album_count
|
47
|
+
@ablum_count ||= tracks.map(&:album).uniq.count
|
48
|
+
end
|
49
|
+
|
46
50
|
def star_rating
|
47
51
|
return nil if rated_tracks.empty?
|
48
52
|
rated_tracks.map(&:star_rating).sum / rated_tracks.size
|
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.11.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-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- lib/apple_music_library.rb
|
127
127
|
- lib/apple_music_library/album.rb
|
128
128
|
- lib/apple_music_library/artist.rb
|
129
|
+
- lib/apple_music_library/decade.rb
|
129
130
|
- lib/apple_music_library/genre.rb
|
130
131
|
- lib/apple_music_library/library.rb
|
131
132
|
- lib/apple_music_library/playlist.rb
|