#!/usr/bin/env bash #=============================================================================== # # FILE: copy_shownotes # # USAGE: ./copy_shownotes # # DESCRIPTION: Copies the shownotes (and related files) downloaded from the # HPR server. This happens after 'sync_hpr' has been run to # collect updates from the ~hpr/upload/ directory on the server # and store the result in the local upload/ directory. # 2022-12-17: Converted to shownotes.json. # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com # VERSION: 0.0.10 # CREATED: 2015-09-16 21:51:15 # REVISION: 2023-07-01 22:48:53 # #=============================================================================== set -o nounset # Treat unset variables as an error SCRIPT=${0##*/} # # Load library functions # LIB="$HOME/bin/function_lib.sh" [ -e "$LIB" ] || { echo "$SCRIPT: Unable to source functions"; exit 1; } # shellcheck source=/home/cendjm/bin/function_lib.sh source "$LIB" # # Colour codes # define_colours # # Directories # BASEDIR="$HOME/HPR/Show_Submission" LOGS="$BASEDIR/logs" UPLOAD="$BASEDIR/upload" CACHE="$BASEDIR/shownotes" # # Filenames # LOGFILE="$LOGS/${SCRIPT}.log" #SHOWNOTES='shownotes.txt' SHOWNOTES='shownotes.json' ORIGIN='.origin' STATUS='.status' DUMMY='.dummy' # # Loop through everything in the $UPLOAD directory using a regular expression # to find sub-directories. These look like: # 1445633350_1906_2015-11-23_f348faf9125c129c1ebe0dd0edd721a0562a9d464bbbf # # The regex used in find takes into account that it needs to match the full # path. # count=0 target=".*/[0-9]+_[0-9]{4}_[0-9]{4}-[0-9]{2}-[0-9]{2}_.+$" while read -r d do # # Parse out the show number # show="$(echo "$d" | cut -f2 -d_)" from="$UPLOAD/$d/" dir="$CACHE/hpr${show}" to="$dir/$SHOWNOTES" origin="$dir/$ORIGIN" status="$dir/$STATUS" dummy="$dir/$DUMMY" # # Make the receiving directory if it doesn't exist # if [[ ! -e $dir ]]; then mkdir "$dir" fi # # Copy files if there are no shownotes or the file exists and is empty. # # 2022-12-17: We're soon not using shownotes.txt any more. The data is in # shownotes.json instead. Also, dummy shows have a '.dummy' file rather # than empty notes. # # if [[ ! -e $to || ! -s $to ]]; then if [[ ! -e $to || -e $dummy ]]; then rsync -vaP "$from" "${dir}/" echo "$d" > "$origin" echo "copied" > "$status" ((count++)) printf '%(%F %T)T %s\n' -1 "$dir" >> "$LOGFILE" echo "${green}Copied notes for show $show${reset}" fi done < <(find "$UPLOAD" -maxdepth 1 -regextype posix-egrep -regex "$target" -type d -printf '%f\n') if [[ $count -eq 0 ]]; then echo "${yellow}Nothing to do${reset}" else echo "${green}Notes copied: $count${reset}" fi exit # vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21