1import sys 2import os 3import tempfile 4 5 6from tools import Tools 7 8class Demuxer: 9 def __init__(self,tools,filename,type): 10 if not self.CreateDirectory(): 11 raise Exception, 'Failed to create directory' 12 self.Demux(tools,filename,type) 13 14 def GetDirectory(self): 15 return self.directory 16 17 def CreateDirectory(self): 18 try: 19 self.directory=tempfile.mkdtemp(dir='.',prefix='katedj-tmp-extract-') 20 except OSError,e: 21 return False 22 return True 23 24 def GetCodecs(self,tools): 25 cmdline=tools.codecs_command 26 if cmdline!=None: 27 try: 28 popen=subprocess.Popen(cmdline,stdin=None,stderr=subprocess.PIPE,stdout=subprocess.PIPE,universal_newlines=True,shell=True) 29 if popen.stdout: 30 list=[] 31 line=popen.stdout.readline() 32 while line: 33 line=line.split('\n')[0] 34 if line and 'Kate' not in line: 35 list.append(line) 36 line=popen.stdout.readline() 37 popen.stdout.close() 38 return list 39 except: 40 pass 41 return ['theora','vorbis','dirac','speex','flac','cmml'] 42 43 def DemuxMisc(self,tools,filename): 44 params=[] 45 params+=['-o',os.path.join(self.directory,'misc.ogg')] 46 for codec in self.GetCodecs(tools): 47 params+=['-c',codec] 48 params+=[filename] 49 tools.run_demux(params) 50 51 def DemuxKate(self,tools,filename,type): 52 params=[] 53 params+=['-o',os.path.join(self.directory,'kate.%l.%c.%i.%s.kate')] 54 params+=['-t',type] 55 params+=[filename] 56 tools.run_katedec(params) 57 58 def Demux(self,tools,filename,type): 59 self.DemuxMisc(tools,filename) 60 self.DemuxKate(tools,filename,type) 61 62if __name__=='__main__': 63 tools=Tools() 64 file='../../built-streams/demo.ogg' 65 if len(sys.argv)>1: 66 file=sys.argv[1]; 67 demuxer=Demuxer(tools,file) 68