forked from HPR/hpr-tools
		
	Show_Submission/copy_shownotes: Changed the location of the function library
Show_Submission/do_brave: Updates to the way local stand-alone HTML is generated for
    review purposes.
Show_Submission/do_index: Changed the location of the function library
Show_Submission/do_pandoc: Changed the location of the function library; now uses
    'author_title.pl' to generate YAML for Pandoc
Show_Submission/do_parse: Trivial change
Show_Submission/do_pictures: Changed the location of the function library; better
    handling of the show specification
Show_Submission/do_report: Changed the location of the function library
Show_Submission/do_update_reservations: Changed the location of the function library
Show_Submission/fix_relative_links: Added features 'say' and 'state'
Show_Submission/parse_JSON: New checks: notes too short, trailing spaces on title,
    summary and tags (needing JSON changes). Check for Markdown in the
    assets (see 'do_pandoc_assets'). New 'trim' function.
		
	
		
			
				
	
	
		
			228 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			228 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash -
 | 
						|
#===============================================================================
 | 
						|
#
 | 
						|
#         FILE: do_update_reservations
 | 
						|
#
 | 
						|
#        USAGE: ./do_update_reservations <epno>
 | 
						|
#
 | 
						|
#  DESCRIPTION: Script to update the status in the 'reservations' table after
 | 
						|
#               a show has been processed.
 | 
						|
#
 | 
						|
#      OPTIONS: ---
 | 
						|
# REQUIREMENTS: ---
 | 
						|
#         BUGS: ---
 | 
						|
#        NOTES: ---
 | 
						|
#       AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
 | 
						|
#      VERSION: 0.0.6
 | 
						|
#      CREATED: 2022-04-11 09:36:21
 | 
						|
#     REVISION: 2024-06-18 20:16:19
 | 
						|
#
 | 
						|
#===============================================================================
 | 
						|
 | 
						|
set -o nounset                              # Treat unset variables as an error
 | 
						|
 | 
						|
SCRIPT=${0##*/}
 | 
						|
#DIR=${0%/*}
 | 
						|
 | 
						|
# shellcheck disable=SC2034
 | 
						|
VERSION="0.0.6"
 | 
						|
 | 
						|
STDOUT="/dev/fd/2"
 | 
						|
 | 
						|
#
 | 
						|
# Load library functions
 | 
						|
#
 | 
						|
LIB="$HOME/HPR/function_lib.sh"
 | 
						|
[ -e "$LIB" ] || { echo "$SCRIPT: Unable to source functions"; exit 1; }
 | 
						|
# shellcheck source=/home/cendjm/HPR/function_lib.sh
 | 
						|
source "$LIB"
 | 
						|
 | 
						|
#
 | 
						|
# Colour codes
 | 
						|
#
 | 
						|
define_colours
 | 
						|
 | 
						|
#{{{ Functions: --- _usage ---
 | 
						|
#===  FUNCTION  ================================================================
 | 
						|
#         NAME: _usage
 | 
						|
#  DESCRIPTION: Report usage
 | 
						|
#   PARAMETERS: None
 | 
						|
#      RETURNS: Nothing
 | 
						|
#===============================================================================
 | 
						|
_usage () {
 | 
						|
    cat >$STDOUT <<-endusage
 | 
						|
Usage: ./${SCRIPT} [-h] [-d] [-m] shownumber
 | 
						|
 | 
						|
Version: $VERSION
 | 
						|
 | 
						|
Script to update the status in the 'reservations' table after a show has been
 | 
						|
processed.
 | 
						|
 | 
						|
Options:
 | 
						|
  -h            Print this help
 | 
						|
  -d            Dry-run mode. Reports what it will do but doesn't do it
 | 
						|
  -m            Monochrome mode - no colours
 | 
						|
 | 
						|
Arguments:
 | 
						|
    shownumber
 | 
						|
 | 
						|
Examples
 | 
						|
  ./${SCRIPT} -h
 | 
						|
  ./${SCRIPT} -m 3112
 | 
						|
  ./${SCRIPT} -d 3112
 | 
						|
  ./${SCRIPT} -dm 3112
 | 
						|
  ./${SCRIPT} 3112
 | 
						|
 | 
						|
endusage
 | 
						|
    exit
 | 
						|
}
 | 
						|
#}}}
 | 
						|
 | 
						|
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
#
 | 
						|
# Paths to files
 | 
						|
#
 | 
						|
BASENAME="$HOME/HPR/Show_Submission"
 | 
						|
 | 
						|
#
 | 
						|
# Tools
 | 
						|
#
 | 
						|
BASECOM='curl -K ./.hpradmin_curlrc -s'
 | 
						|
URL="https://hub.hackerpublicradio.org/cms/status.php"
 | 
						|
QUERY="${BASECOM} ${URL}"
 | 
						|
 | 
						|
#
 | 
						|
# Option defaults
 | 
						|
#
 | 
						|
COLOUR=1 # use colours by default
 | 
						|
DRYRUN=0 # live mode by default
 | 
						|
 | 
						|
#
 | 
						|
# Process options
 | 
						|
#
 | 
						|
while getopts :hdm opt
 | 
						|
do
 | 
						|
    case "${opt}" in
 | 
						|
        h) _usage;;
 | 
						|
        d) DRYRUN=1;;
 | 
						|
        m) COLOUR=0;;
 | 
						|
        ?) echo "$SCRIPT: Invalid option; aborting"; exit 1;;
 | 
						|
    esac
 | 
						|
