From 6805cd662b12e9567bf6939c15e5d947aca8bfd9 Mon Sep 17 00:00:00 2001 From: Dave Morriss Date: Sat, 15 Jun 2024 17:14:22 +0100 Subject: [PATCH] Updated 'repair_item' InternetArchive/repair_item: originally planned in 2020 as a Bash script to find missing files in shows and then add them, it was not turned into the current form until May 2024. Now, with the heavy loading of the IA servers, normal uploads are timing out and being aborted. This script is more "determined" to upload files and usually successfully "repairs" shows that need it. --- InternetArchive/repair_item | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/InternetArchive/repair_item b/InternetArchive/repair_item index 2debea4..7a6831c 100755 --- a/InternetArchive/repair_item +++ b/InternetArchive/repair_item @@ -23,15 +23,15 @@ # BUGS: --- # NOTES: --- # AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com -# VERSION: 0.0.7 +# VERSION: 0.0.9 # CREATED: 2020-01-05 22:42:46 -# REVISION: 2024-05-17 20:49:47 +# REVISION: 2024-06-14 18:03:58 # #=============================================================================== #set -o nounset # Treat unset variables as an error -VERSION="0.0.7" +VERSION="0.0.9" SCRIPT=${0##*/} # DIR=${0%/*} @@ -90,13 +90,15 @@ trap 'cleanup_temp $TMP1' SIGHUP SIGINT SIGPIPE SIGTERM EXIT #=== FUNCTION ================================================================ # NAME: Upload -# DESCRIPTION: Upload a file to the Internet Archive with various options +# DESCRIPTION: Uploads a file to the Internet Archive with various options. +# Any output from the 'ia' command invocation is saved in +# a temporary file and the name reported to the caller # PARAMETERS: 1 - the item id (e.g. 'hpr1234' # 2 - the path to the file for upload # 3 - (optional) the path to the file on the IA # 4 - (optional) list of options for 'ia upload' enclosed as # a string -# RETURNS: Nothing +# RETURNS: Exit code of last command #=============================================================================== Upload () { local id=${1} @@ -104,16 +106,23 @@ Upload () { local remote=${3:-} local options=${4:-} + local RES + if [[ -e $file ]]; then if [[ -z $remote ]]; then # shellcheck disable=SC2086 - ia upload ${id} ${file} ${options} + ia upload ${id} ${file} ${options} > /dev/null 2>&1 + RES=$? + return $RES else # shellcheck disable=SC2086 - ia upload ${id} ${file} --remote-name=${remote} ${options} + ia upload ${id} ${file} --remote-name=${remote} ${options} > /dev/null 2>&1 + RES=$? + return $RES fi else echo "File missing: $file" + return 1 fi } @@ -418,7 +427,7 @@ else # upload when the system is overloaded, but these are non-fatal. # until eval "$cmd"; do - coloured 'red' "Failure when invoking the Upload command!" + coloured 'red' "Failure when uploading $file" ((retries++)) printf '%s Failed to upload %s to the IA [%d]\n' \ @@ -435,6 +444,7 @@ else sleep $sleeptime done # until eval ... + coloured 'green' "Uploaded $file to the IA" echo "$(date +%Y%m%d%H%M%S) Uploaded $file to the IA" >> "$LOGFILE" fi @@ -462,7 +472,7 @@ fi if [[ $failures -gt 0 ]]; then coloured 'red' \ "There $(ngettext "was $failures upload failure" "were $failures upload failures" $failures)" - coloured 'yellow' 'Run this script again to repeat the repair attemmpt' + coloured 'yellow' 'Run this script again to repeat the repair attempt' fi # vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21:fdm=marker