Bash Script para filebot, ffmpeg e rclone - preso

0

Estou tentando fazer com que o script de outra pessoa funcione no meu sistema, ligeiramente alterado.

Eu acho que estou muito perto. O objetivo é fazer com que o Filebot mova & renomeie media, então use ffmpeg para remodir o arquivo e inserir comentário e, finalmente, mover o rclone. Meu palpite agora é que o remux_video.sh não pode ser executado no arquivo / home / me / dir2 / devido ao $ FILE_LOCK - mas isso é definitivamente um palpite e não tenho certeza de como seguir em frente.

Este é o meu script editado:

#!/bin/bash

#RCLONE_ACD_POINT="acdtest:media"
RCLONE_SYN_POINT="/home/me/dir3/"
METADATA_COMMENT="TEST-COMMENT"
MOVIE_FORMAT="Movies/{n} ({y}) {vf}/{n} ({y}) [{vf}]{' CD'+pi}{'.'+lang}"
TV_FORMAT="TV Shows/{n}/{episode.special ? 'Special' : 'Season '+s.pad(2)}/{n} {episode.special ? 'S00E'+special.pad(2) :
s00e00} {vf}{'.'+lang}"
LOG_FILE="/home/me/log/Proc.log"
LOCK_FILE="/home/me/log/filebot.lock"
EXCLUDE_LIST="$1/Proc.txt"
EXEC_EACH="/usr/local/bin/remux_video.sh '{file}' '$METADATA_COMMENT'"

if mkdir "$LOCK_FILE"
then
        # remove directory when script finishes
        trap 'rm -rf "$LOCK_FILE"' 0

        if [ "$#" -ne 2 ]; then
                echo "filebot_process.sh <in_dir> <out_dir>"
                exit 1
        fi

        # get absolute paths
        IN="$(realpath $1)"
        OUT="$(realpath $2)"

        if [ ! -d "$IN" ]; then
                echo "$IN does not exist."
                exit 1
        fi

        if [ ! -d "$OUT" ]; then
                echo "$OUT does not exist."
                exit 1
        fi

        EXEC_AFTER="rclone move $OUT $RCLONE_SYN_POINT"

        filebot -script fn:amc --output "$OUT" \
        --action copy -non-strict "$IN" \
        --def exec="$EXEC_EACH" \
        --def movieFormat="$MOVIE_FORMAT" \
        --def seriesFormat="$TV_FORMAT" \
        --def excludeList="$EXCLUDE_LIST" \
        --log-file "$LOG_FILE"

        if [ $? -eq 0 ]; then
                echo 'Files processed'
                eval $EXEC_AFTER
        fi
else
     echo >&2 "cannot acquire lock, giving up on $LOCK_FILE"
     exit 0
fi

E este é o remux_video.sh não editado :

#!/bin/bash

dirname=$(dirname "$1")
filename=$(basename "$1")
extension=$(echo "${filename##*.}" | tr "[:upper:]" "[:lower:]")
basename="${filename%.*}"
tmpfile="$dirname/$basename-tmp.$extension"

if [[ "$extension" =~ ^(mkv|m4v|m2v|mp4|avi|mov|mpg)$ ]]; then
        ffmpeg -i "$1" -c copy -map 0 -metadata comment="$2" "$tmpfile"
        echo "Exit code: $?"
        if [ $? -eq 0 ]; then
                echo "Deleting original video"
                rm "$1"
                echo "Renaming new video"
                mv "$tmpfile" "$1"
        fi
fi

A sintaxe que estou usando para iniciar o script é: filebot_process.sh / home / em / dir1 / home / me / dir2

Ele iniciará o script, detectará a mídia, moverá e renomeará de acordo com / home / me / dir2, mas quando chegar à parte remux_video, poderá ver a saída chamar o remux_video.sh, mas a saída real do console falha com um erro de permissão.

Aqui está a saída do console:

