0 votos

Recuperar el nombre de la carpeta para la acción script de Automator

Para concatenar archivos de vídeo, he reunido trozos de código encontrados en internet en un ffmpeg bash script en Automator. Funciona. Sin embargo, me gustaría que el archivo de salida tuviera el nombre de la carpeta en la que están los vídeos.

He encontrado soluciones en línea, pero ninguna de ellas sigue un flujo de trabajo de tipo shell script. Mi flujo de trabajo es sólo (con una demanda añadida "Obtener elementos especificados del buscador" cuando se prueba dentro de Automator):

current_path=$(dirname "$1")
cd "$current_path"

for f in "$@"
do
    /usr/local/Cellar/ffmpeg/4.1_1/bin/ffmpeg -i concat:"$(pipeize() { local OLDIFS="$IFS";IFS='|';echo "$*";IFS="$OLDIFS";}; pipeize *.VOB)" -c copy -map "0:v?" -map "0:a?" -map "0:s?" "THIS_SHOULD_BE_THE_DIRECTORY_NAME.VOB"
done

0voto

user3439894 Puntos 5883

Supongo que $1 es, por ejemplo "/path/to/filename.VOB" así que $current_path sería: /path/to

Así, para $filename utilice filename="$(basename "$current_path")" colocado después: current_path="$(dirname "$1")" y luego ext=".VOB" después. A continuación, puede cambiar .VOB a otras extensiones según sea necesario.

Así, el cambio "THIS_SHOULD_BE_THE_DIRECTORY_NAME.VOB" a "${filename}${ext}" como se muestra a continuación:

#!/bin/bash

current_path="$(dirname "$1")"
filename="$(basename "$current_path")"
ext=".VOB"
cd "$current_path"

for f in "$@"
do
    /usr/local/Cellar/ffmpeg/4.1_1/bin/ffmpeg -i concat:"$(pipeize() { local OLDIFS="$IFS";IFS='|';echo "$*";IFS="$OLDIFS";}; pipeize *.VOB)" -c copy -map "0:v?" -map "0:a?" -map "0:s?" "${filename}${ext}"
done

0 votos

Muchas gracias. Esto funciona, aunque creo que te faltó un " en filename="$(basename "$current_path")".VOB" , ya que el script sólo se ejecuta en mi extremo si añado uno. Sabéis cómo podría modificar el código para que funcione con cualquier extensión? He probado un montón de flujos de trabajo y ediciones del código, pero todos fallan de diferentes maneras. Estoy interesado en usar la misma acción para carpetas que puedan contener .VOB, o .m2ts, o .mkv.

0 votos

@firewater, he actualizado la respuesta para atender tu comentario, haciendo una variable separada para el nombre del archivo y la extensión. Creo que lo que he añadido se cita correctamente, ya que he vuelto a comprobarlo en ShellCheck . Dicho esto, tu código lanza algunas banderas, así que te sugiero que uses ShellCheck para ver qué pasa.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X