def list(self, args): num = 0 infos = disc_info() for disc in infos: num = num + 1 disc['num'] = num print('%(num)d - %(artist)s - %(title)s - %(date)s - %(country)s' % disc) if len(infos) < 1: print('[warning] no info found in the MusicBrainz database.') print('Consider adding it via: %s' % disc_sumission_url())
def rip(self, args): # read config config = Config() config.load(args.config) #get profile profile = config.get_profile(args.profile) # read disc info di = disc_info() disc = di[args.num - 1] # use command line arguments to override musicbrainz data if args.genre: disc['genre'] = args.genre disc['discnumber'] = args.disc_number # edit if args.edit: disc = edit_info(disc, config) # prepare the formater formater = Formater(profile) # prepare folder folder_name = formater.format('folder', disc) folder = os.path.join(config['output']['basedir'], folder_name) try: os.makedirs(folder) except OSError: print("[warning] directory already exists or permission denied") #metafiles ff = formater.format('metafiles', disc) #prepare hash hasher = Hasher(folder, ff, profile) #prepare playlist m3u = M3U(folder, ff, profile) #read content of previous playlist and hasher for multicd if args.multi_cd: m3u.load() hasher.load() #set trackformater by checking multicd arguments track_formater = 'track_multicd' if args.multi_cd else 'track' #track jobs. for track in disc['tracks']: track_name = formater.format(track_formater, disc, track) track_path = u'%s/%s' % (folder, track_name) track_ext = profile['tools']['encoder']['extension'] track_out = u'%s.%s' % (track_path, track_ext) track_wav = u'%s.wav' % (track_path) track_info = { 'date': disc['date'], 'tracknumber': str(track['tracknumber']), 'discnumber': str(disc['discnumber']), 'title': track['title'], 'album': disc['title'], 'artist': disc['artist'], 'genre': disc['genre'], } #rip print('rip:', track_name) track_rip(track['tracknumber'], track_wav, profile['tools']['ripper'], config['logging']) #encode print('encode:', track_name) track_enc(track_wav, track_out, profile['tools']['encoder'], config['logging']) #tags print('tag:', track_name) track_tag(track_out, track_info) #get the real track length track_duration = track_length(track_out) #perform hash on the file hasher.perform(u'%s.%s' % (track_name, track_ext)) #playlist m3u.append(u'%s.%s' % (track_name, track_ext), track['title'], track_duration) #save hash hasher.save() #save playlist m3u.save()
def info(self, args): infos = disc_info() info = infos[args.num - 1] for track in info['tracks']: print('%(tracknumber)s - %(title)s - %(duration)s' % track)