Script per spostare o decomprimere i file (rtorrent al termine dello script)


0

Il concetto

Quindi ho lottato per un po 'di tempo con uno script che verrà eseguito quando rtorrent ha terminato il download. Lo script dovrebbe verificare il terzo argomento da rtorrent e agire di conseguenza.

.rtorrent.rc:

system.method.set_key = event.download.finished,unrar_move_files,"execute={/home/holmen/script/testrt.sh,$d.get_base_path=,$d.get_name=,$d.get_custom1=}"

Lo script è simile al seguente:

#!/bin/bash
# First, copy the downloaded material to the storage drive
# then unpack the files (if the unrar returned successful)
# lastly remove the rar files with rm -rfv command

hdfilm1=/media/store1/HD-film
hdfilm2=/media/store2/HD-film
download=/media/store3/Download

# Copy the downloaded material to correct storage drive
rsync -r --info=progress2 "$download"/"$2" "$3"

if [ "$3" = "$hdfilm1" ] || [ "$3" = "$hdfilm2" ]; then
        # Check folders and subfolders of the downloaded material
        while IFS= read -r dir; do
                # Find and unpack archive files
                if [ "$(find $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar')" ]; then
                        rarFile=`ls $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar'`;
                        searchPath="$dir/$rarFile"
                        yes no | nice -n 15 unrar x -o+ "$searchPath" "$dir"
                        remFile=`ls $dir | egrep -i '\.(rar|sfv|r([0-9]{2}))$'`;
                        remPath="$dir/$remFile"
                        rm -rfv $remPath
                fi
        done < <(find "$3"/"$2" -type d)
fi

Questo funziona fondamentalmente ma ho dei problemi quando provo ad eliminare i file di archivio (dopo che sono stati decompressi). Quando si aggiunge uno script di rimozione nel whileciclo, lo script rimuove solo i file nella sottocartella specifica al momento.

Lo script decomprime:

/media/store1/HD-film/Movie.folder/*.rar
/media/store1/HD-film/Movie.folder/Subs/*.rar

ma rimuove solo i file rar in questa cartella

/media/store1/HD-film/Movie.folder/Subs/

Come posso risolvere in modo che il mio script rimuova i file di archivio anche nella cartella principale?

Modifica: ho provato a inserire il rmcomando dopo il comando unrar con &&ma il risultato è lo stesso.

if [ "$(find $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar')" ]; then
     rarFile=`ls $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar'`;
     searchPath="$dir/$rarFile"
     remFile=`ls $dir | egrep -i '\.(rar|sfv|r([0-9]{2}))$'`;
     remove="$dir/$remFile"
     yes no | nice -n 15 unrar x -o+ "$searchPath" "$dir" && rm -rfv "$remove"
fi

Come si tenta di rimuovere i file rar? Sarebbe meglio includerlo nel codice pubblicato.
Janos

Ho aggiunto questo codice alla sezione if del ciclo while: remFile = `ls $ dir | egrep -i '\. [r | s | 0-9] [a | f | 0-9] [r | v | 0-9] $' '; remPath = "$ dir / $ remFile"; rm -rfv $ remPath
junkyhlm

Sarebbe meglio modificare che nella sua domanda
Janos

Ho modificato la mia domanda
Junkyhlm,

Risposte:


0

Ho trovato una soluzione per il mio problema con questo script non ordinabile . L'ho implementato nella mia sceneggiatura.

#!/bin/bash

# Variables
hdfilm1=/media/store1/HD-film
hdfilm2=/media/store2/HD-film
tvshow1=/media/store0/Serier
tvshow2=/media/store2/Serier
download=/media/store3/Download

# Copy the downloaded material to correct storage drive
rsync -r --info=progress2 "$download"/"$2" "$3"

if [ "$3" = "$hdfilm1" ] || [ "$3" = "$hdfilm2" ] || [ "$3" = "$tvshow1" ] || [ "$3" = "$tvshow2" ]; then
        /home/holmen/script/unrarall --clean=rar,proof_folders,sample_folders,sample_videos,empty_folders "$3"/"$2"
fi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.