def PlayingVideoType(self): #import pdb; pdb.set_trace() registry = getUtility(IRegistry) settings = registry.forInterface(ITranscodeSetings) self.SERVER = self.RemoveSlash(settings.adress_of_streaming_server) VIDEO_PARAMETRES_TRANSCODE = settings.ffmpeg_parameters_video_line AUDIO_PARAMETRES_TRANSCODE = settings.ffmpeg_parameters_audio_line audio_content_types=settings.audio_valid_content_types video_content_types=settings.video_valid_content_types portal = getSite() self.STORAGE=ZCONFIG.storagePathForSite(portal) self.MyTitle = self.context.Title() idvideo=self.context.getId() self.MyTitleWhitOutSpace = MFNI.DeleteSpaceinNameOfFolderFile(MFNI.TitleDeleteSpace(self.MyTitle)) self.PathOfFile = self.context._getURL() virtualobject=self.context.getVideo() self.filenamesaved=virtualobject.filename self.extension=MTDI.CheckExtension(self.filenamesaved) if self.extension=="ogg" or self.extension=="ogv" or self.extension=="OGG" or self.extension=="OGV": self.folderfileOGG=path.join(self.PathOfFile,quote(self.filenamesaved)) self.prefiletranscoded=path.join(self.STORAGE,self.PathOfFile,self.filenamesaved) if path.isfile(self.prefiletranscoded)==True: self.StatusOfFile=ServiceList.available(idvideo,self.prefiletranscoded) if self.StatusOfFile == False: ServiceList.AddReadyElement(idvideo,self.prefiletranscoded) self.StatusOfFile=True ServiceList.SaveInZODB() self.AbsoluteServerPath = path.join(self.SERVER,self.folderfileOGG) else: self.AbsoluteServerPath = path.join(self.SERVER,self.folderfileOGG) else: print _("File not found "+self.prefiletranscoded) self.Error=True self.ErrorSituation() else: newtrans_init_(self.STORAGE, self.PathOfFile, self.filenamesaved, idvideo, VIDEO_PARAMETRES_TRANSCODE, AUDIO_PARAMETRES_TRANSCODE, audio_content_types, video_content_types) self.folderfileOGG=MTDI.newname(path.join(self.PathOfFile,self.filenamesaved)) self.AbsoluteServerPath = path.join(self.SERVER,MTDI.nginxpath(self.folderfileOGG)) self.newfiletranscoded=MTDI.nginxpath(path.join(self.STORAGE,self.folderfileOGG)) self.StatusOfFile = ServiceList.available(idvideo,self.newfiletranscoded) #import pdb;pdb.set_trace() if self.StatusOfFile == True: self.newfilename=MTDI.newname(self.filenamesaved) else: self.newfilename=_('The file is not ready yet, please contact site administration') return
def RenameObject(object, evt, STORAGE): #pdb.set_trace() file_object=object.getField(object.portal_type) name_original_file=file_object.getFilename(object) original_path=path.join(STORAGE,evt.oldParent._getURL(), evt.oldName) extension=MTD.CheckExtension(name_original_file) path_of_original_object=path.join(original_path,name_original_file) original_trascoded_file=MTD.nginxpath(path_of_original_object) if evt.oldParent is evt.newParent: destination_path=path.join(STORAGE,evt.oldParent._getURL(),evt.newName) else: destination_path=path.join(STORAGE,evt.newParent._getURL(),evt.newName) moved_object=path.join(destination_path, name_original_file) moved_transcode_object=path.join(destination_path,MTD.nginxpath(name_original_file)) #pdb.set_trace() if extension is 'ogg' or extension is 'OGG' or extension is 'ogv' or extension is 'OGV': return else: #pdb.set_trace() if ServiceList.root['waiting'] is not None: #El elemento esta en lista de espera para ser codificado if {evt.oldName:path_of_original_object} in ServiceList.root['waiting']: ServiceList.root['waiting'].remove({evt.oldName:path_of_original_object}) ServiceList.root['waiting'].append({evt.newName:moved_object}) ServiceList.SaveInZODB() elif ServiceList.root['ready'] is not None: if {evt.oldName:original_trascoded_file} in ServiceList.root['ready']: #El elemento fue recodificado ServiceList.root['ready'].remove({evt.oldName:original_trascoded_file}) if path.isfile(original_trascoded_file)==True and path.isdir(destination_path)==True: move(original_trascoded_file,destination_path) ServiceList.root['ready'].append({evt.newName:moved_transcode_object}) ServiceList.SaveInZODB() else: return elif path_of_original_object==ServiceList.root['current'] and isThisRunning('/usr/bin/ffmpeg -i '+path_of_original_object): # El elemento esta siendo codificado print "El archivo actual esta siendo codificado" system('/usr/bin/killall ffmpeg') if path.isdir(original_path)==True: if path.isfile(original_trascoded_file)==True: sleep(3) remove(trascoded_file) ServiceList.root['ready'].remove({object.id:original_trascoded_file}) ServiceList.root['waiting'].append({object.id:moved_object}) ServiceList.root['current']="" ServiceList.SaveInZODB() else: return else: return
def ModifiedElement(object, evt): request = getattr(object, "REQUEST", None) try: integrity_info = request.link_integrity_info if integrity_info.has_key("deleted") == True: return else: pass except AttributeError: pass portal = getSite() portal_path = "/".join(portal.getPhysicalPath()) STORAGE = ZCONFIG.storagePathForSite(portal) # pdb.set_trace() file_object = object.getField(object.portal_type) name_original_file = file_object.getFilename(object) original_path = path.join(STORAGE, evt.object._getURL()) # pdb.set_trace() for file_name in listdir(original_path): # pdb.set_trace() if ( (file_name == name_original_file) or (file_name == "fss.cfg") or (file_name == MTD.nginxpath(name_original_file)) ): pass else: remove(path.join(original_path, file_name)) return
def Custom_CopyObjet(object, evt): #TODO #pdb.set_trace() request=getattr(evt.original, 'REQUEST', None) portal = getSite() portal_path = '/'.join(portal.getPhysicalPath()) STORAGE=ZCONFIG.storagePathForSite(portal) destination_path=path.join(STORAGE,request['PARENTS'][0]._getURL(),evt.object.tpURL()) original_path=path.join(STORAGE,evt.original._getURL()) """ while path.isdir(destination_path)==False: if path.isdir(destination_path)==False: pass else: """ file_object=evt.original.getField(evt.original.portal_type) file_name=file_object.getFilename(evt.original) path_of_original_object=path.join(original_path, file_name) extension=MTD.CheckExtension(file_name) copy_object=path.join(destination_path, MTD.nginxpath(file_name)) #pdb.set_trace() if extension is 'ogg' or extension is 'OGG'\ or extension is 'ogv' or extension is 'OGV': return else: #pdb.set_trace() if ServiceList.root['waiting'] is not None: #El elemento esta en lista de espera para ser codificado if {object.id:path_of_original_object} in ServiceList.root['waiting']: ServiceList.root['waiting'].append({object.id:copy_object}) ServiceList.SaveInZODB() #pdb.set_trace() elif ServiceList.root['ready'] is not None: original_trascoded_file=MTD.nginxpath(path_of_original_object) if {object.id:original_trascoded_file} in ServiceList.root['ready']: #El elemento fue recodificado pdb.set_trace() if path.isdir(destination_path)==False: mkdir(destination_path) copy(original_trascoded_file,copy_object) ServiceList.root['ready'].append({object.id:copy_object}) ServiceList.SaveInZODB() else: pdb.set_trace() if path.isfile(original_trascoded_file)==True: copy(original_trascoded_file,copy_object) ServiceList.root['ready'].append({object.id:copy_object}) ServiceList.SaveInZODB() #pdb.set_trace() elif path_of_original_object==ServiceList.root['current'] and isThisRunning('/usr/bin/ffmpeg -i '+path_of_original_object): # El elemento esta siendo codificado print "El archivo actual esta siendo codificado" system('/usr/bin/killall ffmpeg') if path.isdir(original_path)==True: if path.isfile(original_trascoded_file)==True: sleep(3) remove(trascoded_file) ServiceList.root['ready'].remove({ElementID:original_trascoded_file}) ServiceList.root['waiting'].append({object.id:copy_object}) ServiceList.root['current']="" ServiceList.SaveInZODB() else: return
def type_custom_delete(object, evt): request = getattr(object, 'REQUEST', None) registry = getUtility(IRegistry) settings = registry.forInterface(ITranscodeSetings) """ self.SERVER = self.RemoveSlash(settings.adress_of_streaming_server) Probablemente no sea usado """ STORAGE = RemoveSlash(settings.mount_point_fss) try: name_original_file=object._v_fss_props[object.Type()].title except KeyError: name_original_file=object._v_fss_props[object.portal_type].title extension=MTD.CheckExtension(name_original_file) folderpath=RemoveSlashIfNecesary(urlparse(object.absolute_url())[2]) path_of_object=path.join(STORAGE,folderpath,name_original_file) path_of_dir=path.join(STORAGE,folderpath) extension=MTD.CheckExtension(name_original_file) trascoded_file=MTD.nginxpath(path_of_object) realDelete = False ElementID=object.id """ existe un caso distinto para request cuando es una copia """ if request.has_key('form.submitted')==True and request.has_key('REQUEST_METHOD')==True \ and request.has_key('form.button.Cancel')==False: if request['REQUEST_METHOD']=='POST': """ Se ejecuta dos veces """ RemoveObjectsFromHDD(extension, path_of_dir, path_of_object, trascoded_file, ElementID) elif request.has_key('form.submitted')==False and request.has_key('form.request')==False \ and request.has_key('selected_obj_paths')== False and request.has_key('paths')==False and \ request.has_key('-C')==True: return if request.has_key('form.submitted')==True and request.has_key('form.button.Cancel')==True: print "se cancelo el borrado del elemento" return if request.has_key('selected_obj_paths')==True and request.has_key('paths')==True: RemoveObjectsFromHDD(extension, path_of_dir, path_of_object, trascoded_file, ElementID) return if request.has_key('manage_delObjects')==True and request.has_key('ids'): """ Borrar los archivos de file system storage """ print "Borrado del sitio" """ if self.request.form.has_key('form.button.Cancel'): import pdb; pdb.set_trace() Obtener el id y la url absoluta, de convert extraer al metodo newfilename para poder obtener el path del archivo transcodificado. Verificar si existe. Si el archivo existe pero es igual al nombre del objeto recibido, entonces el archivo no lo creo ffmpeg si no que fue precargado en ese formato y no hacemos nada. De lo contrario el archivo es creado por ffmpeg y procedemos a borrarlo y removerlo de la lista de la lista de archivos transcodificados. return request.RESPONSE.redirect('www.google.com') parent=self.context.aq_parent absolutepath= self.STORAGE + self.PathOfFile + self.filenamesaved idfile=self.context.getId first_object={idfile:absolutepath} second_object={idfile:self.newfiletranscoded} if first_object in ServiceList['waiting']: ServiceList['waiting'].remove(first_object) parent.manage_delObjects(self.context.getId) if second_object in ServiceList['ready']: parent.manage_delObjects(self.context.gedId) ServiceList['ready'].remove(second_object) try: os.remove(self.newfiletranscoded) except os.error: print "We have a exception deleting the file %s" % (self.newfiletranscoded, ) ServiceList.SaveInZODB() """ return