forked from HPR/hpr-tools
		
	
		
			
	
	
		
			108 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			108 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/bash -
							 | 
						||
| 
								 | 
							
								#===============================================================================
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#         FILE: collect_show_data
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#        USAGE: ./collect_show_data fromshow [toshow]
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#  DESCRIPTION: Capture metadata for a range of shows for adding to the ia.db
							 | 
						||
| 
								 | 
							
								#               database. Do it by show number rather than by date (see
							 | 
						||
| 
								 | 
							
								#               'collect_metadata')
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#      OPTIONS: ---
							 | 
						||
| 
								 | 
							
								# REQUIREMENTS: ---
							 | 
						||
| 
								 | 
							
								#         BUGS: ---
							 | 
						||
| 
								 | 
							
								#        NOTES: ---
							 | 
						||
| 
								 | 
							
								#       AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
							 | 
						||
| 
								 | 
							
								#      VERSION: 0.0.5
							 | 
						||
| 
								 | 
							
								#      CREATED: 2018-01-27 14:13:19
							 | 
						||
| 
								 | 
							
								#     REVISION: 2023-01-18 12:30:17
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#===============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set -o nounset                              # Treat unset variables as an error
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								VERSION="0.0.5"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SCRIPT=${0##*/}
							 | 
						||
| 
								 | 
							
								#DIR=${0%/*}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								showmax=10
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# We need a 'from' and 'to' argument as show numbers
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ $# -ne 1 && $# -ne 2 ]]; then
							 | 
						||
| 
								 | 
							
								    echo -e "Usage: $SCRIPT fromshow [toshow]\\n(Version $VERSION)"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Validate the arguments
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								for arg; do
							 | 
						||
| 
								 | 
							
								    if [[ ! $arg =~ ^[0-9]{1,4}$ ]]; then
							 | 
						||
| 
								 | 
							
								        echo "Invalid show number: $arg"
							 | 
						||
| 
								 | 
							
								        echo "Use a plain number"
							 | 
						||
| 
								 | 
							
								        exit 1
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Save the arguments
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								from="$1"
							 | 
						||
| 
								 | 
							
								if [[ $# -eq 1 ]]; then
							 | 
						||
| 
								 | 
							
								    to="$1"
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    to="$2"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Check the arguments are in the right order
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ $from -gt $to ]]; then
							 | 
						||
| 
								 | 
							
								    echo "First argument must be less than or equal to second"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Make an array with the range in it. Ensure numbers have leading zeroes
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								mapfile ids < <(eval "printf '%04d\n' {$from..$to}")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Check the request wasn't too big
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								if [[ ${#ids[@]} -gt $showmax ]]; then
							 | 
						||
| 
								 | 
							
								    echo "Too many shows requested; limit $showmax"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Output file - with leading zeroes in numbers
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								printf -v metadata 'ia_metadata_hpr%04d-hpr%04d.json' "$from" "$to"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo "From $from, to $to -> $metadata"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Make the request
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								ia metadata "${ids[@]/#/hpr}" > "$metadata" 2> /dev/null
							 | 
						||
| 
								 | 
							
								RES=$?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [[ $RES -ne 0 ]]; then
							 | 
						||
| 
								 | 
							
								    echo "Data collection has failed"
							 | 
						||
| 
								 | 
							
								    if [[ ! -s $metadata ]]; then
							 | 
						||
| 
								 | 
							
								        rm -f "$metadata"
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    echo "Metadata is in $metadata"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exit
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# vim: syntax=sh:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21
							 | 
						||
| 
								 | 
							
								
							 |