苗翠花与李小环高清:Python 修改MP3 - 代码分享 - 开源中国社区
来源:百度文库 编辑:九乡新闻网 时间:2024/05/22 01:42:30
Python 修改MP3Sephiroth 发布于 2010年11月16日 13时 (0评) 1人收藏此代码, 我要收藏(?) 用这个程序修改后的MP3比原来要小一些了,因为一张图片被删除了,起到了给MP3"瘦身"的作用。在一些mp3中,每个都有一张400多K的图片,10几个MP3,就相当一个普通MP3文件的大小了。标签: MP3
代码片段(1)
[代码] [Python]代码
view sourceprint?001
# -*- coding: cp936 -*-
002
"""
003
将MP3文件中的ID3V2.3部分去掉,以便在MP3机上播放
004
用法:mp3lcear [源mp3目录] [生成的mp3目录]
005
"""
006
import
sys
007
import
os
008
import
string
009
import
shutil
010
import
struct
011
import
thread
012
import
threading
013
import
time
014
015
mp3suffix
=
'mp3'
016
017
class
Process(threading.Thread):
018
"""
019
简单地在运行的过程中显示进度
020
"""
021
def
__init__(
self
,msg,sleepTime):
022
threading.Thread.__init__(
self
)
023
self
.msg
=
msg
024
self
.running
=
True
025
self
.sleepTime
=
sleepTime
026
def
setPause(
self
,pause):
027
self
.pause
=
pause
028
def
setRunning(
self
,running):
029
self
.running
=
running
030
def
run (
self
):
031
while
(
self
.running):
032
self
.pause.wait()
033
print
self
.msg,
034
time.sleep(
self
.sleepTime)
035
036
def
usage(code, msg
=
''):
037
"""
038
程序的使用方法
039
"""
040
print
>> sys.stderr, __doc__
041
if
msg:
042
print
>> sys.stderr, msg
043
sys.exit(code)
044
045
def
checkDir(argDir,create
=
False
):
046
"""
047
检查目录是否存在,如果create为Ture,则新建一个目录
048
"""
049
tempDir
=
None
050
if
(
not
os.path.isdir(argDir)):
051
currentDir
=
os.path.abspath(os.curdir)
052
tempDir
=
os.path.join(currentDir,argDir)
053
if
(
not
os.path.isdir(tempDir)
and
create):
054
os.mkdir(tempDir)
055
else
:
056
usage(
1
,
"目录"
+
argDir
+
"不存在"
)
057
else
:
058
tempDir
=
os.path.abspath(argDir)
059
return
tempDir
060
061
def
clearMp3(srcFile,destFile):
062
"""
063
修改mp3文件,并将其创建到destFile所指定的地址
064
"""
065
global
process
066
srcfp
=
None
067
filesize
=
os.path.getsize(srcFile)
068
try
:
069
srcfp
=
open
(srcFile,
'rb'
)
070
head
=
srcfp.read(
3
)
071
if
(head
=
=
'ID3'
):
072
srcfp.seek(
3
,
1
)
073
size
=
srcfp.read(
4
)
074
if
(
not
len
(size)
=
=
4
):
075
print
srcFile
+
'文件格式错误'
076
else
:
077
size0
=
struct.unpack(
'b'
,size[
0
])[
0
]
078
size1
=
struct.unpack(
'b'
,size[
1
])[
0
]
079
size2
=
struct.unpack(
'b'
,size[
2
])[
0
]
080
size3
=
struct.unpack(
'b'
,size[
3
])[
0
]
081
headSize
=
(((size0&
0x7f
)<<
21
) | ((size1&
0x7f
)<<
14
) | ((size2&
0x7f
)<<
7
) | (size3&
0x7f
))
082
filesize
=
filesize
-
headSize
083
destfp
=
None
084
try
:
085
dataLen
=
0
086
destfp
=
open
(destFile,
'wb'
)
087
srcfp.seek(headSize,
1
)
088
data
=
srcfp.read(
1024
)
089
while
(data!
=
''):
090
destfp.write(data)
091
data
=
srcfp.read(
1024
)
092
except
Exception,e:
093
print
'创建文件'
+
destFile
+
'错误'
,e
094
try
:
095
if
(destfp !
=
None
):
096
destfp.close
097
except
Exception,de:
098
print
de
099
else
:
100
print
srcFile
+
'不需要修改 拷贝'
,
101
try
:
102
shutil.copyfile(srcFile,destFile)
103
except
Exception, ce:
104
print
ce
105
except
Exception,oe:
106
print
'修改中出错'
,oe
107
try
:
108
if
(srcfp !
=
None
):
109
srcfp.close()
110
except
Exception,se:
111
print
de
112
113
114
115
if
__name__
=
=
"__main__"
:
116
if
(
len
(sys.argv)<
3
):
117
usage(
1
)
118
global
process
119
120
sourceDir
=
checkDir(sys.argv[
1
])
121
destDir
=
checkDir(sys.argv[
2
],
True
)
122
123
print
'Mp3源目录'
,sourceDir
124
print
'Mp3目的目录'
,destDir
125
126
process
=
Process(
'...'
,
1
)
127
pause
=
threading.Event()
128
process.setPause(pause)
129
130
process.start()
131
132
for
filename
in
os.listdir(sourceDir):
133
srcPath
=
os.path.join(sourceDir, filename)
134
destPath
=
os.path.join(destDir, filename)
135
if
os.path.isfile(srcPath):
136
print
'开始处理 '
+
filename,
137
tempfilename
=
filename.lower()
138
if
(
not
tempfilename.endswith(mp3suffix)):
139
print
filename
+
'不是一个mp3文件\n'
140
else
:
141
pause.
set
()
142
clearMp3(srcPath,destPath)
143
pause.clear()
144
print
'结束 \n'
145
pause.
set
()
146
process.running
=
False
147
sys.exit(
0
)
Python 修改MP3 - 代码分享 - 开源中国社区
Python 常用代码片段 - 代码分享 - 开源中国社区
Python 简洁ini读写 - 代码分享 - 开源中国社区
Python threading模块 - 代码分享 - 开源中国社区
Python 分割TXT文件成4K的TXT文件 - 代码分享 - 开源中国社区
新浪读书频道下载合成txt小说(修改) - 代码分享 - 开源中国社区
wxGlade - Python的可视化编程工具 - 开源中国社区
关于python的'版本选取+开发工具+扩展'的问题 - 开源中国社区
修改flash动画mp3,wma的代码
分享 7 大开源微博客程序【图文】 - 开源中国社区
修改图片大小代码:
修改图片大小的代码:
Python
python
上传和管理 Python 应用程序 - Google App Engine - Google 代码
Python 代码风格 和 PEP8 - 不过而而 - BlogJava
批量修改MP3的属性的办法
编程中国?>>?Python成为2010年度语言
美女Flash代码分享
分享导航模块代码
模块代码分享
图片素材仓库 分享代码
博客宝典(代码分享)
点击 分享 模块 代码