def update_artists(count=queries_per_run): refresh_date = datetime.date.today() - datetime.timedelta(artist_refresh_days) artists = Artist.select( AND(Artist.q.approved != None, OR(Artist.q.batch_updated == None, Artist.q.batch_updated < refresh_date)) ) count = min(artists.count(), count) email_txt = "" for artist in artists[:count]: try: lastfm_artist_update(artist) mbz_artist_update(artist) recording_artist_update(artist) artist.batch_updated = datetime.datetime.now() except: import traceback email_txt += "artist error: '%s'\n" % artist.name email_txt += traceback.format_exc() time.sleep(1) if email_txt: util.email("*****@*****.**", "BandRadar <*****@*****.**>", "artist errors", email_txt) return count
def _foo(): """test, do not use""" amazon_src = Source.byName("amazon") done_artists = Artist.select(Artist.q.recordings_updated != None) for artist in done_artists: for record in artist.recordings: if record.source == amazon_src: record.destroySelf() for recording in amazon.recordings(artist.name): Recording( name=recording["name"], by=artist, url=recording["url"], img_url=recording["img_url"], source=amazon_src )
def search_artist(term): query = Artist.select().where((fn.LOWER(Artist.artist_name).contains(term.lower()))) return list(query)
def artist_count(): return Artist.select().count()