~$ filebot_process.sh /home/me/dir1 /home/me/dir2
Locking /home/me/log/Proc.log
Run script [fn:amc] at [Sun Sep 17 12:58:58 EDT 2017]
Parameter: exec = /home/me/remux_video.sh '{file}' 'TEST-COMMENT'
Parameter: movieFormat = Movies/{n} ({y}) {vf}/{n} ({y}) [{vf}]{' CD'+pi {'.'+lang}
Parameter: seriesFormat = TV Shows/{n}/{episode.special ? 'Special' : 'Season '+s.pad(2)}/{n} {episode.special ? 'S00E'+special.pad(2) : s00e00} {vf}{'.'+lang}
Parameter: excludeList = /home/me/dir1/Proc.txt
Argument[0]: /home/me/dir1
Use excludes: /home/me/dir1/Proc.txt
Input: /home/me/dir1/MY_Movie-example-1990-720p.mp4
Group: [mov:my movie 1990] => [MY_Movie-example-1990-720p.mp4]
Rename movies using [TheMovieDB]
Auto-detect movie from context: [/home/me/dir1/MY_Movie-example-1990-720p.mp4]
[COPY] From [/home/me/dir1/MY_Movie-example-1990-720p.mp4] to [/home/me/dir2/Movies/My Movie (1990) 720p/My Movie (1990) [720p].mp4]
Processed 1 files
Execute: /home/me/remux_video.sh '/home/me/dir2/Movies/My Movie (1990) 720p/My Movie (1990) [720p].mp4' 'TEST-COMMENT'
**sh: 1: /home/me/remux_video.sh: Permission denied**
Done ヾ(@⌒ー⌒@)ノ
Files processed

(Editar # 2 com base em perguntas de comentários) Permissões de arquivo:

:~$ ls -al
total 36
drwxrwxr-x  3 me  me   4096 Sep 19 12:26 .
drwxr-xr-x 12 me  me   4096 Sep 19 16:42 ..
-rwxr-xr-x  1 root root  1551 Sep 19 08:10 filebot_process.old
-rwxr-xr-x  1 me  me   1631 Sep 19 10:23 filebot_process.sh
-rw-r--r--  1 me  me  12288 Sep 19 12:49 .filebot_process.sh.swp
drwxrwxr-x  2 me  me   4096 Sep 19 10:23 log
-rwxr-xr-x  1 me  me    555 Sep 19 08:15 remux_video.sh

(Editar # 3 novas informações)

O FileBot é instalado via Snap. Aparentemente, os aplicativos Snap são executados em uma sandbox e não podem sair do $ HOME. Eu removi o FileBot e reinstalei através do " sudo snap instalação filebot - devmode " que aparentemente remove as restrições de segurança.

Agora obtenho uma mensagem de erro diferente do script quando sai da linha remux_video.sh:

Execute: /home/me/remux_video.sh '/home/me/dir2/Movies/My movie (1990) 720p/My movie (1990) [720p].mp4' 'TEST-COMMENT'
/home/me/remux_video.sh: line 10: ffmpeg: command not found
Exit code: 127

Em vez da mensagem Permissão negada como antes. Então parece que eu estou fora da minha caixa de areia. Eu então " qual ffmpeg " e edito o remux para:

/usr/bin/ffmpeg -i "$1" -c copy -map 0 -metadata comment="$2" "$tmpfile"

Agora estou chegando:

Execute: /home/me/remux_video.sh '/home/me/dir2/Movies/My movie (1990) 720p/My movie (1990) [720p].mp4' 'TEST-COMMENT'
/home/me/remux_video.sh: line 10: /usr/bin/ffmpeg: No such file or directory
Exit code: 127

Então o remux_video.sh não é capaz de iniciar o / usr / bin / ffmpeg (eu posso fazer manualmente manualmente), ou o / usr / bin / ffmpeg não está vendo o arquivo sendo chamado por "$ 1"

Novamente, preso. Não sei como progredir daqui.

    
por synthetiq 20.09.2017 / 04:13

0 respostas