Example #1
0
 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)
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
 def delete(self, *args, **kwargs):
     if self.fichero:
         utils.remove_file_path(self.fichero)
     super(Previsualizacion, self).delete(*args, **kwargs)