117 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			117 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/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
							 |