コード例 #1
0
ファイル: application.py プロジェクト: mathgl67/Afro
 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())
コード例 #2
0
ファイル: application.py プロジェクト: mathgl67/Afro
    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()
コード例 #3
0
ファイル: application.py プロジェクト: mathgl67/Afro
    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)