apple_music_library 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d57d33d85a24895e93ca386313d43fe9dd28c6a48bec21fbb4348ec3b168a177
4
- data.tar.gz: d3d0b25dbd54fa23f03cea03b46729224d9b1054da276060a62cac40ab0016e3
3
+ metadata.gz: b67a41ade93ef2a93fb61db6496506bfd4bb57f6df952c7b3c57f91474116fdc
4
+ data.tar.gz: '068639ed7660feb425b667394861d5f295b0f4a211c6cb6c4c2bf4334357649e'
5
5
  SHA512:
6
- metadata.gz: 319fb967951a32d12f0d871c32d40b56a2c4d674bbb8966de6bf6b592da5b5ed0af41f9443caf2b7b222345ded89264af85bdf75694856a8ed7e37162ab706f1
7
- data.tar.gz: 148f0638affc3d19f1c96619e732280966574885fce0c66acc69e083d0cd569200e2a8535f75f96e8ef06b75fdee07b6f0ca82befd0ab8a4bcf914b86af2fff5
6
+ metadata.gz: 62eaabf37c4288bf1dc65fd00ce39b7bd944882c647043cb79df6b5340461109e959e80016d98e74800d170e9f66bc15aa05c01cd887aba3d068366682f5b01f
7
+ data.tar.gz: d8b7ed8641d329c4f33d3aedd0fd2262d021e817ca02aa2bb2d2994c1e91993ab9d9210eb1fd7202dc3b1bd7d6716212daa3d63620b65ed7ed26d5fa865913b8
data/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  ## [Unreleased]
4
4
  - Ability to print out playlist folder hierarchy
5
5
 
6
+ ## 0.10.0 - 2022-03-15
7
+ ### Fixed
8
+ - Fixed incorrect handling of tracks when added to track collections
9
+ ### Added
10
+ - Added Year model to retrieve tracks and track counts per year of release
11
+
6
12
  ## 0.9.0 - 2022-03-15
7
13
  ### Added
8
14
  - Ability to get genres associated with an artist
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- apple_music_library (0.9.0)
4
+ apple_music_library (0.10.0)
5
5
  facets (~> 3.1)
6
6
  plist (~> 3.6)
7
7
 
data/README.md CHANGED
@@ -76,6 +76,12 @@ library.genres.each do |genre|
76
76
  puts "#{genre.track_count} #{genre.name}"
77
77
  end
78
78
 
79
+ # Display track counts per year
80
+ library.years.each do |year|
81
+ puts "#{year.track_count} #{year.name}"
82
+ end
83
+
84
+
79
85
  ```
80
86
  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`.
81
87
 
@@ -42,5 +42,9 @@ module AppleMusicLibrary
42
42
  end
43
43
  end
44
44
 
45
+ def self.token
46
+ :album
47
+ end
48
+
45
49
  end
46
50
  end
@@ -1,6 +1,9 @@
1
1
  module AppleMusicLibrary
2
2
  class Genre < TrackCollection
3
3
 
4
+ def self.token
5
+ :genre
6
+ end
4
7
 
5
8
  end
6
9
  end
@@ -4,6 +4,7 @@ require_relative 'genre'
4
4
  require_relative 'playlist'
5
5
  require_relative 'playlist_folder'
6
6
  require_relative 'track'
7
+ require_relative 'year'
7
8
  require_relative "utils"
8
9
  require 'plist'
9
10
 
@@ -84,6 +85,10 @@ module AppleMusicLibrary
84
85
  Track.find(track_id)
85
86
  end
86
87
 
88
+ def years
89
+ @years ||= Year.all
90
+ end
91
+
87
92
  def valid?
88
93
  has_tracks?
89
94
  end
@@ -59,6 +59,10 @@ module AppleMusicLibrary
59
59
  folder.present?
60
60
  end
61
61
 
62
+ def token
63
+ :playlist
64
+ end
65
+
62
66
  private
