forked from HPR/hpr-tools
		
	Moved project directories and files to an empty local repo
This commit is contained in:
		
							
								
								
									
										227
									
								
								Show_Submission/do_update_reservations
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										227
									
								
								Show_Submission/do_update_reservations
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,227 @@ | ||||
| #!/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: 2023-06-14 23:24:42 | ||||
| # | ||||
| #=============================================================================== | ||||
|  | ||||
| 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/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 | ||||
|  | ||||
| #{{{ 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 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user