songkickr 0.1.0

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,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 Jared Mehle
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,41 @@
1
+ = songkickr
2
+
3
+ A Ruby wrapper around the Songkick API. Visit www.songkick.com/developer for documentation on the Songkick API.
4
+
5
+ = Install Instructions
6
+
7
+ gem install songkickr
8
+
9
+ or if your environment requires
10
+
11
+ sudo gem install songkickr
12
+
13
+ = Usage Instructions
14
+
15
+ require 'songkickr'
16
+ remote = Songkickr::Remote.new API_KEY
17
+
18
+ Then call events, users_events(username), or concert_setlists(event_id)
19
+
20
+ results = remote.events(:artist_name => 'Iron Maiden')
21
+ results = remote.events(:artist_name => 'As I Lay Dying')
22
+
23
+ results = remote.users_events('jrmehle')
24
+
25
+ results = remote.concert_setlists(2680726)
26
+ results = remote.concert_setlists(2894471)
27
+
28
+
29
+ == Note on Patches/Pull Requests
30
+
31
+ * Fork the project.
32
+ * Make your feature addition or bug fix.
33
+ * Add tests for it. This is important so I don't break it in a
34
+ future version unintentionally.
35
+ * Commit, do not mess with rakefile, version, or history.
36
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
37
+ * Send me a pull request. Bonus points for topic branches.
38
+
39
+ == Copyright
40
+
41
+ Copyright (c) 2010 Jared Mehle. See LICENSE for details.
@@ -0,0 +1,53 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "songkickr"
8
+ gem.summary = %Q{A Ruby wrapper around the Songkick API.}
9
+ gem.description = %Q{A Ruby wrapper around the Songkick API. Visit www.songkick.com/developer for documentation on the Songkick API. }
10
+ gem.email = "jrmehle@gmail.com"
11
+ gem.homepage = "http://github.com/jrmehle/songkickr"
12
+ gem.authors = ["Jared Mehle"]
13
+ gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
14
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
+ end
16
+ Jeweler::GemcutterTasks.new
17
+ rescue LoadError
18
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
19
+ end
20
+
21
+ require 'rake/testtask'
22
+ Rake::TestTask.new(:test) do |test|
23
+ test.libs << 'lib' << 'test'
24
+ test.pattern = 'test/**/test_*.rb'
25
+ test.verbose = true
26
+ end
27
+
28
+ begin
29
+ require 'rcov/rcovtask'
30
+ Rcov::RcovTask.new do |test|
31
+ test.libs << 'test'
32
+ test.pattern = 'test/**/test_*.rb'
33
+ test.verbose = true
34
+ end
35
+ rescue LoadError
36
+ task :rcov do
37
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
38
+ end
39
+ end
40
+
41
+ task :test => :check_dependencies
42
+
43
+ task :default => :test
44
+
45
+ require 'rake/rdoctask'
46
+ Rake::RDocTask.new do |rdoc|
47
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
+
49
+ rdoc.rdoc_dir = 'rdoc'
50
+ rdoc.title = "songkickr #{version}"
51
+ rdoc.rdoc_files.include('README*')
52
+ rdoc.rdoc_files.include('lib/**/*.rb')
53
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,35 @@
1
+ require 'rubygems'
2
+ gem 'httparty'
3
+ require 'httparty'
4
+
5
+ dir = File.dirname(__FILE__)
6
+ require dir + '/songkickr/performance'
7
+ require dir + '/songkickr/artist'
8
+ require dir + '/songkickr/location'
9
+ require dir + '/songkickr/venue'
10
+ require dir + '/songkickr/event'
11
+ require dir + '/songkickr/setlist_item'
12
+ require dir + '/songkickr/setlist'
13
+ require dir + '/songkickr/event_result'
14
+ require dir + '/songkickr/concert_setlist_result'
15
+ require dir + '/songkickr/remote'
16
+
17
+ class APIKeyNotSet < StandardError;
18
+ def to_s
19
+ 'API key not set!'
20
+ end
21
+ end
22
+
23
+ module Songkickr
24
+
25
+ # Get your API key from http://developer.songkick.com/
26
+ def self.api_key
27
+ raise APIKeyNotSet if @api_key.nil?
28
+
29
+ @api_key
30
+ end
31
+
32
+ def self.api_key=(api_key)
33
+ @api_key = api_key
34
+ end
35
+ end
@@ -0,0 +1,10 @@
1
+ module Songkickr
2
+ class Artist
3
+ attr_accessor :href, :display_name
4
+
5
+ def initialize(artist_hash = {})
6
+ @href = artist_hash["href"]
7
+ @display_name = artist_hash["displayName"]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,32 @@
1
+ module Songkickr
2
+ class ConcertSetlistResult
3
+ attr_accessor :results
4
+
5
+ def initialize(result_hash = {})
6
+
7
+ if result_hash["resultsPage"]
8
+ results_page = result_hash["resultsPage"]
9
+
10
+ if results_page
11
+ @results = parse_results results_page["results"]
12
+ end
13
+ else
14
+ result_hash
15
+ end
16
+ end
17
+
18
+
19
+ protected
20
+
21
+ def parse_results(results = {})
22
+ setlists = []
23
+ if results.include?("setlist")
24
+ results["setlist"].each do |setlist|
25
+ setlists << Songkickr::Setlist.new(setlist)
26
+ end
27
+ end
28
+
29
+ setlists
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,35 @@
1
+ module Songkickr
2
+ class Event
3
+ attr_accessor :type, :display_name, :location, :start, :uri, :id, :lat, :lng, :performance, :status, :venue, :tickets_uri
4
+
5
+ def initialize(event_hash)
6
+ @type = event_hash["type"]
7
+ @location = Songkickr::Location.new event_hash["location"]
8
+ @status = event_hash["status"]
9
+ @display_name = event_hash["displayName"]
10
+ @venue = Songkickr::Venue.new event_hash["venue"]
11
+ @start = start_hash_to_datetime event_hash["start"]
12
+ @uri = event_hash["uri"]
13
+ @performance = parse_performance event_hash["performance"]
14
+ @id = event_hash["id"]
15
+ @tickets_uri = event_hash["ticketsUri"]
16
+ end
17
+
18
+ protected
19
+
20
+ def start_hash_to_datetime(start_hash)
21
+ datetime = DateTime.parse("#{start_hash["date"]} #{start_hash["time"]}")
22
+ end
23
+
24
+ def parse_performance(performance_array = nil)
25
+ performances = []
26
+ if performance_array
27
+ performance_array.each do |performance|
28
+ performances << Songkickr::Performance.new(performance)
29
+ end
30
+ end
31
+
32
+ performances
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ module Songkickr
2
+ class EventResult
3
+ attr_accessor :page, :total_entries, :results
4
+
5
+ def initialize(result_hash = {})
6
+ results_page = result_hash["resultsPage"]
7
+
8
+ if results_page
9
+ @page = results_page["page"]
10
+ @total_entries = results_page["totalEntries"]
11
+ @results = parse_results results_page["results"]
12
+ end
13
+ end
14
+
15
+
16
+ protected
17
+
18
+ def parse_results(results = {})
19
+ events = []
20
+ if results.include?("event")
21
+ results["event"].each do |event|
22
+ events << Songkickr::Event.new(event)
23
+ end
24
+ end
25
+
26
+ events
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,11 @@
1
+ module Songkickr
2
+ class Location
3
+ attr_accessor :city, :lat, :lng
4
+
5
+ def initialize(location_hash)
6
+ @city = location_hash["city"]
7
+ @lat = location_hash["lat"]
8
+ @lng = location_hash["lng"]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Songkickr
2
+ class Performance
3
+ attr_accessor :artist, :display_name, :id
4
+
5
+ def initialize(performance_hash)
6
+ @artist = Songkickr::Artist.new performance_hash["artist"]
7
+ @display_name = performance_hash["displayName"]
8
+ @id = performance_hash["id"]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,64 @@
1
+ module Songkickr
2
+ class Remote
3
+ include HTTParty
4
+ base_uri 'api.songkick.com/api/3.0'
5
+ format :json
6
+
7
+ attr_reader :api_key
8
+
9
+ # Get your api_key found here http://developer.songkick.com
10
+ def initialize(api_key = nil)
11
+ @api_key = api_key
12
+ @api_key ||= Songkickr.api_key
13
+
14
+ self.class.default_params :apikey => @api_key
15
+ end
16
+
17
+
18
+ # Parameters - http://www.songkick.com/developer/event-search
19
+ #
20
+ # type (concert or festival)
21
+ # artists (events by any of the artists, comma-separated)
22
+ # artist_name
23
+ # artist_id
24
+ # venue_id
25
+ # setlist_item_name (name of a song which was played at the event – use with artist_id or artist_name)
26
+ # min_date
27
+ # max_date
28
+ # location - see the Songkick website for instructions on how to use the location parameter
29
+
30
+ def events(query = {})
31
+ result = self.class.get('/events.json', :query => query)
32
+ Songkickr::EventResult.new result
33
+ end
34
+
35
+
36
+ # Parameters - http://www.songkick.com/developer/events-for-user
37
+ #
38
+ # attendance (all, im_going, i_might_go) - defaults to im_going
39
+ # type (concert or festival)
40
+ # artists (events by any of the artists, comma-separated)
41
+ # artist_name
42
+ # artist_id
43
+ # venue_id
44
+ # setlist_item_name (name of a song which was played at the event – use with artist_id or artist_name)
45
+ # min_date
46
+ # max_date
47
+ # location - see the Songkick website for instructions on how to use the location parameter
48
+
49
+ def users_events(username, query = {})
50
+ result = self.class.get("/users/#{username}/events.json", :query => query)
51
+ Songkickr::EventResult.new result
52
+ end
53
+
54
+
55
+ # Parameters - http://www.songkick.com/developer/setlists
56
+ #
57
+ # event_id
58
+
59
+ def concert_setlists(event_id)
60
+ result = self.class.get("/events/#{event_id}/setlists.json")
61
+ Songkickr::ConcertSetlistResult.new result
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,27 @@
1
+ module Songkickr
2
+ class Setlist
3
+ attr_accessor :event, :setlist_items, :artist, :playlist_uri, :display_name, :id
4
+
5
+ def initialize(setlist_hash)
6
+ @event = Songkickr::Event.new setlist_hash["event"]
7
+ @setlist_items = parse_setlist_items setlist_hash["setlistItem"]
8
+ @artist = Songkickr::Artist.new setlist_hash["artist"]
9
+ @playlist_uri = setlist_hash["playlistUri"]
10
+ @display_name = setlist_hash["displayName"]
11
+ @id = setlist_hash["id"]
12
+ end
13
+
14
+ protected
15
+
16
+ def parse_setlist_items(setlist_item_array = nil)
17
+ setlist_items = []
18
+ if setlist_item_array
19
+ setlist_item_array.each do |item|
20
+ setlist_items << Songkickr::SetlistItem.new(item)
21
+ end
22
+ end
23
+
24
+ setlist_items
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,10 @@
1
+ module Songkickr
2
+ class SetlistItem
3
+ attr_accessor :encore, :name
4
+
5
+ def initialize(setlist_item_hash)
6
+ @encore = !!setlist_item_hash["encore"]
7
+ @name = setlist_item_hash["name"]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module Songkickr
2
+ class Venue
3
+ attr_accessor :display_name, :id, :lat, :lng
4
+
5
+ def initialize(venue_hash)
6
+ @display_name = venue_hash["displayName"]
7
+ @id = venue_hash["id"]
8
+ @lat = venue_hash["lat"]
9
+ @lng = venue_hash["lng"]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,70 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{songkickr}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Jared Mehle"]
12
+ s.date = %q{2010-05-03}
13
+ s.description = %q{A Ruby wrapper around the Songkick API. Visit www.songkick.com/developer for documentation on the Songkick API. }
14
+ s.email = %q{jrmehle@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "lib/songkickr.rb",
27
+ "lib/songkickr/artist.rb",
28
+ "lib/songkickr/concert_setlist_result.rb",
29
+ "lib/songkickr/event.rb",
30
+ "lib/songkickr/event_result.rb",
31
+ "lib/songkickr/location.rb",
32
+ "lib/songkickr/performance.rb",
33
+ "lib/songkickr/remote.rb",
34
+ "lib/songkickr/setlist.rb",
35
+ "lib/songkickr/setlist_item.rb",
36
+ "lib/songkickr/venue.rb",
37
+ "songkickr.gemspec",
38
+ "test/fixtures/events.json",
39
+ "test/fixtures/no_events.json",
40
+ "test/helper.rb",
41
+ "test/songkickr/test_artist.rb",
42
+ "test/songkickr/test_remote.rb",
43
+ "test/test_songkickr.rb"
44
+ ]
45
+ s.homepage = %q{http://github.com/jrmehle/songkickr}
46
+ s.rdoc_options = ["--charset=UTF-8"]
47
+ s.require_paths = ["lib"]
48
+ s.rubygems_version = %q{1.3.6}
49
+ s.summary = %q{A Ruby wrapper around the Songkick API.}
50
+ s.test_files = [
51
+ "test/helper.rb",
52
+ "test/songkickr/test_artist.rb",
53
+ "test/songkickr/test_remote.rb",
54
+ "test/test_songkickr.rb"
55
+ ]
56
+
57
+ if s.respond_to? :specification_version then
58
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
59
+ s.specification_version = 3
60
+
61
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
62
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
63
+ else
64
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
65
+ end
66
+ else
67
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
68
+ end
69
+ end
70
+
@@ -0,0 +1 @@
1
+ { "resultsPage": { "totalEntries": 20, "page": 1, "results": {"event": [{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760721\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-04-29"},"uri":"http:\/\/www.songkick.com\/concerts\/2760721?utm_source=791&utm_medium=partner","performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"displayName":"Taylor Swift","id":4881406},{"artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"displayName":"Kellie Pickler","id":4881411},{"artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"displayName":"Gloriana","id":4881416}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at Rupp Arena (April 29, 2010)","location":{"city":"Lexington, KY, US","lat":38.0408354,"lng":-84.4916265},"id":2760721,"venue":{"displayName":"Rupp Arena","lat":38.0408354,"id":974,"lng":-84.4916265}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760726\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-04-30"},"uri":"http:\/\/www.songkick.com\/concerts\/2760726?utm_source=791&utm_medium=partner","displayName":"Taylor Swift and Kellie Pickler with Gloriana at Colonial Life Arena (April 30, 2010)","performance":[{"displayName":"Taylor Swift","artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"id":4881421},{"displayName":"Kellie Pickler","artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"id":4881431},{"displayName":"Gloriana","artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"id":4881436}],"location":{"city":"Columbia, SC, US","lat":34.0171,"lng":-81.0108},"id":2760726,"venue":{"displayName":"Colonial Life Arena","lat":34.0171,"id":36928,"lng":-81.0108}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760741\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-05-01"},"uri":"http:\/\/www.songkick.com\/concerts\/2760741?utm_source=791&utm_medium=partner","performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"displayName":"Taylor Swift","id":4881456},{"artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"displayName":"Kellie Pickler","id":4881461},{"artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"displayName":"Gloriana","id":4881466}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at RBC Center (May 1, 2010)","location":{"city":"Raleigh, NC, US","lat":35.8188018798828,"lng":-78.6445999145508},"id":2760741,"venue":{"displayName":"RBC Center","lat":35.8188018798828,"id":4721,"lng":-78.6445999145508}},{"type":"Concert","location":{"lat":28.549316,"lng":-81.386592,"city":"Orlando, FL, US"},"ticketsUri":"http:\/\/www.songkick.com\/concerts\/4204676\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"date":"2010-05-05","time":"19:00:00"},"performance":[{"artist":{"displayName":"Kellie Pickler","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json","mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81"}]},"displayName":"Kellie Pickler","id":7555176},{"artist":{"displayName":"Taylor Swift","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json","mbid":"20244d07-534f-4eff-b4d4-930878889970"}]},"displayName":"Taylor Swift","id":7555546}],"displayName":"Kellie Pickler with Taylor Swift at Amway Arena (May 5, 2010)","uri":"http:\/\/www.songkick.com\/concerts\/4204676?utm_source=791&utm_medium=partner","id":4204676,"venue":{"lat":28.549316,"lng":-81.386592,"displayName":"Amway Arena","id":654}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760756\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-05-06"},"uri":"http:\/\/www.songkick.com\/concerts\/2760756?utm_source=791&utm_medium=partner","performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"displayName":"Taylor Swift","id":4881481},{"artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"displayName":"Kellie Pickler","id":4881491},{"artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"displayName":"Gloriana","id":4881496}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at Wells Fargo Arena (Iowa Events Center) (May 6, 2010)","location":{"city":"Des Moines, IA, US","lat":41.591056,"lng":-93.621474},"id":2760756,"venue":{"displayName":"Wells Fargo Arena (Iowa Events Center)","lat":41.591056,"id":5149,"lng":-93.621474}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760761\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-05-07"},"uri":"http:\/\/www.songkick.com\/concerts\/2760761?utm_source=791&utm_medium=partner","performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"displayName":"Taylor Swift","id":4881511},{"artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"displayName":"Kellie Pickler","id":4881516},{"artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"displayName":"Gloriana","id":4881521}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at Xcel Energy Center (May 7, 2010)","location":{"city":"St. Paul, MN, US","lat":44.9434054,"lng":-93.0971615},"id":2760761,"venue":{"displayName":"Xcel Energy Center","lat":44.9434054,"id":624,"lng":-93.0971615}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760776\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-05-08"},"uri":"http:\/\/www.songkick.com\/concerts\/2760776?utm_source=791&utm_medium=partner","displayName":"Taylor Swift and Kellie Pickler with Gloriana at i Wireless Center (May 8, 2010)","performance":[{"displayName":"Taylor Swift","artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"id":4881531},{"displayName":"Kellie Pickler","artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"id":4881536},{"displayName":"Gloriana","artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"id":4881541}],"location":{"city":"Moline, IL, US","lat":41.506808,"lng":-90.521539},"id":2760776,"venue":{"displayName":"i Wireless Center","lat":41.506808,"id":1549,"lng":-90.521539}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760786\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-05-12"},"uri":"http:\/\/www.songkick.com\/concerts\/2760786?utm_source=791&utm_medium=partner","displayName":"Taylor Swift and Kellie Pickler with Gloriana and Prudential Center Your Entertainment Subsciption at Prudential Center (May 12, 2010)","performance":[{"displayName":"Taylor Swift","artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"id":4881556},{"displayName":"Kellie Pickler","artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"id":4881561},{"displayName":"Gloriana","artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"id":4881566},{"displayName":"Prudential Center Your Entertainment Subsciption","artist":{"displayName":"Prudential Center Your Entertainment Subsciption","identifier":[]},"id":9440681}],"location":{"city":"Newark, NJ, US","lat":40.7352,"lng":-74.1849},"id":2760786,"venue":{"displayName":"Prudential Center","lat":40.7352,"id":706,"lng":-74.1849}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760796\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-05-13"},"uri":"http:\/\/www.songkick.com\/concerts\/2760796?utm_source=791&utm_medium=partner","performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"displayName":"Taylor Swift","id":4881571},{"artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"displayName":"Kellie Pickler","id":4881581},{"artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"displayName":"Gloriana","id":4881586}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at Prudential Center (May 13, 2010)","location":{"city":"Newark, NJ, US","lat":40.7352,"lng":-74.1849},"id":2760796,"venue":{"displayName":"Prudential Center","lat":40.7352,"id":706,"lng":-74.1849}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760811\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-05-14"},"uri":"http:\/\/www.songkick.com\/concerts\/2760811?utm_source=791&utm_medium=partner","performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"displayName":"Taylor Swift","id":4881596},{"artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"displayName":"Kellie Pickler","id":4881601},{"artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"displayName":"Gloriana","id":4881606}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at Nassau Veterans Memorial Coliseum (May 14, 2010)","location":{"city":"Long Island, NY, US","lat":40.634469,"lng":-73.7267135},"id":2760811,"venue":{"displayName":"Nassau Veterans Memorial Coliseum","lat":40.634469,"id":29217,"lng":-73.7267135}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760821\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-05-15"},"uri":"http:\/\/www.songkick.com\/concerts\/2760821?utm_source=791&utm_medium=partner","displayName":"Taylor Swift and Kellie Pickler with Gloriana at Nassau Veterans Memorial Coliseum (May 15, 2010)","performance":[{"displayName":"Taylor Swift","artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"id":4881616},{"displayName":"Kellie Pickler","artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"id":4881621},{"displayName":"Gloriana","artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"id":4881626}],"location":{"city":"Long Island, NY, US","lat":40.634469,"lng":-73.7267135},"id":2760821,"venue":{"displayName":"Nassau Veterans Memorial Coliseum","lat":40.634469,"id":29217,"lng":-73.7267135}},{"type":"Concert","location":{"lat":45.2959891,"lng":-75.9259642,"city":"Ottawa, ON, Canada"},"ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760836\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"date":"2010-05-20","time":"19:00:00"},"performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json","mbid":"20244d07-534f-4eff-b4d4-930878889970"}]},"displayName":"Taylor Swift","id":4881651},{"artist":{"displayName":"Kellie Pickler","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json","mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81"}]},"displayName":"Kellie Pickler","id":4881656},{"artist":{"displayName":"Gloriana","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json","mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14"},{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json","mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d"}]},"displayName":"Gloriana","id":4881661}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at ScotiaBank Place (May 20, 2010)","uri":"http:\/\/www.songkick.com\/concerts\/2760836?utm_source=791&utm_medium=partner","id":2760836,"venue":{"lat":45.2959891,"lng":-75.9259642,"displayName":"ScotiaBank Place ","id":30665}},{"type":"Concert","location":{"lat":43.6442321,"lng":-79.3783824,"city":"Toronto, ON, Canada"},"ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760846\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"date":"2010-05-21","time":"19:00:00"},"performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json","mbid":"20244d07-534f-4eff-b4d4-930878889970"}]},"displayName":"Taylor Swift","id":4881676},{"artist":{"displayName":"Kellie Pickler","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json","mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81"}]},"displayName":"Kellie Pickler","id":4881681},{"artist":{"displayName":"Gloriana","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json","mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14"},{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json","mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d"}]},"displayName":"Gloriana","id":4881686}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at Air Canada Centre (May 21, 2010)","uri":"http:\/\/www.songkick.com\/concerts\/2760846?utm_source=791&utm_medium=partner","id":2760846,"venue":{"lat":43.6442321,"lng":-79.3783824,"displayName":"Air Canada Centre","id":489}},{"type":"Concert","location":{"lat":43.6442321,"lng":-79.3783824,"city":"Toronto, ON, Canada"},"ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760856\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"date":"2010-05-22","time":"19:00:00"},"performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json","mbid":"20244d07-534f-4eff-b4d4-930878889970"}]},"displayName":"Taylor Swift","id":4881696},{"artist":{"displayName":"Kellie Pickler","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json","mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81"}]},"displayName":"Kellie Pickler","id":4881701},{"artist":{"displayName":"Gloriana","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json","mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14"},{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json","mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d"}]},"displayName":"Gloriana","id":4881706}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at Air Canada Centre (May 22, 2010)","uri":"http:\/\/www.songkick.com\/concerts\/2760856?utm_source=791&utm_medium=partner","id":2760856,"venue":{"lat":43.6442321,"lng":-79.3783824,"displayName":"Air Canada Centre","id":489}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760866\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-05-25"},"uri":"http:\/\/www.songkick.com\/concerts\/2760866?utm_source=791&utm_medium=partner","performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"displayName":"Taylor Swift","id":4881721},{"artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"displayName":"Kellie Pickler","id":4881726},{"artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"displayName":"Gloriana","id":4881731}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at Toyota Center - Tx (May 25, 2010)","location":{"city":"Houston, TX, US","lat":29.7629,"lng":-95.3832},"id":2760866,"venue":{"displayName":"Toyota Center - Tx","lat":29.7629,"id":752951,"lng":-95.3832}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760876\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-05-26"},"uri":"http:\/\/www.songkick.com\/concerts\/2760876?utm_source=791&utm_medium=partner","displayName":"Taylor Swift and Kellie Pickler with Gloriana at Toyota Center - Tx (May 26, 2010)","performance":[{"displayName":"Taylor Swift","artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"id":4881746},{"displayName":"Kellie Pickler","artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"id":4881751},{"displayName":"Gloriana","artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"id":4881756}],"location":{"city":"Houston, TX, US","lat":29.7629,"lng":-95.3832},"id":2760876,"venue":{"displayName":"Toyota Center - Tx","lat":29.7629,"id":752951,"lng":-95.3832}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760886\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"23:59:20","date":"2010-05-29"},"uri":"http:\/\/www.songkick.com\/concerts\/2760886?utm_source=791&utm_medium=partner","performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"displayName":"Taylor Swift","id":4881771},{"artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"displayName":"Kellie Pickler","id":4881776},{"artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"displayName":"Gloriana","id":4881781},{"artist":{"displayName":"Bayou Country Superfest 2","identifier":[]},"displayName":"Bayou Country Superfest 2","id":5139781},{"artist":{"displayName":"Day Package","identifier":[]},"displayName":"Day Package","id":5139786},{"artist":{"displayName":"Kenny Chesney","identifier":[{"mbid":"5dca4d22-d6c8-4e70-8ca1-4543e43353c7","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:5dca4d22-d6c8-4e70-8ca1-4543e43353c7.json"}]},"displayName":"Kenny Chesney","id":5229086},{"artist":{"displayName":"Bayou Country Superfest","identifier":[]},"displayName":"Bayou Country Superfest","id":5246736},{"artist":{"displayName":"Keith Urban","identifier":[{"mbid":"f45da029-7b00-4bf3-962c-0eeb20309cc4","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:f45da029-7b00-4bf3-962c-0eeb20309cc4.json"}]},"displayName":"Keith Urban","id":7554866},{"artist":{"displayName":"David Nail","identifier":[{"mbid":"a73662ac-647d-4ca4-b26d-162a0d5c5a8e","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:a73662ac-647d-4ca4-b26d-162a0d5c5a8e.json"}]},"displayName":"David Nail","id":8243511}],"displayName":"Bayou Country Superfest, Taylor Swift, Kellie Pickler, and Kenny Chesney at LSU Tiger Stadium (May 29, 2010)","location":{"city":"Baton Rouge, LA, US","lat":30.449311,"lng":-91.18823},"id":2760886,"venue":{"displayName":"LSU Tiger Stadium","lat":30.449311,"id":16008,"lng":-91.18823}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760896\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-06-02"},"uri":"http:\/\/www.songkick.com\/concerts\/2760896?utm_source=791&utm_medium=partner","performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"displayName":"Taylor Swift","id":4881801},{"artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"displayName":"Kellie Pickler","id":4881806},{"artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"displayName":"Gloriana","id":4881816}],"displayName":"Taylor Swift and Kellie Pickler with Gloriana at Verizon Center (June 2, 2010)","location":{"city":"Washington, DC, US","lat":38.897412,"lng":-77.020029},"id":2760896,"venue":{"displayName":"Verizon Center","lat":38.897412,"id":465,"lng":-77.020029}},{"type":"Concert","location":{"lat":42.0583,"lng":-71.25,"city":"Foxboro, MA, US"},"ticketsUri":null,"status":"ok","start":{"date":"2010-06-05","time":null},"performance":[{"artist":{"displayName":"Taylor Swift","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json","mbid":"20244d07-534f-4eff-b4d4-930878889970"}]},"displayName":"Taylor Swift","id":7853916},{"artist":{"displayName":"Kellie Pickler","identifier":[{"href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json","mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81"}]},"displayName":"Kellie Pickler","id":9289986}],"displayName":"Taylor Swift and Kellie Pickler at Gillette Stadium (June 5, 2010)","uri":"http:\/\/www.songkick.com\/concerts\/4371121?utm_source=791&utm_medium=partner","id":4371121,"venue":{"lat":42.0583,"lng":-71.25,"displayName":"Gillette Stadium","id":851486}},{"type":"Concert","ticketsUri":"http:\/\/www.songkick.com\/concerts\/2760906\/tickets?utm_source=791&utm_medium=partner","status":"ok","start":{"time":"19:00:00","date":"2010-06-05"},"uri":"http:\/\/www.songkick.com\/concerts\/2760906?utm_source=791&utm_medium=partner","displayName":"Taylor Swift with Kellie Pickler and Gloriana at Gillette Stadium (June 5, 2010)","performance":[{"displayName":"Taylor Swift","artist":{"displayName":"Taylor Swift","identifier":[{"mbid":"20244d07-534f-4eff-b4d4-930878889970","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:20244d07-534f-4eff-b4d4-930878889970.json"}]},"id":4881826},{"displayName":"Kellie Pickler","artist":{"displayName":"Kellie Pickler","identifier":[{"mbid":"4c567ed6-8bc9-447a-bbd5-1dce18e4ee81","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:4c567ed6-8bc9-447a-bbd5-1dce18e4ee81.json"}]},"id":4881831},{"displayName":"Gloriana","artist":{"displayName":"Gloriana","identifier":[{"mbid":"0f721370-ce34-456d-8c2a-a74f3f93fb14","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:0f721370-ce34-456d-8c2a-a74f3f93fb14.json"},{"mbid":"45ee3bf0-7ef7-4a87-81e3-a5867473b93d","href":"http:\/\/api.songkick.com\/api\/3.0\/artists\/mbid:45ee3bf0-7ef7-4a87-81e3-a5867473b93d.json"}]},"id":4881836}],"location":{"city":"Foxborough, MA, US","lat":42.09085,"lng":-71.264319},"id":2760906,"venue":{"displayName":"Gillette Stadium","lat":42.09085,"id":464,"lng":-71.264319}}]}, "perPage": 50}}
@@ -0,0 +1 @@
1
+ { "resultsPage": { "totalEntries": 0, "page": 1, "results": {}, "perPage": 50}}
@@ -0,0 +1,42 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+ require 'fakeweb'
5
+
6
+ FakeWeb.allow_net_connect = false
7
+
8
+
9
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
10
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
11
+ require 'songkickr'
12
+
13
+ class Test::Unit::TestCase
14
+ end
15
+
16
+ def songkick_url(url)
17
+ url =~ /^http/ ? url : "http://api.songkick.com/api/3.0#{url}"
18
+ end
19
+
20
+ def fixture_file(filename)
21
+ return "" if filename == ""
22
+ file_path = File.expand_path(File.dirname(__FILE__) + "/fixtures/" + filename)
23
+ File.read(file_path)
24
+ end
25
+
26
+ def stub_get(url, filename, status = nil)
27
+ options = {:body => fixture_file(filename)}
28
+ options.merge!({:status => status}) unless status.nil?
29
+ FakeWeb.register_uri(:get, songkick_url(url), options)
30
+ end
31
+
32
+ def stub_post(url, filename)
33
+ FakeWeb.register_uri(:post, songkick_url(url), :body => fixture_file(filename))
34
+ end
35
+
36
+ def stub_put(url, filename)
37
+ FakeWeb.register_uri(:put, songkick_url(url), :body => fixture_file(filename))
38
+ end
39
+
40
+ def stub_delete(url, filename)
41
+ FakeWeb.register_uri(:delete, songkick_url(url), :body => fixture_file(filename))
42
+ end
@@ -0,0 +1,21 @@
1
+ require 'helper'
2
+
3
+ class TestArtist < Test::Unit::TestCase
4
+ context "Given a new Artist" do
5
+ setup do
6
+ @href = 'http://jrmehle.com/'
7
+ @display_name = 'Artist Name'
8
+ @artist = Songkickr::Artist.new({'href' => @href, 'displayName' => @display_name})
9
+ end
10
+
11
+ should "init href" do
12
+ assert_not_nil @artist
13
+ assert_equal @href, @artist.href
14
+ end
15
+
16
+ should "init display_name" do
17
+ assert_not_nil @artist
18
+ assert_equal @display_name, @artist.display_name
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ require 'helper'
2
+
3
+ class TestRemote < Test::Unit::TestCase
4
+ context "Given a remote with no api key" do
5
+ should "raise an APIKeyNotSet exception when created with no key" do
6
+ assert_raise APIKeyNotSet do
7
+ @remote = Songkickr::Remote.new
8
+ end
9
+ end
10
+ end
11
+
12
+ # TODO: Fix this later
13
+ # context "Given a remote with an invalid api key" do
14
+ # setup do
15
+ # stub_get('http://api.songkick.com/api/3.0/events.json', 'events.json')
16
+ # @remote = Songkickr::Remote.new 'omgwtfbbq_fake_key'
17
+ # end
18
+ #
19
+ # should "generate a remote" do
20
+ # assert_not_nil @remote
21
+ # end
22
+ #
23
+ # should "generate nil results" do
24
+ # [nil, ':artist_name => ""', ':artist_name => "Madonna"'].each do |remote_params|
25
+ # assert_nil @remote.send(:events, remote_params).results
26
+ # end
27
+ # end
28
+ # end
29
+
30
+ end
@@ -0,0 +1,10 @@
1
+ require 'helper'
2
+
3
+ class TestSongkickr < Test::Unit::TestCase
4
+ should "have an api key if one is passed in" do
5
+ s = Songkickr
6
+ key = s.api_key = '123abc'
7
+
8
+ assert_not_nil s.api_key
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: songkickr
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - Jared Mehle
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-05-03 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: thoughtbot-shoulda
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :development
31
+ version_requirements: *id001
32
+ description: "A Ruby wrapper around the Songkick API. Visit www.songkick.com/developer for documentation on the Songkick API. "
33
+ email: jrmehle@gmail.com
34
+ executables: []
35
+
36
+ extensions: []
37
+
38
+ extra_rdoc_files:
39
+ - LICENSE
40
+ - README.rdoc
41
+ files:
42
+ - .document
43
+ - .gitignore
44
+ - LICENSE
45
+ - README.rdoc
46
+ - Rakefile
47
+ - VERSION
48
+ - lib/songkickr.rb
49
+ - lib/songkickr/artist.rb
50
+ - lib/songkickr/concert_setlist_result.rb
51
+ - lib/songkickr/event.rb
52
+ - lib/songkickr/event_result.rb
53
+ - lib/songkickr/location.rb
54
+ - lib/songkickr/performance.rb
55
+ - lib/songkickr/remote.rb
56
+ - lib/songkickr/setlist.rb
57
+ - lib/songkickr/setlist_item.rb
58
+ - lib/songkickr/venue.rb
59
+ - songkickr.gemspec
60
+ - test/fixtures/events.json
61
+ - test/fixtures/no_events.json
62
+ - test/helper.rb
63
+ - test/songkickr/test_artist.rb
64
+ - test/songkickr/test_remote.rb
65
+ - test/test_songkickr.rb
66
+ has_rdoc: true
67
+ homepage: http://github.com/jrmehle/songkickr
68
+ licenses: []
69
+
70
+ post_install_message:
71
+ rdoc_options:
72
+ - --charset=UTF-8
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ requirements: []
90
+
91
+ rubyforge_project:
92
+ rubygems_version: 1.3.6
93
+ signing_key:
94
+ specification_version: 3
95
+ summary: A Ruby wrapper around the Songkick API.
96
+ test_files:
97
+ - test/helper.rb
98
+ - test/songkickr/test_artist.rb
99
+ - test/songkickr/test_remote.rb
100
+ - test/test_songkickr.rb