done
 | 
						|
shift $((OPTIND - 1))
 | 
						|
 | 
						|
#
 | 
						|
# Cancel colours if requested
 | 
						|
#
 | 
						|
if [[ $COLOUR -eq 0 ]]; then
 | 
						|
    undefine_colours
 | 
						|
fi
 | 
						|
 | 
						|
#
 | 
						|
# Check the argument after any options
 | 
						|
#
 | 
						|
if [[ $# -ne 1 ]]; then
 | 
						|
    echo "$SCRIPT: ${red}Usage: $SCRIPT shownumber${reset}"
 | 
						|
    exit
 | 
						|
fi
 | 
						|
 | 
						|
epno="$1"
 | 
						|
 | 
						|
SHOWDIR="$BASENAME/shownotes/hpr${epno}"
 | 
						|
STATUSFILE="$SHOWDIR/.status"
 | 
						|
 | 
						|
#
 | 
						|
# Check the show in question exists
 | 
						|
#
 | 
						|
if [[ ! -d $SHOWDIR ]]; then
 | 
						|
    echo "$SHOWDIR not found, can't continue"
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
#
 | 
						|
# Check the show is in the correct state of local processing
 | 
						|
#
 | 
						|
declare -a states
 | 
						|
states+=( '+dir' )
 | 
						|
if [[ -e "$SHOWDIR/shownotes.json" ]]; then
 | 
						|
    states+=( '+shownotes' )
 | 
						|
fi
 | 
						|
if [[ -e "$SHOWDIR/hpr${epno}.html" ]]; then
 | 
						|
    states+=( '+processed' )
 | 
						|
fi
 | 
						|
if [[ -e "$SHOWDIR/.uploaded" ]]; then
 | 
						|
    states+=( '+uploaded' )
 | 
						|
fi
 | 
						|
echo "${green}Current state: ${states[*]}${reset}"
 | 
						|
 | 
						|
if ! grep -q -E '\+uploaded' <<<"${states[@]}"; then
 | 
						|
    echo "The show is not in the +uploaded state"
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
#
 | 
						|
# Run the query with 'curl' and filter out this episode
 | 
						|
#
 | 
						|
reply="$(${QUERY} | grep -E "^[^,]+,$epno" )"
 | 
						|
# echo "D> $reply"
 | 
						|
 | 
						|
#
 | 
						|
# If we found the episode in the list we need to test further
 | 
						|
#
 | 
						|
if [[ -n $reply ]]; then
 | 
						|
    echo "Found $epno in 'reservations'"
 | 
						|
 | 
						|
    #
 | 
						|
    # Get the current state in the database by parsing the line returned.
 | 
						|
    # Since Ken changed this out of the blue we now have:
 | 
						|
    # 1. Epoch timestamp
 | 
						|
    # 2. Episode number
 | 
						|
    # 3. Episode date
 | 
						|
    # 4. Key
 | 
						|
    # 5. Status
 | 
						|
    # 6. Email
 | 
						|
    #
 | 
						|
    if [[ $reply =~ ^([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),.*$ ]]; then
 | 
						|
        state="${BASH_REMATCH[5]}"
 | 
						|
 | 
						|
        #
 | 
						|
        # If it's aready in the desired state we're finished, otherwise we'll
 | 
						|
        # set the new state
 | 
						|
        #
 | 
						|
        if [[ $state == 'METADATA_PROCESSED' ]]; then
 | 
						|
            echo "Already marked ${blue}${state}${reset}"
 | 
						|
        else
 | 
						|
            echo "Ready for marking"
 | 
						|
            command="${BASECOM} ${URL}?ep_num=${epno}&status=METADATA_PROCESSED"
 | 
						|
            if [[ $DRYRUN -eq 1 ]]; then
 | 
						|
                echo -e "Dry-run: would have run\n${yellow}$command${reset}"
 | 
						|
            else
 | 
						|
                echo "${yellow}$command${reset}"
 | 
						|
                $command
 | 
						|
 | 
						|
                #
 | 
						|
                # Change state/log what we did
 | 
						|
                #
 | 
						|
                echo "database" >> "$STATUSFILE" || \
 | 
						|
                    { echo "Failed to update $STATUSFILE"; exit 1; }
 | 
						|
            fi
 | 
						|
        fi
 | 
						|
 | 
						|
    else
 | 
						|
        echo "Couldn't parse '$reply'; aborting"
 | 
						|
        exit 1
 | 
						|
    fi
 | 
						|
else
 | 
						|
    #
 | 
						|
    # We have no record of this show locally
 | 
						|
    #
 | 
						|
    echo "Not found $epno"
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
exit
 | 
						|
 | 
						|
# vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21:fdm=marker
 | 
						|
 |