下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。
内存溢出小编现在分享给大家,也给大家做个参考。
#! /usr/bin/env python# enCoding: utf8import sysimport osimport binasciiimport Jsondef getID3Info(fp): ID3Tags = [] frameIDs = ['AENC','APIC','COMM','Comr','ENCR','ETC0','GEOB','GRID','IPLS','MCDI','MLLT','OWNE','PRIV','PCNT','POPM','POSS','RBUF','RVAD','RVRB','SYLT','SYTC','TALB','TBPM','TCOM','TCON','Tcop','TDAT','TDLY','TENC','TEXT','TFLT','TIME','TIT1','TIT2','TIT3','TKEY','TLAN','TLEN','TMED','TOAL','TOFN','TolY','topE','TORY','TOWM','TPE1','TPE2','TPE3','TPE4','TPOS','TPUB','TRCK','TRDA','TRSN','TRSO','TSIZ','TSRC','TSSE','TYER','TXXX','UFID','USER','USLT','WCOM','Wcop','WOAF','WOAR','WOAS','WORS','WPAY','WPUB','WXXX'] fp.read(10) while True: ID3Info = {} tag = fp.read(4) if tag not in frameIDs: break sizePos = fp.tell() binSize = fp.read(4) size = int(binascii.b2a_hex(binSize),16) fp.read(2) conPos = fp.tell() cont = fp.read(size) ID3Info['sizePos'] = sizePos ID3Info['size'] = size ID3Info['tag'] = tag ID3Info['conPos'] = conPos ID3Info['con'] = cont ID3Tags.append(ID3Info) return ID3Tagsdef getCon(ID3Info,tag): for info in ID3Info: if tag == info['tag']: return info['con']def getConPos(ID3Info,tag): for info in ID3Info: if tag == info['tag']: return info['conPos']def getConSize(ID3Info,tag): for info in ID3Info: if tag == info['tag']: return info['size']def getConSizePos(ID3Info,tag): for info in ID3Info: if tag == info['tag']: return info['sizePos']def writeInfo(path,tag,newCon): fp = open(path,'rb') ID3Info = getID3Info(fp) fp.seek(0) oldCon = getCon(ID3Info,tag) size = getConSize(ID3Info,tag) sizePos = getConSizePos(ID3Info,tag) tmpSize = str(len(newCon) + 1) while(len(tmpSize) < 8): tmpSize = '0' + tmpSize newSize = binascii.a2b_hex(tmpSize) split = binascii.a2b_hex('0000') newCon = binascii.a2b_hex('00') + newCon pre = fp.read(sizePos) fp.seek(getConPos(ID3Info,tag) + size) last = fp.read() newfile = pre + newSize + split + newCon + last p,n = os.path.split(path) b,l = os.path.splitext(n) newPath = os.path.join(p,b + "_" + newCon.strip('\x00') + l) newFp = open(newPath,'wb') newFp.write(newfile) newFp.close() fp.close() return newPathif __name__ == '__main__': if len(sys.argv) < 3: print "用法: getGenre.py 新的genre mp3文件" exit() newCon = sys.argv[1] abspath = os.path.abspath(sys.argv[2]) ret = writeInfo(abspath,"TCON",newCon) print ret + " OK"
以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
总结以上是内存溢出为你收集整理的修改mp3的id3 tag内容全部内容,希望文章能够帮你解决修改mp3的id3 tag内容所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)