forked from HPR/hpr-tools
		
	Moved project directories and files to an empty local repo
This commit is contained in:
		
							
								
								
									
										578
									
								
								InternetArchive/future_upload
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										578
									
								
								InternetArchive/future_upload
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,578 @@ | ||||
| #!/bin/bash - | ||||
| #=============================================================================== | ||||
| # | ||||
| #         FILE: future_upload | ||||
| # | ||||
| #        USAGE: ./future_upload | ||||
| # | ||||
| #  DESCRIPTION: Uploads future HPR shows based on what is in the upload area | ||||
| # | ||||
| #      OPTIONS: --- | ||||
| # REQUIREMENTS: --- | ||||
| #         BUGS: --- | ||||
| #        NOTES: Contains methods from 'delete_uploaded' and 'weekly_upload' as | ||||
| #               well as 'update_state' | ||||
| #       AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com | ||||
| #      VERSION: 0.0.14 | ||||
| #      CREATED: 2021-01-07 12:11:02 | ||||
| #     REVISION: 2024-03-03 14:12:30 | ||||
| # | ||||
| #=============================================================================== | ||||
|  | ||||
| set -o nounset                              # Treat unset variables as an error | ||||
|  | ||||
| SCRIPT=${0##*/} | ||||
| # DIR=${0%/*} | ||||
|  | ||||
| STDOUT="/dev/fd/2" | ||||
|  | ||||
| VERSION="0.0.14" | ||||
|  | ||||
| # | ||||
| # Load library functions | ||||
| # | ||||
| LIB="$HOME/bin/function_lib.sh" | ||||
| [ -e "$LIB" ] || { echo "Unable to source functions"; exit 1; } | ||||
| # shellcheck disable=SC1090 | ||||
| source "$LIB" | ||||
|  | ||||
| #===  FUNCTION  ================================================================ | ||||
| #         NAME: check_uploads | ||||
| #  DESCRIPTION: Determines if files exist for uploading | ||||
| #   PARAMETERS: 1 - filename prefix e.g. 'hpr9999' | ||||
| #      RETURNS: True/false | ||||
| #=============================================================================== | ||||
| check_uploads () { | ||||
|     local prefix=${1:?Usage: check_uploads prefix} | ||||
|     local suff | ||||
|  | ||||
|     # | ||||
|     # Look for files called hpr1234.flac and so on. Don't bother with the | ||||
|     # hpr1234_source.flac one. As soon as a file is missing return with false. | ||||
|     # | ||||
|     for suff in flac mp3 ogg opus spx wav; do | ||||
|         if [[ ! -e $UPLOADS/$prefix.$suff ]]; then | ||||
|             return 1 | ||||
|         fi | ||||
|     done | ||||
|  | ||||
|     return 0 | ||||
| } | ||||
|  | ||||
| #===  FUNCTION  ================================================================ | ||||
| #         NAME: _usage | ||||
| #  DESCRIPTION: Report usage | ||||
| #   PARAMETERS: 1       [optional] exit value | ||||
| #      RETURNS: Nothing | ||||
| #=============================================================================== | ||||
| _usage () { | ||||
|     local -i res="${1:-0}" | ||||
|  | ||||
|     cat >$STDOUT <<-endusage | ||||
| ${SCRIPT} - version: ${VERSION} | ||||
|  | ||||
| Usage: ./${SCRIPT} [-h] [-v] [-D] [-d {0|1}] [-F] [-r] [-l cp] | ||||
|  | ||||
| Uploads HPR shows to the Internet Archive that haven't yet been uploaded. This | ||||
| is as an alternative to uploading the next 5 shows each week for the coming | ||||
| week. | ||||
|  | ||||
| Options: | ||||
|   -h                    Print this help | ||||
|   -v                    Run in verbose mode where more information is reported | ||||
|   -D                    Run in debug mode where a lot more information is | ||||
|                         reported | ||||
|   -d 0|1                Dry run: -d 1 (the default) runs the script in dry-run | ||||
|                         mode where nothing is uploaded but the actions that | ||||
|                         will be taken are reported; -d 0 turns off dry-run | ||||
|                         mode and the actions will be carried out. | ||||
|   -F                    Force the upload of a show even if the checks for its | ||||
|                         state in the 'reservations' table gives the wrong | ||||
|                         state or none at all. This is a rare event which may | ||||
|                         come about if an "emergency" show is being deployed or | ||||
|                         in some other exceptional circumstance. | ||||
|   -r                    Run in 'remote' mode, using the live database over an | ||||
|                         (already established) SSH tunnel. Default is to run | ||||
|                         against the local database. | ||||
|   -l N                  Control the number of shows that can be uploaded at | ||||
|                         once. The range is 1 to $DEFLIMIT. | ||||
|  | ||||
| Notes: | ||||
|  | ||||
| 1. When running on 'borg' the method used is to run in faux 'local' mode. | ||||
|    This means we have an open tunnel to the HPR server (mostly left open) and | ||||
|    the default file .hpr_db.cfg points to the live database via this tunnel. | ||||
|    So we do not use the -r option here. This is a bit of a hack! Sorry! | ||||
|  | ||||
| endusage | ||||
|     exit "$res" | ||||
| } | ||||
|  | ||||
| #===  FUNCTION  ================================================================ | ||||
| #         NAME: _DEBUG | ||||
| #  DESCRIPTION: Writes a message if in DEBUG mode | ||||
| #   PARAMETERS: List of messages | ||||
| #      RETURNS: Nothing | ||||
| #=============================================================================== | ||||
| _DEBUG () { | ||||
|     [ "$DEBUG" == 0 ] && return | ||||
|     for msg in "$@"; do | ||||
|         printf 'D> %s\n' "$msg" | ||||
|     done | ||||
| } | ||||
|  | ||||
| #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| # | ||||
| # Configure depending whether local or on borg | ||||
| # | ||||
| case $HOSTNAME in | ||||
|     hprvps|marvin|borg) | ||||
|         UPLOADS="/data/IA/uploads" | ||||
|         BASEDIR="$HOME/IA" ;; | ||||
|     i7-desktop) | ||||
|         UPLOADS="$HOME/HPR/IA/uploads" | ||||
|         BASEDIR="$HOME/HPR/IA" ;; | ||||
|     *) | ||||
|         echo "Wrong host!"; exit 1 ;; | ||||
| esac | ||||
|  | ||||
| cd "$BASEDIR" || { echo "Can't cd to $BASEDIR"; exit 1; } | ||||
|  | ||||
| # | ||||
| # Prepare for logging | ||||
| # | ||||
| LOGS="$BASEDIR/logs" | ||||
| LOGFILE="$LOGS/$SCRIPT.log" | ||||
|  | ||||
| # | ||||
| # Tools | ||||
| # | ||||
| BASECOM='curl -K ./.hpradmin_curlrc -s' | ||||
| URL="https://hub.hackerpublicradio.org/cms/status.php" | ||||
| # QUERY1="${BASECOM} ${URL}" | ||||
| QUERY2="${BASECOM} -o - ${URL}" | ||||
| UPSTATE="$BASEDIR/update_state" | ||||
|  | ||||
| # | ||||
| # Fallback URL | ||||
| # | ||||
| URL_BAK="http://hub.hackerpublicradio.org/cms/status.php" | ||||
| QUERY2_BAK="${BASECOM} -o - ${URL_BAK}" | ||||
|  | ||||
| # | ||||
| # Prerequisites | ||||
| # | ||||
| # jq=$(command -v jq) | ||||
| # [ -z "$jq" ] && { echo "Needs the 'jq' JSON filter"; exit 1; } | ||||
| ia=$(command -v ia) | ||||
| [ -z "$ia" ] && { echo "Needs the 'ia' Internet Archive script"; exit 1; } | ||||
| [ -e "$BASEDIR/make_metadata" ] || { | ||||
|     echo "Needs the 'make_metadata' script" | ||||
|     exit 1 | ||||
| } | ||||
| [ -e "$UPSTATE" ] || { | ||||
|     echo "Needs the 'update_state' script" | ||||
|     exit 1 | ||||
| } | ||||
|  | ||||
| # | ||||
| # File of processed shows | ||||
| # | ||||
| PROCFILE="$BASEDIR/.${SCRIPT}.dat" | ||||
| [ -e "$PROCFILE" ] || touch "$PROCFILE" | ||||
|  | ||||
| # | ||||
| # Constants | ||||
| # | ||||
| RETRIES=5 | ||||
| DEFLIMIT=20 | ||||
|  | ||||
| # | ||||
| # Process options | ||||
| # | ||||
| while getopts :d:FhvDr:l: opt | ||||
| do | ||||
|     case "${opt}" in | ||||
|         d) DRYRUN=$OPTARG;; | ||||
|         D) DEBUG=1;; | ||||
|         F) FORCE=1;; | ||||
|         h) _usage 0;; | ||||
|         v) VERBOSE=1;; | ||||
|         r) REMOTE=1;; | ||||
|         l) LIMIT=$OPTARG;; | ||||
|         *) _usage 1;; | ||||
|     esac | ||||
| done | ||||
| shift $((OPTIND - 1)) | ||||
|  | ||||
| DRYRUN=${DRYRUN:-1} | ||||
| if [[ $DRYRUN -ne 0 && $DRYRUN -ne 1 ]]; then | ||||
|     echo "** Use '-d 0' or '-d 1'" | ||||
|     _usage 1 | ||||
| fi | ||||
| [[ $DRYRUN -eq 1 ]] && echo "Dry run mode" | ||||
|  | ||||
| FORCE=${FORCE:-0} | ||||
|  | ||||
| VERBOSE=${VERBOSE:-0} | ||||
|  | ||||
| DEBUG=${DEBUG:-0} | ||||
|  | ||||
| REMOTE=${REMOTE:-0} | ||||
| if [[ $REMOTE -eq 0 ]]; then | ||||
|     dbconfig="$BASEDIR/.hpr_db.cfg" | ||||
|     [[ $VERBOSE -eq 1 ]] && echo "Local database mode" | ||||
| else | ||||
|     dbconfig="$BASEDIR/.hpr_livedb.cfg" | ||||
|     [[ $VERBOSE -eq 1 ]] && echo "Remote database mode" | ||||
| fi | ||||
|  | ||||
| LIMIT=${LIMIT:-$DEFLIMIT} | ||||
| if [[ $LIMIT -lt 1 || $LIMIT -gt $DEFLIMIT ]]; then | ||||
|     echo "** Use '-l 1' up to '-l $DEFLIMIT' or omit the option" | ||||
|     _usage 1 | ||||
| fi | ||||
|  | ||||
| # | ||||
| # Should have no arguments | ||||
| # | ||||
| if [[ $# != 0 ]]; then | ||||
|     echo "** ${SCRIPT} takes no arguments" | ||||
|     _usage 1 | ||||
| fi | ||||
|  | ||||
| # | ||||
| # Declarations | ||||
| # | ||||
| declare -A processed | ||||
| declare -A ready | ||||
| declare -A uploads | ||||
| minshow= | ||||
| maxshow= | ||||
| lastitem= | ||||
|  | ||||
| # | ||||
| # Load array of processed shows | ||||
| # | ||||
| while read -r item; do | ||||
|     processed+=([$item]=1) | ||||
| done < "$PROCFILE" | ||||
| [ "$VERBOSE" -eq 1 ] && echo "Number of shows in cache: ${#processed[@]}" | ||||
|  | ||||
| # | ||||
| # TODO: Create the associative array 'ready' containing the numbers of shows | ||||
| # ready for upload. This is a way to ensure that we don't try and upload shows | ||||
| # in transit to the upload area. | ||||
| # | ||||
| # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| # Proposed code. Not sure what the actual URL will be nor what will be | ||||
| # returned if nothing is ready for upload yet | ||||
| # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| # | ||||
| # json=$(curl http://hackerpublicradio.org/queue.php -s -o -) | ||||
| # while read -r showno; do | ||||
| #     ready+=([$showno]=1) | ||||
| # done < <(echo "${json}" | jq '.READY_FOR_IA_UPLOAD[] | tonumber') | ||||
| # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| # Change of plan. Now we have a list of CSV values, so we need to do something | ||||
| # like this: | ||||
| # | ||||
| # reservations=$($BASECOM -o - $URL) | ||||
| # while read -r line; do | ||||
| #    if [[ $line =~ ^([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),.*$ ]]; then | ||||
| #       state="${BASH_REMATCH[5]}" | ||||
| #       show="${BASH_REMATCH[2]}" | ||||
| #    fi | ||||
| #    if [[ $state = 'MEDIA_TRANSCODED' ]]; then | ||||
| #       ready+=([$show]=1) | ||||
| #    fi | ||||
| # done <<< $reservations | ||||
| # | ||||
| # At the end of this the associative array 'ready' will contain the keys of | ||||
| # shows that are ready for upload (presumably) so we can look in this array to | ||||
| # double check. | ||||
| # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| if [[ $FORCE -eq 0 ]]; then | ||||
|     # | ||||
|     # Collect the current table of shows requiring work. We expect something like: | ||||
|     # timestamp_epoc,ep_num,ep_date,key,status,email | ||||
|     # 1651286617,3617,2022-06-14,fda088e0e3bd5d0353ea6b7569e93b87626ca25976a0a,UPLOADED_TO_IA,lurkingprion@gmail.com | ||||
|     # 1651648589,3619,2022-06-16,e7d3810afa098863d81663418d8640276272284de68f1,UPLOADED_TO_IA,monochromec@gmail.com | ||||
|     # TODO: Check for a failure in the query?A | ||||
|     # NOTE: Problem encountered 2022-09-23 because the SSL certificate has expired | ||||
|     # | ||||
|     reservations=$($QUERY2) || { | ||||
| #         echo "Problem querying $URL" | ||||
| #         echo "Falling back to $URL_BAK" | ||||
| #         reservations=$($QUERY2_BAK) || { | ||||
| #             echo "Failed with fallback URL - aborting" | ||||
| #             exit 1 | ||||
| #         } | ||||
|         echo "Failed to query $URL - aborting" | ||||
|         exit 1 | ||||
|     } | ||||
|     _DEBUG "reservations = $reservations" | ||||
|  | ||||
|     # | ||||
|     # The query above might fail in a way that just returns an empty string, | ||||
|     # so check for that | ||||
|     # | ||||
|     if [[ -z $reservations ]]; then | ||||
|         echo "No reply from $URL - can't continue" | ||||
|         exit 1 | ||||
|     fi | ||||
|  | ||||
|     # | ||||
|     # The query returns the bare number, but we're using 'hprxxxx' as the key in | ||||
|     # the 'ready' array. | ||||
|     # | ||||
|     while read -r line; do | ||||
|         if [[ $line =~ ^([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),.*$ ]]; then | ||||
|             state="${BASH_REMATCH[5]}" | ||||
|             show="${BASH_REMATCH[2]}" | ||||
|         fi | ||||
|         if [[ $state = 'MEDIA_TRANSCODED' ]]; then | ||||
|             ready+=([hpr$show]=1) | ||||
|         fi | ||||
|     done <<< "$reservations" | ||||
|     _DEBUG "ready = ${!ready[*]}" | ||||
| else | ||||
|     [ "$VERBOSE" -eq 1 ] && { | ||||
|         echo "V: Not checking reservations table; force option used" | ||||
|     } | ||||
| fi | ||||
|  | ||||
| # | ||||
| # Process files. There will be several with the same prefix so look for | ||||
| # a change of prefix | ||||
| # | ||||
| while read -r path; do | ||||
|     # | ||||
|     # Extract the path relative to $UPLOADS and the IA item name from the | ||||
|     # returned path. Assume names are 'hpr9999' format (with leading zeroes if | ||||
|     # appropriate). | ||||
|     # | ||||
|     relpath="${path#"$UPLOADS"/}" | ||||
|     item="${relpath:0:7}" | ||||
|  | ||||
|     _DEBUG "Found path $path" | ||||
|     _DEBUG "Relative path $relpath" | ||||
|     _DEBUG "Item $item" | ||||
|  | ||||
|     # | ||||
|     # Detect that the item prefix has changed. If it has we're processing | ||||
|     # a new IA identifier, so work on this one | ||||
|     # | ||||
|     if [[ $item != "$lastitem" ]]; then | ||||
|         lastitem=$item | ||||
|         echo -n "$lastitem " | ||||
|  | ||||
|         # | ||||
|         # Have we already processed it? It might just not be in the cache even | ||||
|         # though processed by some other means. | ||||
|         # | ||||
|         if [[ ! -v "processed[$lastitem]" ]]; then | ||||
|  | ||||
|             [ "$VERBOSE" -eq 1 ] && { | ||||
|                 echo "V: Not yet processed (or not cached) $lastitem" | ||||
|                 echo "V: Checking IA for $lastitem" | ||||
|             } | ||||
|  | ||||
|             # | ||||
|             # Ask the IA | ||||
|             # | ||||
|             if ia list "$lastitem" > /dev/null 2>&1; then | ||||
|                 # | ||||
|                 # We can't tell with 'ia list' whether the show is | ||||
|                 # a 'reserved' one. Need to look deeper. | ||||
|                 # | ||||
|  | ||||
|                 # | ||||
|                 # It's on the IA already, save in the array | ||||
|                 # | ||||
|                 #[ $VERBOSE -eq 1 ] && echo "V: Already on IA - $lastitem" | ||||
|                 echo "- cached" | ||||
|                 processed+=([$lastitem]=1) | ||||
|             else | ||||
|                 # | ||||
|                 # Is the show ready for upload? | ||||
|                 # | ||||
|                 if [[ $FORCE -eq 0 ]]; then | ||||
|                     if [[ ! -v "ready[$lastitem]" ]]; then | ||||
|                         echo "- not ready" | ||||
|                         continue | ||||
|                     fi | ||||
|                 fi | ||||
|  | ||||
|                 # | ||||
|                 # Need to upload this one | ||||
|                 # | ||||
|                 #[ $VERBOSE -eq 1 ] && echo "V: To be uploaded to IA - $lastitem" | ||||
|                 echo "- to upload" | ||||
|  | ||||
|                 uploads+=([${lastitem:3}]=1) | ||||
|  | ||||
|                 # | ||||
|                 # First show we find not on the IA should be the lowest number | ||||
|                 # | ||||
|                 [ -z "$minshow" ] && minshow="${lastitem:3}" | ||||
|  | ||||
|                 # | ||||
|                 # Last show number should be the highest | ||||
|                 # | ||||
|                 maxshow="${lastitem:3}" | ||||
|  | ||||
|                 # | ||||
|                 # Stop the loop if we have reached the limiting number | ||||
|                 # | ||||
|                 [[ ${#uploads[@]} -eq $LIMIT ]] && { | ||||
|                     echo "Upload limit ($LIMIT) reached" | ||||
|                     break | ||||
|                 } | ||||
|             fi | ||||
|         else | ||||
|             # | ||||
|             # Recorded as having been seen | ||||
|             # | ||||
|             #[ $VERBOSE -eq 1 ] && echo "V: Already processed $lastitem" | ||||
|             echo "- processed" | ||||
|         fi | ||||
|  | ||||
|     fi | ||||
|  | ||||
| done < <(find "$UPLOADS" -regextype posix-extended -regex '.*hpr[0-9]{4}.*' | sort) | ||||
|  | ||||
| # | ||||
| # Write the processed array to the cache file unless in dry-run mode | ||||
| # | ||||
| # [ $DEBUG -eq 1 ] && { echo -n 'D> '; declare -p processed; } | ||||
| _DEBUG "processed = ${!processed[*]}" | ||||
| [ "$VERBOSE" -eq 1 ] && echo "Number of shows in cache: ${#processed[@]}" | ||||
| if [[ $DRYRUN -ne 1 ]]; then | ||||
|     while read -r item; do | ||||
|         echo "$item" | ||||
|     done < <(printf '%s\n' "${!processed[@]}" | sort -u ) > "$PROCFILE" | ||||
| fi | ||||
|  | ||||
| # | ||||
| # Generate the list of uploads for the 'make_metadata' option '-list=1,2,3'. | ||||
| # Order is unimportant because make_metadata sorts internally. | ||||
| # | ||||
| _DEBUG "uploads = ${!uploads[*]}" | ||||
| [ "$VERBOSE" -eq 1 ] && echo "Number of shows for upload: ${#uploads[@]}" | ||||
| printf -v list '%s,' "${!uploads[@]}" | ||||
| list="${list:0:-1}" | ||||
|  | ||||
| # | ||||
| # If there are no uploads to do we can stop | ||||
| # | ||||
| [[ ! -v uploads[@] ]] && { echo "Nothing to do!"; exit; } | ||||
|  | ||||
| # | ||||
| # Check that the shows being uploaded have all their files and log what is | ||||
| # happening. | ||||
| # | ||||
| while read -r show; do | ||||
|     echo "$(date +%Y%m%d%H%M%S) preparing to upload hpr$show" >> "$LOGFILE" | ||||
|  | ||||
|     if ! check_uploads "hpr$show"; then | ||||
|         echo "Missing files for show $show. Aborted!" | ||||
|         echo "$(date +%Y%m%d%H%M%S) aborting on hpr$show - missing files" >> "$LOGFILE" | ||||
|         exit 1 | ||||
|     fi | ||||
| done < <(printf '%s\n' "${!uploads[@]}" | sort) | ||||
|  | ||||
| # | ||||
| # Define output files. If the list contains one element then it's a different | ||||
| # name from the multi-element case (make_metadata does this too). | ||||
| # | ||||
| if [[ ${#uploads[@]} -eq 1 ]]; then | ||||
|     metadata="metadata_${minshow}.csv" | ||||
|     script="script_${minshow}.sh" | ||||
| else | ||||
|     metadata="metadata_${minshow}-${maxshow}.csv" | ||||
|     script="script_${minshow}-${maxshow}.sh" | ||||
| fi | ||||
|  | ||||
| # | ||||
| # Perform the uploads or report what would be done | ||||
| # | ||||
| if [[ $DRYRUN -eq 1 ]]; then | ||||
|     echo "Dry run: Would have uploaded list '$list'" | ||||
|     echo "Dry run: Would have created $metadata and $script" | ||||
|     echo "Dry run: Would have uploaded $metadata and run $script" | ||||
|     echo "Dry run: Would have used $dbconfig" | ||||
|     echo "$BASEDIR/make_metadata -dbconf=${dbconfig} -list=\"$list\" -verb -out -script" | ||||
|  | ||||
|     echo "$(date +%Y%m%d%H%M%S) no uploads done - dry-run mode" >> "$LOGFILE" | ||||
| else | ||||
|     echo "Uploading the list '$list'" | ||||
|     if yes_no "OK to continue? %s " "N"; then | ||||
|         # shellcheck disable=2086 | ||||
|         { | ||||
|             # | ||||
|             # Make the metadata | ||||
|             # | ||||
|             $BASEDIR/make_metadata -dbconf=${dbconfig} -list="$list" -verb -out -script | ||||
|             RES=$? | ||||
|             if [[ $RES -eq 0 ]]; then | ||||
|                 # | ||||
|                 # Upload in spreadsheet mode and run the generated script | ||||
|                 # | ||||
|                 ia upload --retries=$RETRIES --spreadsheet=${metadata} \ | ||||
|                     -n -H x-archive-keep-old-version:0 | ||||
|                 RES=$? | ||||
|                 if [[ $RES -eq 0 ]]; then | ||||
|                     # | ||||
|                     # Upload worked. Run the script if there is one | ||||
|                     # | ||||
|                     [[ -e $script ]] && ./${script} | ||||
|                 else | ||||
|                     echo "Failed to upload to IA; aborting" | ||||
|                     echo "$(date +%Y%m%d%H%M%S) IA uploads aborted due to errors" >> "$LOGFILE" | ||||
|                     exit 1 | ||||
|                 fi | ||||
|  | ||||
|                 # | ||||
|                 # Append the sorted show details to the cache | ||||
|                 # | ||||
|                 echo "$list" |\ | ||||
|                     sed -e 's/\([0-9]\{4\}\)/hpr\1/g; s/,/\n/g' | sort >> "$PROCFILE" | ||||
|  | ||||
|                 echo "Uploaded ${#uploads[@]} shows" | ||||
|                 echo "$(date +%Y%m%d%H%M%S) ${#uploads[@]} uploads completed" >> "$LOGFILE" | ||||
|  | ||||
|                 # | ||||
|                 # Update the state in the HPR database, unless we're using | ||||
|                 # FORCE. Pass the limit used here to this script so it can | ||||
|                 # stop looking for work unnecessarily | ||||
|                 # | ||||
|                 if [[ $FORCE -eq 0 ]]; then | ||||
|                     $UPSTATE -l$LIMIT | ||||
|                     RES=$? | ||||
|                     if [[ $RES -ne 0 ]]; then | ||||
|                         echo "Problem updating database state" | ||||
|                         exit 1 | ||||
|                     fi | ||||
|                 else | ||||
|                     echo "Not updating the database, FORCE mode is on" | ||||
|                 fi | ||||
|  | ||||
|  | ||||
|             else | ||||
|                 echo "Upload aborted due to errors" | ||||
|                 echo "$(date +%Y%m%d%H%M%S) uploads aborted due to errors" >> "$LOGFILE" | ||||
|                 exit 1 | ||||
|             fi | ||||
|         } | ||||
|     else | ||||
|         echo "Not uploaded, as requested" | ||||
|         echo "$(date +%Y%m%d%H%M%S) uploads aborted by user" >> "$LOGFILE" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| exit | ||||
|  | ||||
| # vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21 | ||||
		Reference in New Issue
	
	Block a user