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 | ||
|  | 
 |