def cmd_db_stats(*args): """shows database statistics""" from ardj.database import Track tracks = Track.find_all() count = len(tracks) length = sum([t.get("length", 0) for t in tracks]) print "%u tracks, %.1f hours." % (count, length / 60 / 60)
def mark_long(): """Marks long tracks with the @long tag.""" tag = "long" length = Track2.get_average_length() ardj.database.execute("DELETE FROM `labels` WHERE `label` = ?", (tag, )) ardj.database.execute("INSERT INTO `labels` (`track_id`, `email`, `label`) SELECT id, \'ardj\', ? FROM tracks WHERE length > ?", (tag, length, )) count = ardj.database.fetch('SELECT COUNT(*) FROM labels WHERE label = ?', (tag, ))[0][0] ardj.database.commit() return length, count
def cmd_fix_artist_names(*args): """correct names according to Last.fm""" from ardj.scrobbler import LastFM from ardj.database import Track, commit cli = LastFM().authorize() if cli is None: print "Last.fm authentication failed." return False names = Track.get_artist_names() print "Correcting %u artists." % len(names) for name in names: new_name = cli.get_corrected_name(name) if new_name is not None and new_name != name: logging.info("Correcting artist name \"%s\" to \"%s\"" % (name.encode("utf-8"), new_name.encode("utf-8"))) Track.rename_artist(name, new_name) commit()