def copy_video(video, logfile): # Actualiza el estado del vídeo video.set_status('PRV') # Obtiene los nombres de ficheros origen y destino 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 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(), ".flv")) # Crea el objecto previsualización 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 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
from configuracion import config from postproduccion.utils import lock, ensure_dir """ Constantes con los caracteres que representan el tipo de mensaje. """ INFO = 'I' WARNING = 'W' ERROR = 'E' DEBUG = 'D' """ Constante con el nombre de fichero del registro. """ LOGFILE = settings.MEDIA_ROOT + '/logs/application.log' ensure_dir(LOGFILE) """ Escribe un mensaje en el log de la aplicación """ def _print_log(status, msg): _register_entry() f = open(LOGFILE, 'a') f.write("%c[%s] %s\n" % (status, datetime.datetime.now().strftime("%d/%m/%Y %H:%M:%S.%f"), msg)) f.close() # # Registro de procesos. # """