63
67
 
64
68
  def load_tracks
@@ -43,6 +43,11 @@ module AppleMusicLibrary
43
43
  # end
44
44
  @genre = Genre.find_or_create(genre_name)
45
45
 
46
+ if year_name.present?
47
+ @year = Year.find_or_create(year_name)
48
+ @year.add_track(self)
49
+ end
50
+
46
51
  @artist.add_track(self)
47
52
  @artist.add_album(@album)
48
53
  @album.add_track(self)
@@ -79,6 +84,10 @@ module AppleMusicLibrary
79
84
  @info['Genre']
80
85
  end
81
86
 
87
+ def year_name
88
+ @info['Year']
89
+ end
90
+
82
91
  def star_rating
83
92
  rating / 20
84
93
  end
@@ -7,7 +7,7 @@ module AppleMusicLibrary
7
7
 
8
8
  def initialize(name, *args)
9
9
  @tracks = []
10
- @name = name
10
+ @name = name.present? ? name : 'Unknown'
11
11
  end
12
12
 
13
13
  def self.all
@@ -19,13 +19,23 @@ module AppleMusicLibrary
19
19
  end
20
20
 
21
21
  def self.find_or_create(lookup_name)
22
+ if lookup_name.blank?
23
+ lookup_name = 'Unknown'
24
+ end
25
+ # puts "Finding or creating #{token}: #{lookup_name}"
22
26
  unless @@track_collections[token]
23
27
  @@track_collections[token] = {}
24
28
  end
29
+ if @@track_collections[token][lookup_name]
30
+ # puts "FOUND"
31
+ return @@track_collections[token][lookup_name]
32
+ end
33
+ # puts "CREATING"
25
34
  @@track_collections[token][lookup_name] = self.new(lookup_name)
26
35
  end
27
36
 
28
37
  def add_track(track)
38
+ # puts "Adding #{track.name} to #{self.class.token} #{name}"
29
39
  @tracks << track
30
40
  end
31
41
 
@@ -44,13 +54,6 @@ module AppleMusicLibrary
44
54
  @rated_tracks ||= tracks.select{|t| t.rated?}
45
55
  end
46
56
 
47
- def self.token
48
- self.class.name
49
- end
50
-
51
- def token
52
- self.class.token
53
- end
54
57
 
55
58
  end
56
59
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppleMusicLibrary
4
- VERSION = "0.9.0"
4
+ VERSION = "0.10.0"
5
5
  end
@@ -0,0 +1,20 @@
1
+ require_relative 'track_collection'
2
+
3
+ module AppleMusicLibrary
4
+ class Year < TrackCollection
5
+
6
+ def self.dump
7
+ self.all.sort_by{|y| y.name}.each do |year|
8
+ puts "#{year.name} - #{year.track_count} tracks"
9
+ # year.tracks.each do |track|
10
+ # puts "\t#{track.name}"
11
+ # end
12
+ end
13
+ end
14
+
15
+ def self.token
16
+ :year
17
+ end
18
+
19
+ end
20
+ 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.9.0
4
+ version: 0.10.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-15 00:00:00.000000000 Z
11
+ date: 2022-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -134,6 +134,7 @@ files:
134
134
  - lib/apple_music_library/track_collection.rb
135
135
  - lib/apple_music_library/utils.rb
136
136
  - lib/apple_music_library/version.rb
137
+ - lib/apple_music_library/year.rb
137
138
  - sig/apple_music_library.rbs
138
139
  homepage: https://github.com/pugetive/apple_music_library
139
140
  licenses:
@@ -157,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
158
  - !ruby/object:Gem::Version
158
159
  version: '0'
159
160
  requirements: []
160
- rubygems_version: 3.3.9
161
+ rubygems_version: 3.3.3
161
162
  signing_key:
162
163
  specification_version: 4
163
164
  summary: Provides a Ruby interface to the information stored in an Apple Music (formerly