转换mp3名称的小程序
# -*- coding: cp936 -*-
"""
用于批量转换特定目录下所有MP3名称(包括改目录下所有子目录),新名称格式:“演唱者-歌曲名称”。
Mp3文件格式:
at end of file - 128 bytes
offset type len name
--------------------------------------------
0 char 3 "TAG"
3 char 30 title
33 char 30 artist
63 char 30 album
93 char 4 year
97 char 30 comments
127 byte 1 genre
--------------------------------------------
"""
import sys
import os
import os.path
class MP3INFO:
"""读取mp3文件中的演唱者和歌曲名称信息"""
def __init__(self, filename):
self.title = ''
self.artist = ''
f = file(filename,'rb')
f.seek(-128,2)
s=f.read(3)
if s == 'TAG': # 判断是否是mp3文件
strlist = []
for i in (30,30):
s = f.read(i)
pos = s.find('/0')
if pos == 0:
s = ''
elif pos > 0:
s = s[0:pos]
strlist.append(s.strip())
self.title, self.artist = strlist
f.close()
def RenameMp3File(arg,dirname,names):
"""dirname: 目录名;names:目录下所有文件列表"""
for name in names:
filename = dirname + '/' + name
if os.path.isdir(filename) or name[-3:].lower() != 'mp3':
pass #该文件如果是目录或不是.mp3文件,则什么也不作
else:
mp3 = MP3INFO(filename)
#拼装新的文件名
if mp3.title == '':
mp3filename = name
elif mp3.artist == '':
mp3filename = mp3.title + '.mp3'
else:
mp3filename = mp3.artist + ' - ' + mp3.title + '.mp3'
#消除新文件名中的非法字符
a = '//:*?"<>|'
t = [ x for x in mp3filename if x not in a]
mp3filename = ''
for x in t:
mp3filename += x
#如果是在winxp下,无需判断字符编码
#linux下需要将原来的字符编码格式转换为UTF8的格式,否则显示乱码
codelist = ['gbk', 'hz', 'euc-tw', 'big5', 'gb18030', 'gb2312', /
'utf-8', 'utf-16', 'big5-hkscs','iso-2022-cn',/
'iso-2022-jp', 'iso-2022-kr', 'iso-8859-1']
#codelist = ['utf-8', 'gbk', 'big5', 'iso-8859-1']
for code in codelist:
try:
mp3filename = unicode(mp3filename, code)
mp3filename = mp3filename.encode('utf-8')
# Judge that mp3.title not empty, because destination
# filename will be equal to source filename when mp3.title
# is empty. If not, it will throw OSError: duplication of
# filename when run 'os.rename(...)'
if mp3.title != '' and mp3filename != name:
os.rename(filename, dirname + '/' + mp3filename)
print code, '---', filename, ' --> ', mp3filename
break
except OSError:
print 'duplication of name: ',filename
pass
except:
if code == codelist[-1]:
print code, '---', filename, ' ---', mp3filename
print "Unexpected error:", sys.exc_info()[0]
pass
if __name__ == '__main__':
p=r'/home/ljh/MyMusic'
if len(sys.argv) > 1:
p = sys.argv[1]
os.path.walk(p, RenameMp3File,0)
转载于:https://www.cnblogs.com/hainange/archive/2005/10/27/6153736.html
转换mp3名称的小程序相关推荐
- 简洁UI好玩的文字转换emoji表情微信小程序支持句子词语转换_源码
介绍: 支持自定义文字输入,支持随机切换,支持句子转换: 用emoji来做暗语啥的是不是很刺激,反正至于怎么玩就看各位的脑洞了~~ 这款小程序安装方法简单,无需服务器域名与合法域名!! 直接使用微信开 ...
- flv转为mp3 的python小程序
FLV格式文件转换为MP3格式文件的python运行程序 一:前提 FLV格式的文件是当前互联网比较常用的视频播放文件格式 最近在下载得到一些flv文件之后,想将它转换为更加方便的mp3格式文件.最开 ...
- 万能的ogg转换mp3格式的小技巧
ogg格式是压缩格式,和MP3比起来,他们的形式是相似的,这种格式有一个非常好的好处就是免费并且没有专利限制,相信对需要这种格式的人说是非常有利的,但是凡事都是有利有弊的,它有好处那必然也会有不好的一 ...
- 万能的ogg转换mp3格式的小技巧 1
ogg格式是压缩格式,和MP3比起来,他们的形式是相似的,这种格式有一个非常好的好处就是免费并且没有专利限制,相信对需要这种格式的人说是非常有利的,但是凡事都是有利有弊的,它有好处那必然也会有不好的一 ...
- java 微信时间戳转换工具_微信小程序实现时间戳格式转换
有时候我们会遇到,后台返回的时间是时间戳的形式,需要进行格式转换,如下: 两种形式: 1.封装好的 js,外部引入. 2.在需要的 js 文件中,封装单独函数. 一.封装好的 js,外部引入. 1.如 ...
- 如何将docx文本转换成使用微信小程序rich-text能编译的格式
文章目录 首先用wps打开文件,如果**有批注**先删除批注 将文件保存未html格式 删除多余代码 通过脚本生成目标文件 首先用wps打开文件,如果有批注先删除批注 选中其他一条批注,然后点击审阅 ...
- 公众号和小程序可以同名了 名称支持同主体复用
公众号和小程序不能同名?现在可以了!以前,小程序的名称不能和现有的公众号同名,现在支持同主体的情况下,小程序和公众号可以同名了.公众号.小程序在名称唯一的前提下,支持同主体的公众号与小程序名称复用. ...
- 百度网盘小程序互转工具:wx2正式开源!
" 2020年11月,百度网盘小程序互转工具WX2,正式开源!" wx2是一个小程序的转换工具,它可以一键将原生的微信小程序转化成百度小程序.作为一种轻量级小程序跨宿主解决方案,w ...
- python组件化软件github_GitHub - 872409/wepy: 小程序组件化开发框架
小程序框架wepy文档 扫码加入体验交流群. 快速入门 项目创建与使用 安装wepy 以下安装都通过npm安装 安装 wepy 命令行工具. npm install wepy-cli -g 在开发目录 ...
最新文章
- 图形显卡_显卡缺货?专业图形卡主机方案演示,Quadro P2200
- qt vs 不出来dos窗口_VS嵌入QT后,建立QT工程后printf和cout无效,无法产生控制台应用程序窗口,需设置工程属性...
- C++之struct构造函数(2010-10-19 15:04:47)
- Hyperledger Fabric 1.0 实战开发系列 第⑤课 fabric 证书解析
- pm2集群模式mysql配置_配置 PM2 一键部署
- 自己常用的Linux命令总结
- 基于JAVA+SpringMVC+MYSQL的简单企业人事管理系统
- 怎样得到对方的电脑名_吸引力法则让他想念你,让对方主动找你
- HTML案例登录页面
- 手机自动签到简易应用
- Matlab自编函数实现Sobel边缘检测
- IP城域网域内组播功能测试
- 微信小程序开发教程+工具插件
- 其实,以前都没发现------网易公开课
- Flutter时间日期格式化等操作(一个月的最后一天日期,时间段内所有日期...)
- Kalman滤波器参数分析
- 谢惠民,恽自求,易法槐,钱定边编数学分析习题课讲义23.2.3练习题参考解答[来自陶哲轩小弟]...
- 有哪些好的3D建模软件,最近对3D建模很感兴趣?
- dellr420部署os_Dell R420服务器手动安装centos7系统系列问题
- 985高校博士因文言文致谢走红!导师评价其不仅SCI写得好...
热门文章
- 健康检测文件httpchk.jsp
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~四 分部方法从另一方面定义了类型的操作规范...
- resteasy经验谈
- TestNg依赖详解(三)------灵活的文件配置依赖
- [python]使用virtualenv处理python版本问题
- git show HEAD^num和个git show HEAD~num的区别
- RTX Server SDK跨服务器
- Ubuntu12.04 Jdk1.7 Tomct7.0部署配置
- Java学习进度(2013.03.13)—Struts2学习一
- kibana7.10.1基本操作(饼图+直方图)