dc0f29e957
Database/query2tt2: comment and documentation updates; use of Perl's try/catch. InternetArchive/.make_metadata.cfg: added comments for readability InternetArchive/make_metadata: bug fix needed now that all shows on the HPR server have a directory with assets under it. InternetArchive/repair_assets: new Bash script in development. Collects assets from the IA and uploads them to a new directory on the HPR server. Will run 'fix_asset_links' (to repair asset links for their new directories) once it is ready. InternetArchive/repair_item: Bash script which was originally written to run on 'borg' and upload files to a new IA item when the uploads timed out. Now enhanced to upload missing files recovered from the HPR backup disk, such as transcripts.
628 lines
19 KiB
Bash
Executable File
628 lines
19 KiB
Bash
Executable File
#!/bin/bash -
|
|
#===============================================================================
|
|
#
|
|
# FILE: repair_assets
|
|
#
|
|
# USAGE: ./repair_assets showid
|
|
#
|
|
# DESCRIPTION: Given a show where there was a directory of asset files on the
|
|
# old HPR server whichj got lost in the migration, rebuild it
|
|
# and fill it with assets from the IA. Modify the show notes to
|
|
# point to these recovered assets.
|
|
#
|
|
# OPTIONS: ---
|
|
# REQUIREMENTS: ---
|
|
# BUGS: ---
|
|
# NOTES: ---
|
|
# AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
|
|
# VERSION: 0.0.6
|
|
# CREATED: 2024-05-10 21:26:31
|
|
# REVISION: 2024-07-10 15:12:54
|
|
#
|
|
#===============================================================================
|
|
|
|
# set -o nounset # Treat unset variables as an error
|
|
|
|
VERSION="0.0.6"
|
|
|
|
SCRIPT=${0##*/}
|
|
# DIR=${0%/*}
|
|
|
|
STDOUT="/dev/fd/2"
|
|
|
|
#
|
|
# Select the appropriate working directory for the host
|
|
#
|
|
case $(hostname) in
|
|
i7-desktop)
|
|
BASEDIR="$HOME/HPR/InternetArchive"
|
|
;;
|
|
borg)
|
|
BASEDIR="$HOME/IA"
|
|
;;
|
|
*)
|
|
echo "Wrong host!"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
cd "$BASEDIR" || { echo "Failed to cd to $BASEDIR"; exit 1; }
|
|
|
|
#
|
|
# Load library functions
|
|
#
|
|
LIB="$HOME/HPR/function_lib.sh"
|
|
[ -e "$LIB" ] || { echo "Unable to source functions"; exit; }
|
|
# shellcheck disable=SC1090
|
|
source "$LIB"
|
|
|
|
#
|
|
# Enable coloured messages
|
|
#
|
|
define_colours
|
|
|
|
#
|
|
# Sanity checks
|
|
#
|
|
IA=$(command -v ia)
|
|
[ -n "$IA" ] || { echo "Program 'ia' was not found"; exit 1; }
|
|
Q2T=$(command -v query2tt2)
|
|
[ -n "$Q2T" ] || { echo "Program 'query2tt2' was not found"; exit 1; }
|
|
FIXAL="$BASEDIR/fix_asset_links"
|
|
[ -e "$FIXAL" ] || { echo "Program '$FIXAL' was not found"; exit 1; }
|
|
|
|
#
|
|
# Make temporary files and set traps to delete them
|
|
#
|
|
TMP1=$(mktemp) || { echo "$SCRIPT: creation of temporary file failed!"; exit 1; }
|
|
TMP2=$(mktemp) || { echo "$SCRIPT: creation of temporary file failed!"; exit 1; }
|
|
trap 'cleanup_temp $TMP1 $TMP2' SIGHUP SIGINT SIGPIPE SIGTERM EXIT
|
|
|
|
# {{{ -- Functions -- _verbose, _usage, _log, find_missing, make_dir
|
|
|
|
#=== FUNCTION ================================================================
|
|
# NAME: find_missing
|
|
# DESCRIPTION: Given two arrays containing IA assets and HPR assets,
|
|
# determine which IA assets are missing from the HPR list.
|
|
# PARAMETERS: $1 (nameref) IA list
|
|
# $2 (nameref) HPR list
|
|
# $3 Name of array to receive list of missing assets
|
|
# RETURNS: Nothing
|
|
#===============================================================================
|
|
find_missing () {
|
|
local -n IA="${1}"
|
|
local -n HPR="${2}"
|
|
local output="${3}"
|
|
|
|
local -A hIA hHPR
|
|
local i key
|
|
|
|
#
|
|
# Make a hash keyed by the IA file base names from an indexed array
|
|
#
|
|
for (( i=0; i<${#IA[@]}; i++ )); do
|
|
hIA+=([${IA[$i]##*/}]=${IA[$i]})
|
|
done
|
|
|
|
#
|
|
# Make a hash keyed by the HPR file base names from an indexed array
|
|
#
|
|
for (( i=0; i<${#HPR[@]}; i++ )); do
|
|
hHPR+=([${HPR[$i]##*/}]=${HPR[$i]})
|
|
done
|
|
|
|
#
|
|
# Use the basename keys to check what's missing, but return the full path
|
|
# names.
|
|
#
|
|
for key in "${!hIA[@]}"; do
|
|
if ! exists_in hHPR "$key"; then
|
|
eval "$output+=('${hIA[$key]}')"
|
|
fi
|
|
done
|
|
}
|
|
|
|
#=== FUNCTION ================================================================
|
|
# NAME: make_dir
|
|
# DESCRIPTION: Make a directory if it doesn't exist, failing gracefully on
|
|
# errors.
|
|
# PARAMETERS: $1 directory path
|
|
# RETURNS: True if success, otherwise exits the caller script
|
|
#===============================================================================
|
|
make_dir () {
|
|
local dir="${1}"
|
|
|
|
if [[ ! -d $dir ]]; then
|
|
mkdir -p "$dir" || {
|
|
coloured 'red' "Failed to create $dir"
|
|
exit 1
|
|
}
|
|
fi
|
|
}
|
|
|
|
#=== FUNCTION ================================================================
|
|
# NAME: _verbose
|
|
# DESCRIPTION: Writes a message in verbose mode
|
|
# PARAMETERS: * message strings to write
|
|
# RETURNS: Nothing
|
|
#===============================================================================
|
|
_verbose () {
|
|
[ "$VERBOSE" -eq 0 ] && return
|
|
for msg; do
|
|
printf '%s\n' "$msg"
|
|
done
|
|
}
|
|
|
|
#=== FUNCTION ================================================================
|
|
# NAME: _log
|
|
# DESCRIPTION: Appends a record to the file "$LOGFILE"
|
|
# PARAMETERS: $1 Message to write
|
|
# RETURNS: Nothing
|
|
#===============================================================================
|
|
_log () {
|
|
local message="${1}"
|
|
|
|
echo "$(date +%F\ %T) $message" >> "$LOGFILE"
|
|
}
|
|
|
|
#=== FUNCTION ================================================================
|
|
# NAME: _usage
|
|
# DESCRIPTION: Reports usage; always exits the script after doing so
|
|
# PARAMETERS: 1 - the integer to pass to the 'exit' command
|
|
# RETURNS: Nothing
|
|
#===============================================================================
|
|
_usage () {
|
|
local -i result=${1:-0}
|
|
|
|
cat >$STDOUT <<-endusage
|
|
${SCRIPT} - version: ${VERSION}
|
|
|
|
Usage: ./${SCRIPT} [-h] [-v] [-d {0|1}] [-D] showid
|
|
|
|
Attempts to repair an show where the directory of assets was not transferred
|
|
from the old HPR server.
|
|
|
|
Options:
|
|
-h Print this help
|
|
-v Run in verbose mode where more information is
|
|
reported. Default is off. If -v is repeated it
|
|
increases the verbosity level (levels 1 and 2 only).
|
|
-d 0|1 Dry run: -d 1 (the default) runs the script in dry-run
|
|
mode where nothing is changed but the actions that
|
|
will be taken are reported; -d 0 turns off dry-run
|
|
mode and the actions will be carried out.
|
|
-D Run in debug mode where a lot more information is
|
|
reported
|
|
|
|
Arguments:
|
|
showid The show id in the form 'hpr1234'
|
|
|
|
endusage
|
|
exit "$result"
|
|
}
|
|
|
|
# }}}
|
|
|
|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Directories and files
|
|
#-------------------------------------------------------------------------------
|
|
LOGS="$BASEDIR/logs"
|
|
make_dir "${LOGS}"
|
|
LOGFILE="$LOGS/$SCRIPT.log"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Options
|
|
#-------------------------------------------------------------------------------
|
|
# Default settings
|
|
#
|
|
VERBOSE=0
|
|
|
|
#
|
|
# Process options
|
|
#
|
|
while getopts :d:Dhv opt
|
|
do
|
|
case "${opt}" in
|
|
D) DEBUG=1;;
|
|
d) DRYRUN=$OPTARG;;
|
|
h) _usage 0;;
|
|
v) ((VERBOSE++));;
|
|
*) echo "** Unknown option"
|
|
_usage 1;;
|
|
esac
|
|
done
|
|
shift $((OPTIND - 1))
|
|
|
|
#
|
|
# Set option defaults and check their values
|
|
#
|
|
DRYRUN=${DRYRUN:-1}
|
|
if [[ $DRYRUN -ne 0 && $DRYRUN -ne 1 ]]; then
|
|
coloured 'red' "** Use '-d 0' or '-d 1'"
|
|
_usage 1
|
|
fi
|
|
[[ $VERBOSE -gt 0 && $DRYRUN -eq 1 ]] && echo "Dry run mode"
|
|
|
|
DEBUG=${DEBUG:-0}
|
|
[[ $DEBUG -eq 1 ]] && coloured 'yellow' "Debug mode"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Argument check
|
|
#-------------------------------------------------------------------------------
|
|
# Should have one argument
|
|
#
|
|
if [[ $# != 1 ]]; then
|
|
coloured 'red' "Missing argument"
|
|
_usage 1
|
|
fi
|
|
show="${1,,}"
|
|
|
|
#
|
|
# Ensure show id is correctly formatted. We want it to be 'hpr1234'
|
|
#
|
|
if [[ $show =~ (hpr)?([0-9]+) ]]; then
|
|
printf -v show 'hpr%04d' "${BASH_REMATCH[2]}"
|
|
else
|
|
coloured 'red' "Incorrect show specification: $show"
|
|
coloured 'yellow' "Use 'hpr9999' or '9999' format"
|
|
exit 1
|
|
fi
|
|
_DEBUG "Parsed item: $show"
|
|
echo "Processing show $show"
|
|
_log "Processing show $show; dry-run: $([ "$DRYRUN" -eq 1 ] && echo "on" || echo "off")"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Declarations and constants
|
|
#-------------------------------------------------------------------------------
|
|
declare -a iacache
|
|
|
|
#
|
|
# SHOWURL is where the show will be on the webserver
|
|
#
|
|
printf -v SHOWURL 'https://hackerpublicradio.org/eps/%s/index.html' "$show"
|
|
|
|
#
|
|
# CACHEDIR is where we store asset details and files
|
|
#
|
|
CACHEDIR="$BASEDIR/assets"
|
|
[ ! -d "$CACHEDIR" ] && {
|
|
coloured 'red' "Creating cache directory"
|
|
make_dir "$CACHEDIR"
|
|
}
|
|
|
|
#
|
|
# Pointers into the cache:
|
|
# LOCAL_ASSETDIR - where the cache for this show lives
|
|
# LOCAL_FILEDIR - where the IA files have been placed
|
|
# LOCAL_PARENTDIR - the equivalent directory to the top show dir
|
|
#
|
|
LOCAL_ASSETDIR="$CACHEDIR/${show}"
|
|
LOCAL_FILEDIR="$LOCAL_ASSETDIR/files"
|
|
LOCAL_PARENTDIR="$LOCAL_FILEDIR/${show}"
|
|
|
|
#
|
|
# Pointers to the HPR server directories:
|
|
# REMOTE_ASSETDIR - where the assets are to go
|
|
# REMOTE_PARENTDIR - the remote parent directory
|
|
#
|
|
REMOTE_ASSETDIR="public_html/eps/${show}/${show}"
|
|
REMOTE_PARENTDIR="public_html/eps/${show}"
|
|
|
|
CMDTPL='ssh hpr@hackerpublicradio.org %s'
|
|
|
|
MANIFEST="$CACHEDIR/$show/manifest"
|
|
DBNOTES="$CACHEDIR/$show/notes.html"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Check the show exists in the database (or is visible on the website).
|
|
#-------------------------------------------------------------------------------
|
|
_verbose "Checking the show exists on the HPR server"
|
|
result=$(curl --head --silent --write-out "%{http_code}" --output /dev/null "$SHOWURL")
|
|
if [[ $result -eq 404 ]]; then
|
|
coloured 'red' "Could not detect show '$show' on the HPR server"
|
|
_log "Show '$show' not on the HPR server"
|
|
exit 1
|
|
fi
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Check the show exists on the IA
|
|
#-------------------------------------------------------------------------------
|
|
_verbose "Checking the show exists on the IA server"
|
|
if ! ia metadata "$show" --exists > /dev/null 2>&1; then
|
|
coloured 'red' "Could not detect show '$show' on the IA server"
|
|
coloured 'yellow' "Check that archive.org is available"
|
|
coloured 'yellow' "Try https://downfor.io/internet-archive"
|
|
_log "Show '$show' not on the IA server"
|
|
exit 1
|
|
fi
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Check IA, collect contents, classify them
|
|
#-------------------------------------------------------------------------------
|
|
# Interrogate the IA for the required item contents. If it returns True we can
|
|
# collect its contents, otherwise we can't proceed. The file 'TMP1' contains
|
|
# just a simple list of the files on the IA relating to this item.
|
|
#
|
|
_verbose "Collecting filenames from the IA server"
|
|
if ia list "$show" > "$TMP1"; then
|
|
while read -r iafile; do
|
|
iacache+=("$iafile")
|
|
done < "$TMP1"
|
|
else
|
|
coloured 'red' "Item $show can't be found on the IA"
|
|
coloured 'red' "Can't continue"
|
|
_log "Files for show '$show' not on the IA server"
|
|
exit 1
|
|
fi
|
|
|
|
_DEBUG "$(printf '%s\n' "${iacache[@]}")"
|
|
|
|
#
|
|
# Determine which files are assets
|
|
#
|
|
_verbose "Categorising files held on the IA"
|
|
|
|
declare -a audio ia_transcript ia_asset
|
|
|
|
audio_re="^${show}\.(flac|mp3|ogg|opus|spx|wav)\$"
|
|
# transcript_re="^${show}/${show}/${show}\.(json|srt|tsv|txt|vtt)\$"
|
|
transcript_re="^${show}/${show}\.(json|srt|tsv|txt|vtt)\$"
|
|
asset_re="^${show}/(${show}/)?.*\$"
|
|
metadata_re="^(__ia_thumb.jpg|${show}[^/]+\.(afpk|torrent|gz|xml|sqlite|png))\$"
|
|
|
|
for file in "${iacache[@]}"; do
|
|
if [[ $file =~ $audio_re ]]; then
|
|
audio+=("$file")
|
|
elif [[ $file =~ $metadata_re ]]; then
|
|
_verbose "Skipping $file"
|
|
continue
|
|
elif [[ $file =~ $transcript_re ]]; then
|
|
ia_transcript+=("$file")
|
|
elif [[ $file =~ $asset_re ]]; then
|
|
ia_asset+=("$file")
|
|
fi
|
|
done
|
|
|
|
#
|
|
# Report what was collected at verbosity level 2
|
|
#
|
|
if [[ $VERBOSE -gt 1 ]]; then
|
|
coloured 'cyan' "** audio (${#audio[@]}):"
|
|
printf '%s\n' "${audio[@]}"
|
|
|
|
coloured 'cyan' "** transcript (${#ia_transcript[@]}):"
|
|
printf '%s\n' "${ia_transcript[@]}"
|
|
|
|
coloured 'cyan' "** asset (${#ia_asset[@]}):"
|
|
printf '%s\n' "${ia_asset[@]}"
|
|
|
|
_log "IA asset count for show '$show' = ${#ia_asset[@]}"
|
|
fi
|
|
|
|
#
|
|
# No assets, no need to proceed!
|
|
#
|
|
if [[ ${#ia_asset[@]} -eq 0 ]]; then
|
|
coloured 'green' "No IA assets found for show $show; nothing to do"
|
|
_log "Nothing to do for show $show"
|
|
exit
|
|
fi
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Check what's on the HPR server
|
|
#-------------------------------------------------------------------------------
|
|
#
|
|
# 'rc' is the remote command template
|
|
#
|
|
printf -v rc 'find public_html/eps/%s -type f -printf "%s/%%P\\n"' "$show" "$show"
|
|
|
|
#
|
|
# 'command' is the local command we'll run to run a remote command on the HPR
|
|
# server
|
|
#
|
|
# shellcheck disable=SC2059 disable=SC2089
|
|
printf -v command "$CMDTPL" "'$rc'"
|
|
|
|
if [[ $VERBOSE -gt 1 ]]; then
|
|
echo "Command: $command"
|
|
fi
|
|
|
|
declare -a hpr_asset
|
|
ignore_re="index.html$"
|
|
|
|
#
|
|
# Run the command and save the output. Save the asset names returned in an
|
|
# array. TODO: Handle errors from the command
|
|
#
|
|
if [[ $DRYRUN -eq 0 ]]; then
|
|
eval "$command" > "$TMP2"
|
|
RES=$?
|
|
if [[ $RES -eq 0 ]]; then
|
|
_verbose "$(coloured 'green' "Remote command successful")"
|
|
while read -r hprfile; do
|
|
if [[ ! $hprfile =~ $ignore_re ]]; then
|
|
hpr_asset+=("${hprfile}")
|
|
fi
|
|
done < "$TMP2"
|
|
_verbose "$(coloured 'green' "Assets found on HPR server = ${#hpr_asset[@]}")"
|
|
_verbose "$(printf '%s\n' "${hpr_asset[@]}")"
|
|
_log "Assets found on HPR server = ${#hpr_asset[@]}"
|
|
else
|
|
coloured 'red' "Remote command failed"
|
|
_log "Failed while searching for HPR assets"
|
|
exit 1
|
|
fi
|
|
else
|
|
coloured 'yellow' "Would have searched for assets on the HPR server"
|
|
fi
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Compare the two asset lists and return what's missing on the HPR server
|
|
#-------------------------------------------------------------------------------
|
|
declare -a missing
|
|
find_missing ia_asset hpr_asset missing
|
|
_verbose "$(coloured 'cyan' "** missing (${#missing[@]}):")"
|
|
_verbose "$(printf '%s\n' "${missing[@]}")"
|
|
|
|
if [[ ${#missing[@]} -eq 0 ]]; then
|
|
coloured 'green' "No missing assets detected; nothing to do"
|
|
_log "No missing assets detected; nothing to do"
|
|
exit
|
|
else
|
|
coloured 'yellow' "Found ${#missing[@]} files missing on the HPR server"
|
|
fi
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Prepare to copy the missing files
|
|
#-------------------------------------------------------------------------------
|
|
make_dir "$LOCAL_FILEDIR"
|
|
|
|
declare -a downloads
|
|
|
|
#
|
|
# Check whether files are already downloaded
|
|
#
|
|
for file in "${missing[@]}"; do
|
|
if [[ ! -e "$LOCAL_FILEDIR/$show/$file" ]]; then
|
|
downloads+=("$file")
|
|
fi
|
|
done
|
|
|
|
_verbose "$(coloured 'cyan' "** downloads (${#downloads[@]}):")"
|
|
_verbose "$(printf '%s\n' "${downloads[@]}")"
|
|
|
|
#
|
|
# If we have files to download get them now
|
|
#
|
|
if [[ ${#downloads[@]} -gt 0 ]]; then
|
|
if [[ $DRYRUN -eq 1 ]]; then
|
|
coloured 'yellow' "Would have downloaded missing files from the IA"
|
|
else
|
|
ia download "$show" --destdir="$LOCAL_FILEDIR" "${downloads[@]}"
|
|
RES=$?
|
|
if [[ $RES -eq 0 ]]; then
|
|
coloured 'green' "Downloads complete"
|
|
_log "Downloaded IA assets for show $show"
|
|
fi
|
|
fi
|
|
else
|
|
coloured 'yellow' "IA files are already downloaded"
|
|
fi
|
|
|
|
# shellcheck disable=SC2089
|
|
RSYNCTPL="rsync -a -e 'ssh' %s hpr@hpr:%s"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Build the 'ssh' command to make a directory
|
|
#-------------------------------------------------------------------------------
|
|
#
|
|
# Prepare to make the remote directory if necessary.
|
|
#
|
|
# - $rc is the remote command we'll run on the server
|
|
# - $command is the full 'ssh' command including $rc
|
|
#
|
|
printf -v rc 'if [ ! -e "%s" ]; then mkdir -p "%s"; fi' \
|
|
"$REMOTE_ASSETDIR" "$REMOTE_ASSETDIR"
|
|
|
|
# shellcheck disable=SC2059 disable=SC2089
|
|
printf -v command "$CMDTPL" "'$rc'"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Run or report the command that would be run
|
|
#-------------------------------------------------------------------------------
|
|
if [[ $DRYRUN -eq 0 ]]; then
|
|
eval "$command"
|
|
RES=$?
|
|
if [[ $RES -eq 0 ]]; then
|
|
coloured 'green' "Remote directory creation successful"
|
|
else
|
|
coloured 'red' "Remote directory creation failed"
|
|
fi
|
|
else
|
|
coloured 'yellow' "Would have created the remote directory"
|
|
echo "$command"
|
|
fi
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Synchronise assets to the directory
|
|
#-------------------------------------------------------------------------------
|
|
# shellcheck disable=SC2059 disable=SC2089
|
|
printf -v command "$RSYNCTPL" "$LOCAL_PARENTDIR/" "$REMOTE_PARENTDIR/"
|
|
|
|
if [[ $DRYRUN -eq 0 ]]; then
|
|
eval "$command"
|
|
RES=$?
|
|
if [[ $RES -eq 0 ]]; then
|
|
coloured 'green' "Remote upload successful"
|
|
_log "Uploaded assets for show $show"
|
|
else
|
|
coloured 'red' "Remote upload failed"
|
|
exit 1
|
|
fi
|
|
else
|
|
coloured 'yellow' "Would have synchronised local assets with the remote directory"
|
|
echo "$command"
|
|
fi
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Make a 'manifest' file if necessary
|
|
#-------------------------------------------------------------------------------
|
|
if [[ $DRYRUN -eq 0 ]]; then
|
|
if [[ ! -e $MANIFEST ]]; then
|
|
find "$LOCAL_PARENTDIR" -type f -printf '%P\n' > "$MANIFEST"
|
|
_verbose "$(coloured 'green' "Created manifest file")"
|
|
_log "Created manifest file $MANIFEST"
|
|
fi
|
|
fi
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Save the notes from the database if necessary
|
|
#-------------------------------------------------------------------------------
|
|
if [[ $DRYRUN -eq 0 ]]; then
|
|
if [[ ! -e $DBNOTES ]]; then
|
|
if ! tunnel_is_open; then
|
|
open_tunnel
|
|
fi
|
|
if query2tt2 -config="$BASEDIR/.hpr_livedb.cfg" \
|
|
-temp="$BASEDIR/query2tt2_nokey.tpl" \
|
|
-out="$DBNOTES" \
|
|
-dbarg="${show:3}" \
|
|
'select notes from eps where id = ?'
|
|
then
|
|
_verbose "$(coloured 'green' "Created notes file")"
|
|
_log "Created notes file $DBNOTES"
|
|
else
|
|
_verbose "$(coloured 'red' "Creation of notes file failed")"
|
|
_log "Creation of notes file $DBNOTES failed"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Adjust the notes with 'fix_asset_links'
|
|
#-------------------------------------------------------------------------------
|
|
if [[ $DRYRUN -eq 0 ]]; then
|
|
echo "$FIXAL"
|
|
# $FIXAL
|
|
fi
|
|
|
|
|
|
#
|
|
# All done
|
|
#
|
|
if [[ $DRYRUN -eq 0 ]]; then
|
|
_log "Repaired show $show"
|
|
fi
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# √ Make a place to hold the files on this machine
|
|
# √ Download them from the IA
|
|
# √ Make a directory on the HPR server
|
|
# √ Copy the assets to the HPR server
|
|
# Modify the notes to point to the assets on the server
|
|
#-------------------------------------------------------------------------------
|
|
|
|
# vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21:fdm=marker
|