#!/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