nashville 0.0.1

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.
@@ -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
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -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.
@@ -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.
@@ -0,0 +1,9 @@
1
+ require 'bundler/setup'
2
+
3
+ gemspec = eval(File.read("nashville.gemspec"))
4
+
5
+ task :build => "#{gemspec.full_name}.gem"
6
+
7
+ file "#{gemspec.full_name}.gem" => gemspec.files + ["nashville.gemspec"] do
8
+ system "gem build nashville.gemspec"
9
+ end
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
@@ -0,0 +1,3 @@
1
+ require 'nashville/version'
2
+ require 'nashville/client'
3
+ require 'nashville/media'
@@ -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,9 @@
1
+ module Nashville
2
+ class AudioBook < Entity(:audiobook)
3
+ media :audibook
4
+ attributes :title, :author
5
+
6
+ class Author < Entity(:audiobookAuthor)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ module Nashville
2
+ class Ebook < Entity(:ebook)
3
+ media :ebook
4
+
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ module Nashville
2
+ class Movie < Entity(:movie)
3
+ media :movie
4
+ attributes :actor, :artist, :shortFilm, :producer, :rating, :director, :releaseYear, :featureFilm, :movieArtist, :movie, :description
5
+
6
+ class Artist < Entity(:movieArtist)
7
+ end
8
+ end
9
+ end
@@ -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
@@ -0,0 +1,9 @@
1
+ module Nashville
2
+ class Podcast < Entity(:podcast)
3
+ media :podcast
4
+ attributes :title, :language, :author, :artist, :keywords, :description
5
+
6
+ class Author < Entity(:podcastAuthor)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Nashville
2
+ class ShortFilm < Entity(:shortFilm)
3
+ media :shortFilm
4
+ attributes :artist, :shortFilm, :description
5
+
6
+ class Artist < Entity(:shortFilmArtist)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module Nashville
2
+ class Software < Entity(:software)
3
+ media :software
4
+ attributes :softwareDeveloper
5
+
6
+ class IPadSoftware < Entity(:iPadSoftware)
7
+ end
8
+
9
+ class MacSoftware < Entity(:macSoftware)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module Nashville
2
+ class TV < Entity(:tvEpisode)
3
+ media :tvShow
4
+ attributes :tvEpisode, :show, :tvSeason, :description
5
+
6
+ class Episode < Entity(:tvEpisode)
7
+ end
8
+
9
+ class Season < Entity(:tvSeason)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module Nashville
2
+ VERSION = "0.0.1"
3
+ end
@@ -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: []