def delete(self, *args, **kwargs): for task in self.cola_set.all(): task.delete() if self.fichero: utils.remove_file_path(self.fichero) if hasattr(self, 'previsualizacion'): self.previsualizacion.delete() super(Video, self).delete(*args, **kwargs)
def create_pil(video, logfile, pid_notifier=None): """ """ # Actualiza el estado del vídeo video.set_status('PRV') # Guarda la plantilla en un fichero temporal (handler, path) = tempfile.mkstemp(suffix='.mlt') os.write(handler, get_fdv_template(video).content) os.close(handler) # Genera el nombre del fichero de salida if video.fichero: utils.remove_file_path(video.fichero) video.fichero = os.path.join( config.get_option('VIDEO_LIBRARY_PATH'), utils.generate_safe_filename( video.titulo, video.informeproduccion.fecha_produccion.date(), ".mp4" ) ) video.save() utils.ensure_dir(video.fichero) # Montaje y codificación de la píldora if encode_mixed_video(path, video.fichero, logfile, pid_notifier) != 0: video.set_status('DEF') os.unlink(path) try: os.unlink(video.fichero) except: pass return False # Prepara el fichero para hacer HTTP streaming. make_streamable(video.fichero, logfile, pid_notifier) # Obtiene la información técnica del vídeo generado. generate_tecdata(video) # Borra el fichero temporal os.unlink(path) # Actualiza el estado del vídeo if video.informeproduccion.aprobacion: video.set_status('COM') else: video.set_status('PTO') return True
def create_preview(video, logfile, pid_notifier=None): # Actualiza el estado del vídeo video.set_status('PRP') # Obtiene los nombres de ficheros origen y destino src = video.fichero dst = os.path.join( config.get_option('PREVIEWS_PATH'), utils.generate_safe_filename( video.titulo, video.informeproduccion.fecha_produccion.date(), ".mp4" ) ) # Crea/reemplaza el objecto previsualización try: pv = Previsualizacion.objects.get(video=video) utils.remove_file_path(pv.fichero) pv.fichero = dst except Previsualizacion.DoesNotExist: pv = Previsualizacion(video=video, fichero=dst) pv.save() # Calcula las dimensiones de la previsualización. size = calculate_preview_size(video) # Codifica la previsualización. utils.ensure_dir(pv.fichero) if encode_preview(src, dst, size, logfile, pid_notifier) != 0: video.set_status('COM') try: os.unlink(dst) except: pass return False # Actualiza el estado del vídeo video.set_status('PTU') return True
def copy_video(video, logfile): # Actualiza el estado del vídeo video.set_status('PRV') # Obtiene los nombres de ficheros origen y destino if video.fichero: utils.remove_file_path(video.fichero) src = video.ficheroentrada_set.all()[0].fichero dst = os.path.join( config.get_option('VIDEO_LIBRARY_PATH'), utils.generate_safe_filename( video.titulo, video.informeproduccion.fecha_produccion.date(), os.path.splitext(src)[1] ) ) video.fichero = dst video.save() # Copia el fichero. utils.ensure_dir(video.fichero) try: shutil.copy(src, dst) os.write(logfile, '%s -> %s\n' % (src, dst)) os.chmod(dst, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP) os.write(logfile, 'chmod: 640\n') except IOError as error: os.write(logfile, error.__str__()) video.set_status('DEF') return False # Obtiene la información técnica del vídeo copiado. generate_tecdata(video) # Actualiza el estado del vídeo if video.informeproduccion.aprobacion: video.set_status('COM') else: video.set_status('PTO') return True
def delete(self, *args, **kwargs): if self.fichero: utils.remove_file_path(self.fichero) super(Previsualizacion, self).delete(*args, **kwargs)