nashville 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +46 -0
- data/LICENSE +19 -0
- data/README.md +97 -0
- data/Rakefile +9 -0
- data/bin/its +88 -0
- data/lib/nashville.rb +3 -0
- data/lib/nashville/client.rb +36 -0
- data/lib/nashville/media.rb +92 -0
- data/lib/nashville/media/audio_book.rb +9 -0
- data/lib/nashville/media/ebook.rb +6 -0
- data/lib/nashville/media/movie.rb +9 -0
- data/lib/nashville/media/music.rb +24 -0
- data/lib/nashville/media/podcast.rb +9 -0
- data/lib/nashville/media/short_film.rb +9 -0
- data/lib/nashville/media/software.rb +12 -0
- data/lib/nashville/media/tv_show.rb +12 -0
- data/lib/nashville/version.rb +3 -0
- data/nashville.gemspec +29 -0
- metadata +161 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 65bdcc757a28ad998b1ebb23fcddc84d97953d38
|
4
|
+
data.tar.gz: ebcbb2664e78721c41ceaf8cca7e39150fc5f94b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 674f00c3f0d4e0c73ba53022d6a7dc42abbfe6084e910ae17eb703c41449ebebc5c4034a07d794acb0a9cba4d07553331bc2e33875fc7dc1e7bf1742106d76fa
|
7
|
+
data.tar.gz: dccaab5326c12d41e89650db1e7f4c6cbb6a701c8d4e1c02e7f020e073a233603fd67f5dacee8d96d16bda015c78fa2f57fd542a83b08bd5f2aacb2a414b4689
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
nashville (0.0.1)
|
5
|
+
commander (~> 4.1)
|
6
|
+
json
|
7
|
+
rash
|
8
|
+
terminal-table (~> 1.4)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: https://rubygems.org/
|
12
|
+
specs:
|
13
|
+
commander (4.1.5)
|
14
|
+
highline (~> 1.6.11)
|
15
|
+
diff-lcs (1.2.5)
|
16
|
+
docile (1.1.2)
|
17
|
+
hashie (2.0.5)
|
18
|
+
highline (1.6.20)
|
19
|
+
json (1.8.1)
|
20
|
+
multi_json (1.8.4)
|
21
|
+
rake (10.1.1)
|
22
|
+
rash (0.4.0)
|
23
|
+
hashie (~> 2.0.0)
|
24
|
+
rspec (2.14.1)
|
25
|
+
rspec-core (~> 2.14.0)
|
26
|
+
rspec-expectations (~> 2.14.0)
|
27
|
+
rspec-mocks (~> 2.14.0)
|
28
|
+
rspec-core (2.14.7)
|
29
|
+
rspec-expectations (2.14.4)
|
30
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
31
|
+
rspec-mocks (2.14.4)
|
32
|
+
simplecov (0.8.2)
|
33
|
+
docile (~> 1.1.0)
|
34
|
+
multi_json
|
35
|
+
simplecov-html (~> 0.8.0)
|
36
|
+
simplecov-html (0.8.0)
|
37
|
+
terminal-table (1.4.5)
|
38
|
+
|
39
|
+
PLATFORMS
|
40
|
+
ruby
|
41
|
+
|
42
|
+
DEPENDENCIES
|
43
|
+
nashville!
|
44
|
+
rake
|
45
|
+
rspec
|
46
|
+
simplecov
|
data/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2014 Mattt Thompson (http://mattt.me/)
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
|
2
|
+
Nashville is a wrapper and command line interface for querying the iTunes Store API.
|
3
|
+
|
4
|
+
> Nashville is named for the [famed home of the entertainment industry](http://en.wikipedia.org/wiki/Nashville), in [Los Angeles, California](http://en.wikipedia.org/wiki/Los_Angeles).
|
5
|
+
> It's part of a series of world-class command-line utilities for iOS development, which includes [Cupertino](https://github.com/mattt/cupertino) (Apple Dev Center management), [Shenzhen](https://github.com/mattt/shenzhen) (Building & Distribution), [Houston](https://github.com/mattt/houston) (Push Notifications), [Venice](https://github.com/mattt/venice) (In-App Purchase Verification), and [Dubai](https://github.com/mattt/dubai) (Passbook pass generation).
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
$ gem install nashville
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
require 'nashville'
|
15
|
+
|
16
|
+
Nashville::Movie.search(director: "Wes Anderson")
|
17
|
+
|
18
|
+
Nashville::Music::Artist.search(artist: "Miles Davis", limit: 5)
|
19
|
+
```
|
20
|
+
|
21
|
+
## Command Line Interface
|
22
|
+
|
23
|
+
Nashville also comes with the `its` binary, which allows you to query the iTunes Store from the command line:
|
24
|
+
|
25
|
+
$ its search --help
|
26
|
+
|
27
|
+
Usage: its search QUERY
|
28
|
+
|
29
|
+
Examples:
|
30
|
+
|
31
|
+
# search
|
32
|
+
its search "Jamiroquai"
|
33
|
+
|
34
|
+
Options:
|
35
|
+
-m, --media MEDIA The media type to search for
|
36
|
+
-e, --entity ENTITY The type of results to be returned, relative to the specified media type.
|
37
|
+
-a, --attribute ATTRIBUTE The attribute to be searched for in the stores, relative to the specified media type.
|
38
|
+
|
39
|
+
--limit LIMIT The maximum number of results to return.
|
40
|
+
--language LANGUAGE The language, English or Japanese, to use when returning search results.
|
41
|
+
-p, --secret SECRET Use a shared secret for auto-renewable subscription receipts
|
42
|
+
-X, --[no-]explicit Include explicit content in search results.
|
43
|
+
|
44
|
+
|
45
|
+
$ its search "Blue in Green" --media music --entity song
|
46
|
+
|
47
|
+
50 Results
|
48
|
+
|
49
|
+
+------------------------+---------------------------------------------------------------------------------+
|
50
|
+
| Result 1 |
|
51
|
+
+------------------------+---------------------------------------------------------------------------------+
|
52
|
+
| artistId | 44984 |
|
53
|
+
| artistName | Miles Davis |
|
54
|
+
| artistViewUrl | https://itunes.apple.com/us/artist/miles-davis/id44984?uo=4 |
|
55
|
+
| artworkUrl100 | http://a3.mzstatic.com/us/r30/Music/75/d7/9e/mzi.tugmofjx.100x100-75.jpg |
|
56
|
+
| artworkUrl30 | http://a3.mzstatic.com/us/r30/Music/75/d7/9e/mzi.tugmofjx.30x30-50.jpg |
|
57
|
+
| artworkUrl60 | http://a2.mzstatic.com/us/r30/Music/75/d7/9e/mzi.tugmofjx.60x60-50.jpg |
|
58
|
+
| collectionCensoredName | Kind of Blue |
|
59
|
+
| collectionExplicitness | notExplicit |
|
60
|
+
| collectionId | 162322551 |
|
61
|
+
| collectionName | Kind of Blue |
|
62
|
+
| collectionPrice | 9.99 |
|
63
|
+
| collectionViewUrl | https://itunes.apple.com/us/album/blue-in-green/id162322551?i=162322872&uo=4 |
|
64
|
+
| country | USA |
|
65
|
+
| currency | USD |
|
66
|
+
| discCount | 1 |
|
67
|
+
| discNumber | 1 |
|
68
|
+
| kind | song |
|
69
|
+
| previewUrl | http://a456.phobos.apple.com/us/r1000/090/Music/ca/55/73/mzm.yslzuywm.aac.p.m4a |
|
70
|
+
| primaryGenreName | Jazz |
|
71
|
+
| radioStationUrl | https://itunes.apple.com/us/station/idra.162322872 |
|
72
|
+
| releaseDate | 1997-03-04T08:00:00Z |
|
73
|
+
| trackCensoredName | Blue In Green |
|
74
|
+
| trackCount | 6 |
|
75
|
+
| trackExplicitness | notExplicit |
|
76
|
+
| trackId | 162322872 |
|
77
|
+
| trackName | Blue In Green |
|
78
|
+
| trackNumber | 3 |
|
79
|
+
| trackPrice | 0.99 |
|
80
|
+
| trackTimeMillis | 337560 |
|
81
|
+
| trackViewUrl | https://itunes.apple.com/us/album/blue-in-green/id162322551?i=162322872&uo=4 |
|
82
|
+
| wrapperType | track |
|
83
|
+
+------------------------+---------------------------------------------------------------------------------+
|
84
|
+
|
85
|
+
...
|
86
|
+
|
87
|
+
## Contact
|
88
|
+
|
89
|
+
Mattt Thompson
|
90
|
+
|
91
|
+
- http://github.com/mattt
|
92
|
+
- http://twitter.com/mattt
|
93
|
+
- m@mattt.me
|
94
|
+
|
95
|
+
## License
|
96
|
+
|
97
|
+
Nashville is available under the MIT license. See the LICENSE file for more info.
|
data/Rakefile
ADDED
data/bin/its
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'nashville'
|
4
|
+
|
5
|
+
require 'commander/import'
|
6
|
+
require 'terminal-table'
|
7
|
+
|
8
|
+
HighLine.track_eof = false # Fix for built-in Ruby
|
9
|
+
Signal.trap("INT") {} # Suppress backtrace when exiting command
|
10
|
+
|
11
|
+
program :version, Nashville::VERSION
|
12
|
+
program :description, 'A command-line interface for querying the iTunes Store'
|
13
|
+
|
14
|
+
program :help, 'Author', 'Mattt Thompson <m@mattt.me>'
|
15
|
+
program :help, 'Website', 'https://github.com/mattt'
|
16
|
+
program :help_formatter, :compact
|
17
|
+
|
18
|
+
default_command :help
|
19
|
+
|
20
|
+
command :search do |c|
|
21
|
+
c.syntax = 'its search QUERY'
|
22
|
+
c.summary = ''
|
23
|
+
c.description = ''
|
24
|
+
c.option '-m', '--media MEDIA', %w(movie podcast music musicVideo audiobook shortFilm tvShow software ebook all), 'The media type to search for'
|
25
|
+
c.option '-e', '--entity ENTITY', 'The type of results to be returned, relative to the specified media type.'
|
26
|
+
c.option '-a', '--attribute ATTRIBUTE', 'The attribute to be searched for in the stores, relative to the specified media type.'
|
27
|
+
c.option '--limit LIMIT', 'The maximum number of results to return.'
|
28
|
+
c.option '--language LANGUAGE', %w(en_us ja_jp), 'The language, English or Japanese, to use when returning search results.'
|
29
|
+
c.option '-p', '--secret SECRET', 'Use a shared secret for auto-renewable subscription receipts'
|
30
|
+
c.option '-X', '--[no-]explicit', 'Include explicit content in search results.'
|
31
|
+
|
32
|
+
c.example 'search', 'its search "Jamiroquai"'
|
33
|
+
|
34
|
+
c.action do |args, options|
|
35
|
+
say_error "Missing receipt argument" and abort unless term = args.first
|
36
|
+
|
37
|
+
params = {}
|
38
|
+
params[:term] = term
|
39
|
+
params[:media] = options.media if options.media
|
40
|
+
params[:entity] = options.entity if options.entity
|
41
|
+
params[:attribute] = options.attribute if options.attribute
|
42
|
+
params[:limit] = options.limit if options.limit
|
43
|
+
params[:lang] = options.language if options.language
|
44
|
+
|
45
|
+
begin
|
46
|
+
results = client.search(params)
|
47
|
+
|
48
|
+
enable_paging
|
49
|
+
|
50
|
+
puts "#{results.length} #{results.length == 1 ? 'Result' : 'Results'}"
|
51
|
+
puts
|
52
|
+
|
53
|
+
results.each_with_index do |result, index|
|
54
|
+
table = Terminal::Table.new :title => "Result #{index + 1}" do |t|
|
55
|
+
result.keys.sort.each do |key|
|
56
|
+
t << [key, result[key]]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
puts table
|
61
|
+
puts
|
62
|
+
end
|
63
|
+
|
64
|
+
rescue => error
|
65
|
+
say_error error.message and abort
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
command :preview do |c|
|
71
|
+
c.syntax = 'its preview URL'
|
72
|
+
c.summary = ''
|
73
|
+
c.description = ''
|
74
|
+
|
75
|
+
c.example 'description', 'its search "query"'
|
76
|
+
|
77
|
+
c.action do |args, options|
|
78
|
+
say_error "Missing receipt argument" and abort unless url = args.first
|
79
|
+
|
80
|
+
`open "#{url}" -a "QuickTime Player.app"`
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def client
|
87
|
+
@client ||= Nashville::Client.new
|
88
|
+
end
|
data/lib/nashville.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'net/https'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
module Nashville
|
6
|
+
ITUNES_SEARCH_ENDPOINT = "https://itunes.apple.com/search"
|
7
|
+
|
8
|
+
class Client
|
9
|
+
attr_accessor :search_url
|
10
|
+
attr_accessor :country
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@search_url = ENV['ITUNES_SEARCH_ENDPOINT'] || ITUNES_SEARCH_ENDPOINT
|
14
|
+
@country = 'US'
|
15
|
+
end
|
16
|
+
|
17
|
+
def search(params = {})
|
18
|
+
params[:country] ||= @country
|
19
|
+
|
20
|
+
uri = URI(@search_url)
|
21
|
+
uri.query = URI.encode_www_form(params)
|
22
|
+
|
23
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
24
|
+
http.use_ssl = true
|
25
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
26
|
+
|
27
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
28
|
+
request['Accept'] = "application/json"
|
29
|
+
|
30
|
+
response = http.request(request)
|
31
|
+
json = JSON.parse(response.body)
|
32
|
+
|
33
|
+
return json["results"]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'hashie/rash'
|
2
|
+
|
3
|
+
module Nashville
|
4
|
+
module Media
|
5
|
+
def self.included(base)
|
6
|
+
base.send(:extend, ClassMethods)
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def Entity(entity)
|
11
|
+
delegator = self
|
12
|
+
|
13
|
+
klass = Class.new(Hashie::Rash) do
|
14
|
+
extend ClassMethods
|
15
|
+
|
16
|
+
define_singleton_method(:entity) do
|
17
|
+
return entity
|
18
|
+
end
|
19
|
+
|
20
|
+
define_singleton_method(:delegator) do
|
21
|
+
return delegator
|
22
|
+
end
|
23
|
+
|
24
|
+
define_singleton_method(:media) do |*args|
|
25
|
+
media = args.first
|
26
|
+
if class_variable_defined?(:@@media)
|
27
|
+
class_variable_get(:@@media)
|
28
|
+
elsif media
|
29
|
+
class_variable_set(:@@media, media)
|
30
|
+
else
|
31
|
+
self.delegator.media
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
define_singleton_method(:attributes) do |*args|
|
36
|
+
attributes = args
|
37
|
+
if class_variable_defined?(:@@attributes)
|
38
|
+
class_variable_get(:@@attributes)
|
39
|
+
elsif attributes and not attributes.empty?
|
40
|
+
class_variable_set(:@@attributes, attributes.collect(&:to_sym))
|
41
|
+
else
|
42
|
+
self.delegator.attributes
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
define_singleton_method(:search) do |params|
|
47
|
+
unless params[:term]
|
48
|
+
attribute, *additional = params.keys.collect(&:to_sym) & self.attributes
|
49
|
+
if not attribute
|
50
|
+
raise ArgumentError, "Missing search criteria, specify one of #{self.attributes}"
|
51
|
+
elsif not additional.empty?
|
52
|
+
raise ArgumentError, "Too many search criteria specified (#{attributes})"
|
53
|
+
else
|
54
|
+
params[:attribute] = "#{attribute}Term"
|
55
|
+
params[:term] = params.delete(attribute)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
params[:media] = self.media
|
60
|
+
params[:entity] = self.entity
|
61
|
+
|
62
|
+
results = self.delegator.search(params)
|
63
|
+
results.collect{|result| self.new(result)}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
include Media
|
71
|
+
|
72
|
+
class << self
|
73
|
+
def search(params = {})
|
74
|
+
client.search(params)
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
def client
|
80
|
+
@@client ||= Client.new
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
require 'nashville/media/audio_book'
|
86
|
+
require 'nashville/media/ebook'
|
87
|
+
require 'nashville/media/movie'
|
88
|
+
require 'nashville/media/music'
|
89
|
+
require 'nashville/media/podcast'
|
90
|
+
require 'nashville/media/short_film'
|
91
|
+
require 'nashville/media/software'
|
92
|
+
require 'nashville/media/tv_show'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Nashville
|
2
|
+
class Music < Entity(:song)
|
3
|
+
media :music
|
4
|
+
attributes :mix, :artist, :composer, :album, :song
|
5
|
+
|
6
|
+
class Artist < Entity(:musicArtist)
|
7
|
+
end
|
8
|
+
|
9
|
+
class Track < Entity(:musicTrack)
|
10
|
+
end
|
11
|
+
|
12
|
+
class Album < Entity(:album)
|
13
|
+
end
|
14
|
+
|
15
|
+
class Video < Entity(:musicVideo)
|
16
|
+
end
|
17
|
+
|
18
|
+
class Mix < Entity(:mix)
|
19
|
+
end
|
20
|
+
|
21
|
+
class Song < Entity(:song)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/nashville.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "nashville/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "nashville"
|
7
|
+
s.authors = ["Mattt Thompson"]
|
8
|
+
s.email = "m@mattt.me"
|
9
|
+
s.license = "MIT"
|
10
|
+
s.homepage = "http://github.com/nomad/nashville"
|
11
|
+
s.version = Nashville::VERSION
|
12
|
+
s.platform = Gem::Platform::RUBY
|
13
|
+
s.summary = "iTunes Store API Client"
|
14
|
+
s.description = ""
|
15
|
+
|
16
|
+
s.add_dependency "json"
|
17
|
+
s.add_dependency "commander", "~> 4.1"
|
18
|
+
s.add_dependency "terminal-table", "~> 1.4"
|
19
|
+
s.add_dependency "rash"
|
20
|
+
|
21
|
+
s.add_development_dependency "rspec"
|
22
|
+
s.add_development_dependency "rake"
|
23
|
+
s.add_development_dependency "simplecov"
|
24
|
+
|
25
|
+
s.files = Dir["./**/*"].reject { |file| file =~ /\.\/(bin|log|pkg|script|spec|test|vendor)/ }
|
26
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
27
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
28
|
+
s.require_paths = ["lib"]
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nashville
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mattt Thompson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: commander
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: terminal-table
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.4'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.4'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rash
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: ''
|
112
|
+
email: m@mattt.me
|
113
|
+
executables:
|
114
|
+
- its
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ./Gemfile
|
119
|
+
- ./Gemfile.lock
|
120
|
+
- ./lib/nashville/client.rb
|
121
|
+
- ./lib/nashville/media/audio_book.rb
|
122
|
+
- ./lib/nashville/media/ebook.rb
|
123
|
+
- ./lib/nashville/media/movie.rb
|
124
|
+
- ./lib/nashville/media/music.rb
|
125
|
+
- ./lib/nashville/media/podcast.rb
|
126
|
+
- ./lib/nashville/media/short_film.rb
|
127
|
+
- ./lib/nashville/media/software.rb
|
128
|
+
- ./lib/nashville/media/tv_show.rb
|
129
|
+
- ./lib/nashville/media.rb
|
130
|
+
- ./lib/nashville/version.rb
|
131
|
+
- ./lib/nashville.rb
|
132
|
+
- ./LICENSE
|
133
|
+
- ./nashville.gemspec
|
134
|
+
- ./Rakefile
|
135
|
+
- ./README.md
|
136
|
+
- bin/its
|
137
|
+
homepage: http://github.com/nomad/nashville
|
138
|
+
licenses:
|
139
|
+
- MIT
|
140
|
+
metadata: {}
|
141
|
+
post_install_message:
|
142
|
+
rdoc_options: []
|
143
|
+
require_paths:
|
144
|
+
- lib
|
145
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - '>='
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
155
|
+
requirements: []
|
156
|
+
rubyforge_project:
|
157
|
+
rubygems_version: 2.1.11
|
158
|
+
signing_key:
|
159
|
+
specification_version: 4
|
160
|
+
summary: iTunes Store API Client
|
161
|
+
test_files: []
|