nashville 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []