mp3 ID3 use python
来源:互联网 发布:软件功能 编辑:程序博客网 时间:2024/05/11 18:57
我都不知道给这货起个什么名字好……
话说,Michael Lees让我们写一个python程序,能够读取mp3中的ID3信息,例如什么作者,专辑,年份,等等~
研究了一上午……对着一堆HEX无语发愁……
对了……还好有sublime text 2~虽然不知道插件我是怎么装上的~但是用起来还是不错的~虽然卡了很多次,但我相信那是在运行……呵呵……
上一下部分的16进制代码……
算了……截图吧……
哈哈~造型不错~
继续……然后可以看到最右侧ID3 紧跟其后的 #v 我就一直不知道是个毛线……
TYER是百度百科告诉我的……年份,于是就可以用这个关键词来搜索了~
写到这里我突然想到一个修正代码的部分,待会放了代码再说~
__author__ = 'Lu Shengliang'import structdef check(st,length): l = '' for i in range(length-1): l += 'b' now = struct.unpack(l, st) ans = '' for i in now: ans += chr(i) return ansdef main(): fd = open('Yellow Submarine-The Beatles.mp3', 'rb') s = '' while len(s) < 100000: c = fd.read(4) #print(c) s += str(c) if 'IT' in str(c): buffer = fd.read(4) t = fd.read(1) length = ord(t) if length>10: buffer = fd.read(3) name = fd.read(length-1) print("title: ", check(name, length)) elif 'TY' in str(c): buffer = fd.read(5) t = fd.read(1) length = ord(t) buffer = fd.read(3) year = fd.read(length-1) print("year: ", check(year, length)) buffer = fd.read(3) #print(s)if __name__ == '__main__': main()
我强烈的承认,这是我写的最丑的python代码……啊啊啊啊……受不了了……
大体意思就是为了找关键字,然后看看关键字后面几个空格之后跟随着的显示后面代码长度的空格(16进制下因为太短,没有对应的字符,依旧显示成为空格了)比如 5 或者 1d什么的~
接下来就是输出了
import structstruct.unpack(fmt, buffer)
Unpack from the buffer buffer (presumably packed by pack(fmt, ...)) according to the format string fmt. The result is a tuple even if it contains exactly one item. The buffer must contain exactly the amount of data required by the format (len(bytes) must equal calcsize(fmt)).
我只能说……真的是python2和python3不一样……之前这个buffer位置是个string,如今成了bytes……害得我错了好久……
然后用这个struct.unpack就可以把讨厌的16进制转成了普通的 ASCII, chr一下就好了~
我想到的改进就是每次都把当前的c填补到4 bytes. 如果没用,就把第一个byte删掉,重复循环。
这样就能避免 因为 ID3结构不像之前什么30-byte title这样规整而产生的错误了。
下次再说吧……等看看Michael 给我们讲的好不好了……
讲的精彩那我再考虑重新写写……咩……承认一直以来都很懒,不认真……
- mp3 ID3 use python
- MP3 ID3
- MP3 Tag id3(MP3标签 id3)
- MP3 ID3 格式解析
- MP3 ID3 格式解析
- MP3音频文件信息ID3
- MP3 ID3 格式解析
- mp3的id3
- MP3的ID3解析
- MP3 ID3信息解析
- MP3 和 ID3
- MP3的ID3解析
- 什么是MP3 的 id3
- [Ruby乐趣]读写Mp3 ID3标签
- mutagen编辑mp3 id3的信息
- MP3文件的ID3 Tag是什么?
- 获取mp3里的id3信息
- MP3 ID3文本使用的编码
- 后缀数组+RMQpoj3693
- 中文555句
- HDU 4421 2-SAT
- 老调重谈,关于java的环境变量配置
- 判断一个数组是否为二叉树的后序遍历
- mp3 ID3 use python
- css中的定位
- 恒生基财事业部面试感想
- Android笔记
- 装Windows 8 过程中遇到的问题,及解决方案
- 如何向 appstore 查询已发布 APP 的信息?
- LINUX 2440-GPIO操作 .
- Unity ShaderLab 笔记2 Properties
- What does _imp_<Function> mean?