<span style="color: rgb(51,153,102);">#!/usr/bin/env python</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);"># -*- coding: cp936 -*-</span><br style="color: rgb(51,153,102);"><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">"""</span><br style="color: rgb(51,153,102);"><p style=""><font color="#00ae00">用于批量转换特定目录下所有<font>MP3</font></font><font color="#00ae00">名称(包括改目录下所有子目录),新名称格式:“演唱者-歌曲名称”。</font></p>
<p style=""><font><font color="#00ae00">Mp3</font></font><font color="#00ae00">文件格式:</font></p>
<br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">at end of file - 128 bytes</span><br style="color: rgb(51,153,102);"><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">offset type len name</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">--------------------------------------------</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">0 char 3 "TAG"</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">3 char 30 title</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">33 char 30 artist</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">63 char 30 album</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">93 char 4 year</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">97 char 30 comments</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">127 byte 1 genre</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">--------------------------------------------</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);">"""</span><br><br>import sys<br>import os<br>import os.path<br><br>class MP3INFO:<br><p style=""><font><font color="#00ae00"> """</font></font><font color="#00ae00">读取<font>mp3</font></font><font color="#00ae00">文件中的演唱者和歌曲名称信息<font>"""</font></font></p>
def __init__(self, filename):<br> self.title = ''<br> self.artist = ''<br><br> f = file(filename,'rb')<br> f.seek(-128,2)<br> s=f.read(3)<br><br> if s == 'TAG': <span style="color: rgb(51,153,102);"># 判断是否是mp3文件</span><br> strlist = []<br> for i in (30,30):<br> s = f.read(i)<br> pos = s.find('/0')<br> if pos == 0:<br> s = ''<br> elif pos > 0:<br> s = s[0:pos]<br> strlist.append(s.strip())<br> self.title, self.artist = strlist<br><br> f.close()<br><br>def RenameMp3File(arg,dirname,names):<font color="#00ae00"><br><font>"""dirname: </font></font><font color="#00ae00">目录名;</font><font color="#00ae00"><font>names</font></font><font color="#00ae00">:目录下所有文件列表<font>"""</font></font> <br> for name in names:<br> filename = dirname + '/' + name<br> if os.path.isdir(filename) or name[-3:].lower() != 'mp3':<br> pass<span style="color: rgb(51,153,102);"> #</span><font color="#33cc66">该文件如果是目录或不是<font>.mp3</font></font><font color="#33cc66">文件,则什么也不作</font> <br> else:<br> mp3 = MP3INFO(filename)<font><font color="#33cc66"><br> #</font></font><font color="#33cc66">拼装新的文件名</font> <br> if mp3.title == '':<br> mp3filename = name<br> elif mp3.artist == '':<br> mp3filename = mp3.title + '.mp3'<br> else:<br> mp3filename = mp3.artist + ' - ' + mp3.title + '.mp3'<br><p style=""><font><font color="#33cc66"> #</font></font><font color="#33cc66">消除新文件名中的非法字符</font></p>
a = '//:*?"<>|'<br> t = [ x for x in mp3filename if x not in a]<br> mp3filename = ''<br> for x in t:<br> mp3filename += x<br><p style=""><font color="#33cc66"> <font>#</font>如果是在<font>winxp</font>下,无需判断字符编码<br><font> #linux</font></font><font color="#33cc66">下需要将原来的字符编码格式转换为<font>UTF8</font></font><font color="#33cc66">的格式,否则显示乱码</font><br></p>
codelist = ['gbk', 'hz', 'euc-tw', 'big5', 'gb18030', 'gb2312', /<br> 'utf-8', 'utf-16', 'big5-hkscs','iso-2022-cn',/<br> 'iso-2022-jp', 'iso-2022-kr', 'iso-8859-1']<br> #codelist = ['utf-8', 'gbk', 'big5', 'iso-8859-1']<br> for code in codelist:<br> try:<br> mp3filename = unicode(mp3filename, code)<br> mp3filename = mp3filename.encode('utf-8')<br><br><span style="color: rgb(51,153,102);"> # Judge that mp3.title not empty, because destination </span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);"> # filename will be equal to source filename when mp3.title</span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);"> # is empty. If not, it will throw OSError: duplication of </span><br style="color: rgb(51,153,102);"><span style="color: rgb(51,153,102);"> # filename when run 'os.rename(...)'</span><br style="color: rgb(0,128,128);"> if mp3.title != '' and mp3filename != name:<br> os.rename(filename, dirname + '/' + mp3filename)<br> print code, '---', filename, ' --> ', mp3filename<br> break<br> except OSError:<br> print 'duplication of name: ',filename<br> pass<br> except:<br> if code == codelist[-1]:<br> print code, '---', filename, ' ---', mp3filename<br> print "Unexpected error:", sys.exc_info()[0]<br> pass<br><br>if __name__ == '__main__':<br> p=r'/home/ljh/MyMusic'<br> if len(sys.argv) > 1:<br> p = sys.argv[1]<br> os.path.walk(p, RenameMp3File,0)
分享到:
相关推荐
AMR Player 是一款用户能够转换 AMR 文件的应用程序。...如果你想AMR转换成MP3格式,只需选择一个AMR文件,你增加了,点击“ AMR到MP3 ” ,输入一个MP3文件名称,免费程序可以转换您的 AMR 文件一次。
程序直接帮你把转换好的mp3文件输出(因为下一步–语音识别–需要.pcm格式的文件,程序自动执行格式转换,同时生成17k.pcm文件,暂时不用管,(你也可以通过修改默认参数改变文件输出的位置,名称及是否进行pcm转换 ...
实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及PNPDeviceID 278 实例194 如何收听...
实例250 使用格式化函数转换查询条件的数据类型 385 实例251 在查询中使用字符串函数 387 实例252 在查询中使用日期函数 388 8.19 having语句应用 390 实例253 利用having语句过滤分组数据 390 ...
静态编译后的易语言可执行程序(exe)和动态链接库(dll),运行时不再依赖任何支持库文件,文件尺寸更小(相对以前的独立编译),PE结构更合理(取消了“易格式体”),加载速度更快,而且有效解决了“病毒误报”和...
实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及PNPDeviceID 278 实例194 如何收听...
119 利用Image控件制作小动画 cc实例120 透明的Flash动画 cc实例121 播放GIF动画 cc实例122 播放AVI动画 cc实例123 播放VCD 4.2 制作与播放音频 cc实例124 可以选择播放曲目的CD播放器 cc实例125 MP3...
cc实例119 利用Image控件制作小动画 cc实例120 透明的Flash动画 cc实例121 播放GIF动画 cc实例122 播放AVI动画 cc实例123 播放VCD 4.2 制作与播放音频 cc实例124 可以选择播放曲目...
右击,选择“使用网际快车下载全部链接”,再在打开的窗口中单击下方“选择特定”按钮,在打开窗口中选中歌曲文件扩展名,如mp3、wma,接着单击窗口上方“名称”标签,这样尽可能让相同扩展名的文件排在一起(如所有...
cc实例119 利用Image控件制作小动画 cc实例120 透明的Flash动画 cc实例121 播放GIF动画 cc实例122 播放AVI动画 cc实例123 播放VCD 4.2 制作与播放音频 cc实例124 可以选择播放曲目...
实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及PNPDeviceID 278 实例194 如何收听...
实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及PNPDeviceID 278 实例194 如何收听...