`
yzd
  • 浏览: 1818644 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

转换mp3名称的小程序

 
阅读更多
<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 &gt; 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 = '//:*?"&lt;&gt;|'<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, ' --&gt; ', 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) &gt; 1:<br> p = sys.argv[1]<br> os.path.walk(p, RenameMp3File,0)
分享到:
评论

相关推荐

    转换 AMR 文件的应用程序

    AMR Player 是一款用户能够转换 AMR 文件的应用程序。...如果你想AMR转换成MP3格式,只需选择一个AMR文件,你增加了,点击“ AMR到MP3 ” ,输入一个MP3文件名称,免费程序可以转换您的 AMR 文件一次。

    python3实现语音转文字(语音识别)和文字转语音(语音合成)

    程序直接帮你把转换好的mp3文件输出(因为下一步–语音识别–需要.pcm格式的文件,程序自动执行格式转换,同时生成17k.pcm文件,暂时不用管,(你也可以通过修改默认参数改变文件输出的位置,名称及是否进行pcm转换 ...

    C#程序开发范例宝典(第2版).part08

    实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及PNPDeviceID 278 实例194 如何收听...

    PHP程序开发范例宝典III

    实例250 使用格式化函数转换查询条件的数据类型 385 实例251 在查询中使用字符串函数 387 实例252 在查询中使用日期函数 388 8.19 having语句应用 390 实例253 利用having语句过滤分组数据 390 ...

    易语言程序免安装版下载

     静态编译后的易语言可执行程序(exe)和动态链接库(dll),运行时不再依赖任何支持库文件,文件尺寸更小(相对以前的独立编译),PE结构更合理(取消了“易格式体”),加载速度更快,而且有效解决了“病毒误报”和...

    C#程序开发范例宝典(第2版).part12

    实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及PNPDeviceID 278 实例194 如何收听...

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    119 利用Image控件制作小动画 cc实例120 透明的Flash动画 cc实例121 播放GIF动画 cc实例122 播放AVI动画 cc实例123 播放VCD 4.2 制作与播放音频 cc实例124 可以选择播放曲目的CD播放器 cc实例125 MP3...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     cc实例119 利用Image控件制作小动画   cc实例120 透明的Flash动画   cc实例121 播放GIF动画   cc实例122 播放AVI动画   cc实例123 播放VCD   4.2 制作与播放音频   cc实例124 可以选择播放曲目...

    〖千千静听〗使用技巧十七招

    右击,选择“使用网际快车下载全部链接”,再在打开的窗口中单击下方“选择特定”按钮,在打开窗口中选中歌曲文件扩展名,如mp3、wma,接着单击窗口上方“名称”标签,这样尽可能让相同扩展名的文件排在一起(如所有...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     cc实例119 利用Image控件制作小动画   cc实例120 透明的Flash动画   cc实例121 播放GIF动画   cc实例122 播放AVI动画   cc实例123 播放VCD   4.2 制作与播放音频   cc实例124 可以选择播放曲目...

    C#程序开发范例宝典(第2版).part13

    实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及PNPDeviceID 278 实例194 如何收听...

    C#程序开发范例宝典(第2版).part02

    实例189 利用Image制作小动画 274 5.4 媒体控制 275 实例190 检测是否安装声卡 275 实例191 打开和关闭CDROM 276 实例192 控制PC喇叭发声 277 实例193 获取显示设备的名称及PNPDeviceID 278 实例194 如何收听...

Global site tag (gtag.js) - Google Analytics