コード例 #1
0
ファイル: structure.py プロジェクト: gut/id3tagger
	def __init__(self, _filename):
		self.filename = _filename
		self.basename = path.basename(_filename)
		tag = Tag()
		tag.link(self.filename)
		for t in DESIRED_TAGS:
			# e.g: self.tags['Artist'] = tag.getArtist()
			if t == 'Genre':
				self.tags[t] = tag.getGenre().getName() if tag.getGenre() else "Unknown Genre"
			elif t == 'TrackNum' or t == 'DiscNum':
				self.tags[t] = eval('tag.get%s()' % t)[0]  # Tuple: (TrackNum, TotalTracks)
			else:
				self.tags[t] = eval('tag.get%s()' % t)
		# by default the new tags are the same as the old ones
		self.new_tags = copy(self.tags.copy)
コード例 #2
0
ファイル: MusicFile.py プロジェクト: sublee/MusicFileRenamer
class MusicFile:
    def __init__(self, filename = None):
        self.t = Tag()
        if filename:
            self.open(filename)
    def open(self, filename):
        if not isinstance(filename, unicode):
            filename = filename.decode(detect(filename)['encoding'])
        self.t.link(filename)
        self.filename = filename
    def __getattr__(self, name):
        if name == 'album':
            return self.t.getAlbum()
        elif name == 'artist':
            return self.t.getArtist()
        elif name == 'comment':
            return self.t.getComment()
        elif name == 'comments':
            return self.t.getComments()
        elif name == 'disc':
            return self.t.getDiscNum()
        elif name == 'genre':
            return self.t.getGenre()
        elif name == 'images':
            return self.t.getImages()
        elif name == 'lyric':
            return self.t.getLyrics()[0]
        elif name == 'playcount':
            return self.t.getPlayCount()
        elif name == 'publisher':
            return self.t.getPublisher()
        elif name == 'title':
            return self.t.getTitle()
        elif name == 'track':
            return self.t.getTrackNum()
        elif name == 'ver':
            return self.t.getVersionStr()
        elif name == 'year':
            return self.t.getYear()
        else:
            raise NameError
    def __repr__(self):
        return self.filename.encode(Encoding)
    def getNewname(self, pattern):
        if not isinstance(pattern, unicode):
            pattern = pattern.decode(detect(pattern)['encoding'])
        newname = pattern
        for match in re.compile('(#\\((title|album|artist|track|genre)(:(\\d*))?\\))').finditer(newname):
            newname = newname.replace(match.group(),
                                      self.__getattr__(match.groups()[1])
                                      [:int(match.groups()[3]) if match.groups()[3] else None]
                                      )
        return reduce(lambda s, x: s.replace(x, ''), [newname, '/', ':', '*', '?', '"', '<', '>', '|'])
    def rename(self, pattern):
        newname = self.getNewname()
        newpath = dirname(self.filename) + newname + '.' + self.filename.split('.')[-1] 
        os.rename(self.filename, newpath.encode(Encoding))
        self.open(newpath.encode(Encoding))
        return self
コード例 #3
0
ファイル: Convert.py プロジェクト: rodbegbie/MetaRipper
                    tposHeader = FrameHeader(tag.header)
                    tposHeader.id = "TPOS"
                    tpos = TextFrame(tposHeader)
                    tpos.text = "%d/%d" % discMeta.discNumber
                    tag.frames.append(tpos)

                    # Also update the TRCK to be in x/y format
                    tag.frames["TRCK"][0].text = "%d/%d" % (trackNum, len(discMeta.tracks))
                    needsUpdate = True
                    
                if discMeta.releaseDate and not tag.getDate():
                    print "Setting release year"
                    tag.setDate(discMeta.releaseDate)
                    needsUpdate = True

                if hasattr(discMeta, "genre") and discMeta.genre and not tag.getGenre():
                    print "Setting genre"
                    tag.setGenre(discMeta.genre)
                    needsUpdate = True
                        
                if needsUpdate:
                    try:
		    	tag.setTextEncoding(UTF_8_ENCODING)
                        tag.update()
                    except:
                        print "FAILED first time -- trying again"
			try:
                            sleep(1.0)
                            tag.update()
			except:
			    print "MEGA FAIL!"
コード例 #4
0
ファイル: Convert.py プロジェクト: rodbegbie/MetaRipper
                    tpos = TextFrame(tposHeader)
                    tpos.text = "%d/%d" % discMeta.discNumber
                    tag.frames.append(tpos)

                    # Also update the TRCK to be in x/y format
                    tag.frames["TRCK"][0].text = "%d/%d" % (
                        trackNum, len(discMeta.tracks))
                    needsUpdate = True

                if discMeta.releaseDate and not tag.getDate():
                    print "Setting release year"
                    tag.setDate(discMeta.releaseDate)
                    needsUpdate = True

                if hasattr(discMeta,
                           "genre") and discMeta.genre and not tag.getGenre():
                    print "Setting genre"
                    tag.setGenre(discMeta.genre)
                    needsUpdate = True

                if needsUpdate:
                    try:
                        tag.setTextEncoding(UTF_8_ENCODING)
                        tag.update()
                    except:
                        print "FAILED first time -- trying again"
                        try:
                            sleep(1.0)
                            tag.update()
                        except:
                            print "MEGA FAIL!"
コード例 #5
0
ファイル: Convert-010.py プロジェクト: rodbegbie/MetaRipper
                        print "Updating TSO2 fields"
                        tpe2Header = FrameHeader(tag.header)
                        tpe2Header.id = "TSO2"
                        tpe2 = TextFrame(tpe2Header)
                        tpe2.text = discMeta.artistSort
                        tag.frames.append(tpe2)
                        needsUpdate = True
                    except:
                        print "SOMETHING WENT BAD :("

                if discMeta.releaseDate and not tag.getDate():
                    print "Setting release year"
                    tag.setDate(discMeta.releaseDate)
                    needsUpdate = True

                if hasattr(discMeta, "genre") and discMeta.genre and not tag.getGenre():
                    print "Setting genre"
                    tag.setGenre(discMeta.genre)
                    needsUpdate = True

                if needsUpdate:
                    try:
                        tag.setTextEncoding(UTF_8_ENCODING)
                        tag.update()
                    except:
                        print "FAILED first time -- trying again"
                        try:
                            sleep(1.0)
                            tag.update()
                        except:
                            print "MEGA FAIL!"