Código fuente para batch_ffmpeg.ui.shell
"""
Contiene la interfaz de usuario para línea de comandos.
"""
import argparse
import batch_ffmpeg
[documentos]def main():
"""
Punto de entrada del programa para la línea de comandos.
Lee los argumentos de entrada y realiza las conversiones solicitadas.
Permite realizar una conversión por carpetas o por archivos::
batch_ffmpeg [-h] [-q] [-Q] {folder,files} ...
Argumentos opcionales::
-h, --help Ayuda
-q, --quiet No mostrar la salida de FFMPEG
-Q, --no-progress No mostrar el progreso
.. rubric:: Uso de modo "folder":
::
batch_ffmpeg folder [-h]
in_folder in_extension out_folder out_extension ...
Argumentos posicionales::
in_folder Carpeta en la cual buscar los archivos a convertir
in_extension Extensión de los archivos que se quieren convertir
out_folder Carpeta en donde guardar los archivos convertidos
out_extension Extensión a colocar a los archivos convertidos
ffmpeg_args Argumentos para FFMPEG
.. rubric:: Uso de modo "files":
::
batch_ffmpeg files [-h] [-e OUT_EXTENSION] [-i IN_FILES [IN_FILES ...]]
[-o OUTPUT_FOLDER]
...
Argumentos posicionales::
ffmpeg_args Argumentos para FFMPEG
Argumentos opcionales::
-h, --help show this help message and exit
-e OUT_EXTENSION, --out-extension OUT_EXTENSION
Extensión de salida
-i IN_FILES [IN_FILES ...], --in-files IN_FILES [IN_FILES ...]
Archivos a convertir
-o OUTPUT_FOLDER, --output-folder OUTPUT_FOLDER
Carpeta en donde guardar los archivos convertidos
"""
args = _parse_args()
def print_progress(progress):
if progress.current_progress is not None:
print(progress)
if args.quiet:
output_callback = None
else:
output_callback = print
if args.no_progress:
progress_callback = None
else:
progress_callback = print_progress
if args.subparser == "folder":
batch_ffmpeg.convert_folder(args.in_folder, args.in_extension,
args.out_folder, args.out_extension, args.ffmpeg_args,
output_callback=output_callback, progress_callback=progress_callback)
elif args.subparser == "files":
# TODO
raise NotImplementedError('La opción "files" todavía no está implementada"')
# batch_ffmpeg.convert_files(in_paths, out_paths, args.ffmpeg_args,
# output_callback=output_callback,
# progress_callback=progress_callback)
def _parse_args():
"""
Parsear los argumentos.
Returns:
argparse.Namespace: Objeto que contiene los argumentos dados al
programa.
"""
parser = argparse.ArgumentParser(prog="batch_ffmpeg",
description="Herramienta para convertir varios archivos fácilmente "
"con ffmpeg")
parser.add_argument("-q", "--quiet", action="store_true",
help="No mostrar la salida de FFMPEG")
parser.add_argument("-Q", "--no-progress", action="store_true",
help="No mostrar el progreso")
subparsers = parser.add_subparsers(dest="subparser")
subparsers.required = True
parser_folder = subparsers.add_parser("folder",
help="Convertir todos los archivos de una carpeta con la extensión "
"dada")
parser_folder.add_argument("in_folder",
help="Carpeta en la cual buscar los archivos a convertir")
parser_folder.add_argument("in_extension",
help="Extensión de los archivos que se quieren convertir")
parser_folder.add_argument("out_folder",
help="Carpeta en donde guardar los archivos convertidos")
parser_folder.add_argument("out_extension",
help="Extensión a colocar a los archivos convertidos")
parser_folder.add_argument("ffmpeg_args", nargs=argparse.REMAINDER,
help="Argumentos para FFMPEG")
parser_files = subparsers.add_parser("files",
help="Convertir los archivos dados")
parser_files.add_argument("ffmpeg_args", nargs=argparse.REMAINDER,
help="Argumentos para FFMPEG")
parser_files.add_argument("-e", "--out-extension", nargs=1,
help="Extensión de salida")
parser_files.add_argument("-i", "--in-files", nargs="+",
help="Archivos a convertir")
parser_files.add_argument("-o", "--output-folder", nargs=1,
help="Carpeta en donde guardar los archivos convertidos")
return parser.parse_args()