def update_events(venue_ids): for identifier in venue_ids: payload = {'apikey': SONGKICK, 'per_page': 50, 'page': 1} url = 'http://api.songkick.com/api/3.0/venues/'+str(identifier)+'/calendar.json?' r = requests.get(url, params=payload) r.raise_for_status() data = r.json() venue = Venue.get(venue_id=identifier) #venue.save() try: results = data['resultsPage']['results']['event'] except KeyError, error: print 'An error occured: %s: There are no upcoming events for this venue: %s' % (error, venue.name) continue for item in results: try: event_id = item['id'] name = item['displayName'] type = item['type'] status = item['status'] datetime = item['start']['datetime'] url = item['uri'] popularity = item['popularity'] except KeyError, error: print 'An error occured: %s: There is limited data for event: %s' % (error, event_id) pass event, _created = Event.get_or_create(event_id=event_id, venue=venue) event.name = name event.type = type event.status = status event.datetime = datetime event.url = url event.popularity = popularity print event.name event.save() for artist in item['performance']: try: artist_id = artist['artist']['id'] name = artist['artist']['displayName'] performer, _created = Artist.get_or_create(artist_id=artist_id, name=name) billing = artist['billing'] billing_index = artist['billingIndex'] p, _created = Performance.get_or_create(artist=performer, event=event) p.billing = billing p.billing_index = billing_index p.save() except KeyError, error: print 'An error occured %s' % error pass
def save_to_db(self): for track_info in self.tracks_info: artist, created = Artist.get_or_create(name=track_info['artist']) if "label" in track_info: label, created = Label.get_or_create(name=track_info['label']) track, created = Track.create_or_get(artist=artist.id, title=track_info['title']) track.label = label.id track.save() else: track, created = Track.create_or_get(artist=artist.id, title=track_info['title']) self.setlist_trackids.append(track.id) return