hpr-tools/workflow/hpr-assets.bash

52 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
file_dir="/var/IA/uploads"
#$allowed_extensions = "flac", "opus", "ogg", "spx", "mp3", "jpg", "png", "json", "srt", "tsv", "txt", "vtt";
if [ -d "${file_dir}" ]
then
cd "${file_dir}"
echo '"episode_id","filename","extension","size", "sha1sum", "mime_type", "file_type"' | tee "${file_dir}/assets.csv"
find "${file_dir}" -type f \( -iname "hpr*.wav" -o -iname "hpr*.flac" -o -iname "hpr*.opus" -o -iname "hpr*.ogg" -o -iname "hpr*.spx" -o -iname "hpr*.mp3" -o -iname "hpr*.jpg" -o -iname "hpr*.png" -o -iname "hpr*.json" -o -iname "hpr*.srt" -o -iname "hpr*.tsv" -o -iname "hpr*.txt" -o -iname "hpr*.vtt" \) | while read this_file
do
this_file_basename=$( basename "${this_file}" )
this_file_dirname=$( dirname "${this_file}" )
this_file_prefix="${this_file_basename%.*}"
this_file_extension="${this_file_basename##*.}"
if [ "$( echo "${this_file_prefix}" | grep -Ec '^hpr[0-9]{4}' )" -ne "1" ]
then
continue
fi
this_file_episode_id="$( echo "${this_file_prefix}" | sed 's/hpr//g' | awk -F '_' '{print $1}' )"
if [ "${this_file_episode_id}" -lt "1" ]
then
continue
fi
if [ "${this_file_episode_id}" -gt "99999" ]
then
continue
fi
this_file_size="$( ls -al "${this_file}" | awk '{print $5}' )"
this_file_sha1sum="$( sha1sum "${this_file}" | awk '{print $1}' )"
this_file_mime_type=$( file --dereference --brief --mime "${this_file}" )
this_file_file_type=$( file --dereference --brief "${this_file}" )
echo "${this_file_episode_id},\"${this_file_basename}\",\"${this_file_extension}\",\"${this_file_size}\",\"${this_file_sha1sum}\",\"${this_file_mime_type}\",\"${this_file_file_type}\"" | tee --append "${file_dir}/assets.csv"
done
fi
if [ -s "${file_dir}/assets.csv" ]
then
cat "${file_dir}/assets.csv" | csvtojson | jq '{"assets":[.[]]}' | tee "${file_dir}/assets.json"
fi
if [ -s "${file_dir}/assets.json" ]
then
curl --netrc-file $HOME/.netrc --verbose --request POST https://hub.hackerpublicradio.org/cms/assets.php --data-ascii @"${file_dir}/assets.json" --header "Content-Type: application/json"
fi