itunes_api 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -3
- data/lib/itunes_api/music/album.rb +30 -2
- data/lib/itunes_api/music/artist.rb +4 -1
- data/lib/itunes_api/music/requests/albums.rb +7 -3
- data/lib/itunes_api/music/results/album.rb +28 -1
- data/lib/itunes_api/music/results/artist.rb +9 -1
- data/lib/itunes_api/music/song.rb +1 -1
- data/lib/itunes_api/music.rb +4 -0
- data/lib/itunes_api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c771828d631c80dd7ef7b555ca9172c79b58baf8
|
4
|
+
data.tar.gz: 60fdc7036173756e07a4f0d64561b8b20b58552f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b5989a5a4b21a7073321545974ae04f55df3d3d504598017ec6e0aba56df4f7c5233a2f7cd6886b5d8e610c2cf29b9f374cac5eb74eaf729669ac20c66e4556
|
7
|
+
data.tar.gz: 11b1ae2aa25b1671dc00f9fb200ab0020876e6a926f2ac8a8cae8774178726a0bc12f1b97478d551db0d51717a125d94ea4758d765b6650174ca056a90607a39
|
data/README.md
CHANGED
@@ -64,6 +64,17 @@ To return only the albums for a specific artist, based on the artist's Apple id
|
|
64
64
|
ItunesApi::Music.albums_for_artist(265766061)
|
65
65
|
```
|
66
66
|
|
67
|
+
To return a specific album, based on the album's collection id
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
ItunesApi::Music.find_by_collection_id(collection_id, store)
|
71
|
+
```
|
72
|
+
|
73
|
+
Note that each request that returns albums does not automatically return songs.
|
74
|
+
They are lazily fetched when calling album.tracklist.
|
75
|
+
|
76
|
+
---
|
77
|
+
|
67
78
|
An argument holding the country code can be used to look into different stores than the default one
|
68
79
|
|
69
80
|
```ruby
|
@@ -76,12 +87,14 @@ ItunesApi::Music.albums_for_artist(265766061, :es)
|
|
76
87
|
## Development
|
77
88
|
|
78
89
|
Ruby version:
|
79
|
-
|
90
|
+
|
91
|
+
```text
|
80
92
|
2.4.1
|
81
93
|
```
|
82
94
|
|
83
95
|
Fork the project, clone the repository and bundle:
|
84
|
-
|
96
|
+
|
97
|
+
```bash
|
85
98
|
>> git clone https://github.com/{your_account}/itunes-api.git
|
86
99
|
>> cd itunes-api
|
87
100
|
```
|
@@ -92,7 +105,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
92
105
|
|
93
106
|
## Contributing
|
94
107
|
|
95
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/mariodarco/itunes-api. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
108
|
+
Bug reports and pull requests are welcome on GitHub at [https://github.com/mariodarco/itunes-api](https://github.com/mariodarco/itunes-api). This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
96
109
|
|
97
110
|
## License
|
98
111
|
|
@@ -3,15 +3,34 @@ module ItunesApi
|
|
3
3
|
module Music
|
4
4
|
# Wrapper for album results.
|
5
5
|
class Album
|
6
|
-
attr_reader_init :
|
6
|
+
attr_reader_init :artist,
|
7
|
+
:artwork,
|
8
|
+
:collection_id,
|
9
|
+
:explicitness,
|
10
|
+
:genre,
|
11
|
+
:link,
|
12
|
+
:name,
|
13
|
+
:release_on,
|
14
|
+
:store,
|
15
|
+
:track_count
|
7
16
|
|
8
17
|
class << self
|
18
|
+
def find_by_collection_id(collection_id, store)
|
19
|
+
result = album(collection_id, store)
|
20
|
+
|
21
|
+
new(*result.attributes) if result
|
22
|
+
end
|
23
|
+
|
9
24
|
def for_artist(apple_id, store)
|
10
25
|
albums(apple_id, store).map { |album| new(*album.attributes) }
|
11
26
|
end
|
12
27
|
|
13
28
|
private
|
14
29
|
|
30
|
+
def album(collection_id, store)
|
31
|
+
Requests::Albums.find_by_collection_id(collection_id, store)
|
32
|
+
end
|
33
|
+
|
15
34
|
def albums(apple_id, store)
|
16
35
|
Requests::Albums.find_by_apple_id(apple_id, store)
|
17
36
|
end
|
@@ -21,14 +40,23 @@ module ItunesApi
|
|
21
40
|
@availability ||= build_availability
|
22
41
|
end
|
23
42
|
|
43
|
+
def explicit?
|
44
|
+
explicitness == 'explicit'
|
45
|
+
end
|
46
|
+
|
24
47
|
def to_hash
|
25
48
|
{
|
49
|
+
artist: artist,
|
26
50
|
artwork: artwork,
|
27
51
|
availability: availability,
|
28
52
|
collection_id: collection_id,
|
53
|
+
explicit: explicit?,
|
54
|
+
genre: genre,
|
55
|
+
link: link,
|
29
56
|
name: name,
|
30
57
|
release_on: release_on,
|
31
|
-
store: store
|
58
|
+
store: store,
|
59
|
+
track_count: track_count
|
32
60
|
}
|
33
61
|
end
|
34
62
|
|
@@ -2,7 +2,7 @@ module ItunesApi
|
|
2
2
|
module Music
|
3
3
|
# Artist or Band from the Apple catalog
|
4
4
|
class Artist
|
5
|
-
attr_reader_init :apple_id, :genre, :name, :store
|
5
|
+
attr_reader_init :amg_id, :apple_id, :genre, :link, :name, :store
|
6
6
|
|
7
7
|
class << self
|
8
8
|
def all_apple_ids(name, store)
|
@@ -33,7 +33,10 @@ module ItunesApi
|
|
33
33
|
|
34
34
|
def to_hash
|
35
35
|
{
|
36
|
+
amg_id: amg_id,
|
36
37
|
apple_id: apple_id,
|
38
|
+
genre: genre,
|
39
|
+
link: link,
|
37
40
|
name: name,
|
38
41
|
store: store
|
39
42
|
}
|
@@ -4,8 +4,8 @@ module ItunesApi
|
|
4
4
|
# Allows querying the API via lookup for albums.
|
5
5
|
class Albums
|
6
6
|
include Request
|
7
|
-
attr_reader_init :
|
8
|
-
selfie :find_by_apple_id
|
7
|
+
attr_reader_init :search_id, :store
|
8
|
+
selfie :find_by_apple_id, :find_by_collection_id
|
9
9
|
|
10
10
|
def find_by_apple_id
|
11
11
|
unwrapped_results.map do |result|
|
@@ -13,6 +13,10 @@ module ItunesApi
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
def find_by_collection_id
|
17
|
+
find_by_apple_id.first
|
18
|
+
end
|
19
|
+
|
16
20
|
private
|
17
21
|
|
18
22
|
def action
|
@@ -21,7 +25,7 @@ module ItunesApi
|
|
21
25
|
|
22
26
|
def query
|
23
27
|
{
|
24
|
-
id:
|
28
|
+
id: search_id,
|
25
29
|
country: store.to_s.upcase,
|
26
30
|
entity: :album,
|
27
31
|
limit: LIMIT
|
@@ -6,22 +6,45 @@ module ItunesApi
|
|
6
6
|
attr_reader_init :data, :store
|
7
7
|
private :data
|
8
8
|
|
9
|
+
def artist
|
10
|
+
@artist ||= data['artistName']
|
11
|
+
end
|
12
|
+
|
9
13
|
def artwork
|
10
14
|
@artwork ||= data['artworkUrl100']
|
11
15
|
end
|
12
16
|
|
13
17
|
def attributes
|
14
|
-
[
|
18
|
+
[
|
19
|
+
artist,
|
20
|
+
artwork,
|
21
|
+
collection_id,
|
22
|
+
explicitness,
|
23
|
+
genre,
|
24
|
+
link,
|
25
|
+
name,
|
26
|
+
release_on,
|
27
|
+
store,
|
28
|
+
track_count
|
29
|
+
]
|
15
30
|
end
|
16
31
|
|
17
32
|
def collection_id
|
18
33
|
@collection_id ||= data['collectionId']
|
19
34
|
end
|
20
35
|
|
36
|
+
def explicitness
|
37
|
+
@explicitness ||= data['collectionExplicitness']
|
38
|
+
end
|
39
|
+
|
21
40
|
def genre
|
22
41
|
@genre ||= data['primaryGenreName']
|
23
42
|
end
|
24
43
|
|
44
|
+
def link
|
45
|
+
@link ||= data['collectionViewUrl']
|
46
|
+
end
|
47
|
+
|
25
48
|
def name
|
26
49
|
@name ||= data['collectionName']
|
27
50
|
end
|
@@ -29,6 +52,10 @@ module ItunesApi
|
|
29
52
|
def release_on
|
30
53
|
@release_on ||= Date.parse(data['releaseDate'])
|
31
54
|
end
|
55
|
+
|
56
|
+
def track_count
|
57
|
+
@track_count ||= data['trackCount']
|
58
|
+
end
|
32
59
|
end
|
33
60
|
end
|
34
61
|
end
|
@@ -6,18 +6,26 @@ module ItunesApi
|
|
6
6
|
attr_reader_init :data, :store, search_term: nil
|
7
7
|
private :data, :search_term
|
8
8
|
|
9
|
+
def amg_id
|
10
|
+
@amg_id ||= data['amgArtistId']
|
11
|
+
end
|
12
|
+
|
9
13
|
def apple_id
|
10
14
|
@apple_id ||= data['artistId']
|
11
15
|
end
|
12
16
|
|
13
17
|
def attributes
|
14
|
-
[apple_id, genre, name, store]
|
18
|
+
[amg_id, apple_id, genre, link, name, store]
|
15
19
|
end
|
16
20
|
|
17
21
|
def genre
|
18
22
|
@genre ||= data['primaryGenreName']
|
19
23
|
end
|
20
24
|
|
25
|
+
def link
|
26
|
+
@link ||= data['artistLinkUrl']
|
27
|
+
end
|
28
|
+
|
21
29
|
def name
|
22
30
|
@name ||= data['artistName']
|
23
31
|
end
|
data/lib/itunes_api/music.rb
CHANGED
data/lib/itunes_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itunes_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario D’Arco
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|