El concepto
Así que he estado luchando por un tiempo con un script que se ejecutará cuando rtorrent haya finalizado la descarga. El script debería comprobar el tercer argumento de rtorrent y actuar en consecuencia.
.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=}"
El guión se ve así:
#!/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
Esto funciona básicamente, pero tengo problemas al intentar eliminar los archivos comprimidos (después de descomprimirlos). Al agregar un script de eliminación en el while
bucle, el script simplemente elimina los archivos en la subcarpeta específica que se encuentra en ese momento.
El script se descomprime:
/media/store1/HD-film/Movie.folder/*.rar
/media/store1/HD-film/Movie.folder/Subs/*.rar
pero solo elimina los archivos rar en esta carpeta
/media/store1/HD-film/Movie.folder/Subs/
¿Cómo puedo solucionarlo para que mi secuencia de comandos elimine los archivos comprimidos también en la carpeta principal?
Editar:Intenté poner el rm
comando después del comando unrar &&
pero el resultado es el mismo.
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
Respuesta1
Encontré una solución para mi problema con este script.extraordinario. Lo he implementado en mi script.
#!/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