| Python 修改MP3
 用這個程序修改后的MP3比原來要小一些了,因為一張圖片被刪除了,起到了給MP3"瘦身"的作用。在一些mp3中,每個都有一張400多K的圖片,10幾個MP3,就相當一個普通MP3文件的大小了。 
[代碼] [Python]代碼
    
        
            | 017 | classProcess(threading.Thread):  |  
    
        
            | 021 | def__init__(self,msg,sleepTime):  |  
    
        
            | 022 | threading.Thread.__init__(self)  |  
    
        
            | 025 | self.sleepTime =sleepTime  |  
    
        
            | 026 | defsetPause(self,pause):  |  
    
        
            | 028 | defsetRunning(self,running):  |  
    
        
            | 029 | self.running =running  |  
    
        
            | 034 | time.sleep(self.sleepTime)  |  
    
        
            | 036 | defusage(code, msg=''):  |  
    
        
            | 040 | print>> sys.stderr, __doc__  |  
    
        
            | 042 | print>> sys.stderr, msg  |  
    
        
            | 045 | defcheckDir(argDir,create=False):  |  
    
        
            | 050 | if(notos.path.isdir(argDir)):  |  
    
        
            | 051 | currentDir =os.path.abspath(os.curdir)  |  
    
        
            | 052 | tempDir =os.path.join(currentDir,argDir)  |  
    
        
            | 053 | if(notos.path.isdir(tempDir) andcreate):  |  
    
        
            | 056 | usage(1,"目錄"+argDir+"不存在")  |  
    
        
            | 058 | tempDir =os.path.abspath(argDir)  |  
    
        
            | 061 | defclearMp3(srcFile,destFile):  |  
    
        
            | 067 | filesize =os.path.getsize(srcFile)  |  
    
        
            | 069 | srcfp =open(srcFile,'rb')  |  
    
        
            | 074 | if(notlen(size)==4):  |  
    
        
            | 075 | printsrcFile+'文件格式錯誤' |  
    
        
            | 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  |  
    
        
            | 086 | destfp =open(destFile,'wb')  |  
    
        
            | 087 | srcfp.seek(headSize,1)  |  
    
        
            | 088 | data=srcfp.read(1024)  |  
    
        
            | 091 | data=srcfp.read(1024)  |  
    
        
            | 093 | print'創(chuàng)建文件'+destFile+'錯誤',e  |  
    
        
            | 100 | printsrcFile+'不需要修改 拷貝',  |  
    
        
            | 102 | shutil.copyfile(srcFile,destFile)  |  
    
        
            | 103 | exceptException, ce:  |  
    
        
            | 115 | if__name__ =="__main__":  |  
    
        
            | 120 | sourceDir =checkDir(sys.argv[1])  |  
    
        
            | 121 | destDir =checkDir(sys.argv[2],True)  |  
    
        
            | 123 | print'Mp3源目錄',sourceDir  |  
    
        
            | 124 | print'Mp3目的目錄',destDir  |  
    
        
            | 126 | process =Process('...',1)  |  
    
        
            | 127 | pause =threading.Event()  |  
    
        
            | 128 | process.setPause(pause)  |  
    
        
            | 132 | forfilename inos.listdir(sourceDir):  |  
    
        
            | 133 | srcPath =os.path.join(sourceDir, filename)  |  
    
        
            | 134 | destPath =os.path.join(destDir, filename)  |  
    
        
            | 135 | ifos.path.isfile(srcPath):  |  
    
        
            | 136 | print'開始處理 '+filename,  |  
    
        
            | 137 | tempfilename =filename.lower()  |  
    
        
            | 138 | if(nottempfilename.endswith(mp3suffix)):  |  
    
        
            | 139 | printfilename+'不是一個mp3文件\n' |  
    
        
            | 142 | clearMp3(srcPath,destPath)  |  
    
        
            | 146 | process.running =False |  |