def get_track_data(path): try: md5 = get_md5sum(path) shortname = short_path(path) track_metadata[shortname] = track.track_from_md5(md5) except util.EchoNestAPIError: track_missing.append(path) print "Couldn't find track '%s'. Try song.search?" % shortname
# Uncomment to set the API key explicitly. Otherwise Pyechonest will # look in the ECHO_NEST_API_KEY environment variable for the key. #from pyechonest import config #config.ECHO_NEST_API_KEY='YOUR API KEY' from pyechonest import track c_major_file = track.track_from_filename('c_major.mp3', filetype='mp3') c_major_md5 = track.track_from_md5(c_major_file.md5) c_major_ra_md5 = track.track_from_reanalyzing_md5(c_major_file.md5) for c_major in (c_major_md5, c_major_ra_md5): print 'track ID: %s' % c_major.id print 'segment pitches:' print('%8s ' + '%-4s ' * 12) % ('start', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B') for a_dict in c_major.segments: print('%8.2f ' + '%4.2f ' * 12) % ( (a_dict['start'], ) + tuple(a_dict['pitches'])) print ''
def run(self): log.info('maintenance walker') log.info('action: %s' % self.action) if self.action == 'check_media': from alibrary.models import Media if self.id: items = Media.objects.filter(id=self.id) else: items = Media.objects.filter()[0:self.limit] for item in items: delete = False if not item.master: log.info('no master for: %s' % item) if self.delete_missing: log.info('delete item: %s' % item) delete = True else: log.debug('got master for: %s' % item) log.debug('path: %s' % item.master.path) #print item.master.path if os.path.isfile(item.master.path): size = b = os.path.getsize(item.master.path) log.debug('filesize: %s' % size) if size < 10: log.debug('size too small or zero > delete: %s' % size) else: log.debug('file does not exist') delete = True if delete and self.delete_missing: log.info('delete item: %s' % item) item.delete() if not delete: item.status = 1 item.save() if self.action == 'echonest_media': from alibrary.models import Media if self.id: items = Media.objects.filter(id=self.id) else: items = Media.objects.filter(echonest_id=None)[0:self.limit] for item in items: log.info('analyze: %s' % item) item.echonest_analyze() if self.action == 'clean_playlists': from alibrary.models import PlaylistItem from alibrary.models import Media items = PlaylistItem.objects.all() for item in items: log.info('clean: %s' % item.pk) if not item.content_object: log.info('no content object > delete: %s' % item.pk) item.delete() # m = Media.objects.get(pk=item.) if self.action == 'self_check_playlists': from alibrary.models.playlistmodels import self_check_playlists # reset # ps = Playlist.objects.all() # ps.update(status=1) self_check_playlists() if self.action == 'degrade_playlists': from alibrary.models.playlistmodels import Playlist ps = Playlist.objects.filter(type='broadcast').exclude(status=1) ps.update(type='playlist', status=1) if self.action == 'map_tags': from alibrary.models import Media if self.id: items = Media.objects.filter(id=self.id) else: items = Media.objects.filter()[0:self.limit] for item in items: if item.tags.count() < 1: print item print 'map release tags' if item.release and item.release.tags.count() > 0: item.tags = item.release.tags item.save() if self.action == 'echonest_media__': from alibrary.models import Media from pyechonest.util import EchoNestAPIError from pyechonest import track from pyechonest import config as echonest_config echonest_config.ECHO_NEST_API_KEY=ECHONEST_API_KEY if self.id: items = Media.objects.filter(id=self.id) else: items = Media.objects.filter(status=0)[0:self.limit] for item in items: log.info('analyze: %s' % item) #md5 = '96fa0180d225f14e9f8cbfffbf5eb81d' t = None if item.echonest_id: try: log.debug('query by echonest id: %s' % item.echonest_id) t = track.track_from_id(item.echonest_id) except EchoNestAPIError, e: print e if not t: try: f = open(item.master.path) md5 = md5_for_file(f); log.debug('query by md5: %s' % md5) t = track.track_from_md5(md5) except EchoNestAPIError, e: print e if not t: try: log.debug('query by file: %s' % item.master.path) f = open(item.master.path) t = track.track_from_file(f, 'mp3') except EchoNestAPIError, e: print e
# Uncomment to set the API key explicitly. Otherwise Pyechonest will # look in the ECHO_NEST_API_KEY environment variable for the key. #from pyechonest import config #config.ECHO_NEST_API_KEY='YOUR API KEY' from pyechonest import track c_major_file = track.track_from_filename('c_major.mp3', filetype='mp3') c_major_md5 = track.track_from_md5(c_major_file.md5) c_major_ra_md5 = track.track_from_reanalyzing_md5(c_major_file.md5) for c_major in (c_major_md5, c_major_ra_md5): print 'track ID: %s' % c_major.id print 'segment pitches:' print ('%8s ' + '%-4s ' * 12) % ('start', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B') for a_dict in c_major.segments: print ('%8.2f ' + '%4.2f ' * 12) % ((a_dict['start'], ) + tuple(a_dict['pitches'])) print ''