From cb9ad2c456c44c45ab834998c96f4fb36fd306c8 Mon Sep 17 00:00:00 2001 From: Ken Fallon Date: Wed, 1 Apr 2026 22:05:06 +0200 Subject: [PATCH] 2026-04-01_20-05-06Z_Wednesday add reserve skeleton --- workflow/hpr-prepare-reserve.bash | 184 ++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100755 workflow/hpr-prepare-reserve.bash diff --git a/workflow/hpr-prepare-reserve.bash b/workflow/hpr-prepare-reserve.bash new file mode 100755 index 0000000..06b5cbb --- /dev/null +++ b/workflow/hpr-prepare-reserve.bash @@ -0,0 +1,184 @@ +#!/usr/bin/env bash + +dest_dir="$HOME/tmp/hpr/reserve/" +piper_bin="/opt/bin/piper/piper/piper" # The location of the text to speech engine +piper_voice="/opt/bin/piper/piper/piper-voices/en/en_US/lessac/medium/en_US-lessac-medium.onnx" + +rsync -av --partial --progress hpr:/docker/users/hpr/hub.hackerpublicradio.org/reserve/ ${dest_dir} + +if [ $# -eq 0 ] +then + working_dir="$( find ${dest_dir} -maxdepth 1 -mindepth 1 -type d -iname "*_*_*" | sort -n | head -1 )" +else + if [ $1 == "skip" ] + then + find ${dest_dir} -maxdepth 1 -mindepth 1 -type d -iname "*_*_*" | sort -n + exit 1 + fi + working_dir="$( find ${dest_dir} -maxdepth 1 -mindepth 1 -type d -iname "*_*_*" | sort -n | grep "${1}" | head -1 )" +fi + +cd "${working_dir}" + +submitted_month="$( \date --date @$( basename $( echo $working_dir ) | awk -F '_' '{print $1}' ) +"%B %Y" )" + +num_reserve_shows="$( find ${dest_dir} -maxdepth 1 -mindepth 1 -type d -iname "*_*_*" | wc -l )" + +if [ "$( ls ${working_dir}/*srt | wc -l )" -ne "1" ] +then + echo "Can't determine the srt file" + exit +fi + +media_srt="$( ls ${working_dir}/*srt )" +media_txt="${media_srt%.*}.txt" + +if [ "${num_reserve_shows}" -ge "10" ] +then + feedback="You are listening to a show from the Reserve Queue. This show was submitted in ${submitted_month} to cover occasions like this where there are gaps in the schedule." + echo "1 +00:00:00,000 --> 00:00:03,000 +You are listening to a show from the Reserve Queue. + +2 +00:00:03,000 --> 00:00:07,000 +This show was submitted in ${submitted_month} to cover occasions like this + +2 +00:00:07,000 --> 00:00:09,000 +where there are gaps in the schedule. +" > ${working_dir}/reserve.srt + +elif [ "${num_reserve_shows}" -ge "5" ] +then + feedback="You are listening to a show from the Reserve Queue. We have less than two weeks of backup shows available. Now would be a good time to consider submitting a show. This show was submitted in ${submitted_month} to cover occasions like this where there are gaps in the schedule." + echo "1 +00:00:00,000 --> 00:00:03,000 +You are listening to a show from the Reserve Queue. + +2 +00:00:03,000 --> 00:00:06,000 +We have less than two weeks of backup shows available. + +3 +00:00:06,000 --> 00:00:09,000 +Now would be a good time to consider submitting a show. + +4 +00:00:09,000 --> 00:00:14,000 +This show was submitted in ${submitted_month} to cover occasions like this + +5 +00:00:14,000 --> 00:00:15,000 +where there are gaps in the schedule. +" > ${working_dir}/reserve.srt + + +elif [ "${num_reserve_shows}" -ge "1" ] +then + feedback="You are listening to a show from the Reserve Queue. We have very few shows left to cover occasions like this where there are gaps in the schedule. This is a community project that needs listeners to contribute shows in order to survive. Once all shows are posted we will shut down the project, so if you want Hacker Public Radio to continue then record a show. This show was submitted in ${submitted_month}." + echo "1 +00:00:00,000 --> 00:00:03,000 +You are listening to a show from the Reserve Queue. + +2 +00:00:03,000 --> 00:00:06,000 +We have very few shows left to cover occasions like this + +3 +00:00:06,000 --> 00:00:08,000 +where there are gaps in the schedule + +4 +00:00:08,000 --> 00:00:12,000 +This is a community project that needs listeners to contribute shows in order to survive + +5 +00:00:12,000 --> 00:00:15,000 +Once all shows are posted we will shut down the project + +6 +00:00:15,000 --> 00:00:19,000 +So if you want Hacker Public Radio to continue then record a show. + +7 +00:00:19,000 --> 00:00:22,000 +This show was submitted in ${submitted_month}. +" > ${working_dir}/reserve.srt + +else + feedback="Thank you for listening to Hacker Public Radio. We are shutting down the project. So long, and thanks for all the fish." + + echo "1 +00:00:00,000 --> 00:00:03,000 +Thank you for listening to Hacker Public Radio. + +2 +00:00:03,000 --> 00:00:05,000 +We are shutting down the project + +3 +00:00:05,000 --> 00:00:06,000 +So long, and thanks for all the fish. +" > ${working_dir}/reserve.srt +fi + +echo "${feedback}" | "${piper_bin}" --model "${piper_voice}" --output_file ${working_dir}/reserve.flac + +if [ ! -s "${working_dir}/reserve.flac" ] +then + echo "Cannot find \"${working_dir}/reserve.flac\"" + exit +fi + +itsoffset_intro="$( mediainfo --full --Output=JSON ${working_dir}/reserve.flac | jq --raw-output '.media.track | .[] | select(."@type"=="Audio") | .Duration' | awk -F '.' '{print $1}' )" + +if [[ -z "${itsoffset_intro}" || "${itsoffset_intro}" == "null" ]] +then + echo_error "Could not retrieve the itsoffset_intro to correct the timing of the subtitles." +fi + +episode_body_srt="${working_dir}/episode_body.srt" +ffmpeg -hide_banner -loglevel error -y -itsoffset "${itsoffset_intro}" -i "${media_srt}" -c copy "${episode_body_srt}" + +itsoffset_intro_reserved="$( grep --max-count 1 ' --> ' "${episode_body_srt}" | awk '{print $1}' )" + +mv -v "${media_srt}" "${media_srt}.orig" + +cat "${working_dir}/reserve.srt" "${episode_body_srt}" > "${media_srt}" + +count=1 +cat "${media_srt}" | while read this_line +do + if [ "$( echo "${this_line}" | grep --count --perl-regexp '^[0-9]+$' )" -eq "1" ] + then + echo "${count}" + count=$((count+1)) + else + echo "${this_line}" + fi +done | sponge "${media_srt}" + +jq 'del(.episode.Show_Notes, .metadata.Host_IP)' ${working_dir}/shownotes.json + +jq --raw-output '.episode.Show_Notes' ${working_dir}/shownotes.json > ${working_dir}/shownotes.html + +kate ${working_dir}/shownotes.html "${media_txt}" "${media_srt}" +librewolf ${working_dir}/shownotes.html + +f ${working_dir} + + +echo "cd ${working_dir}" +echo "EDIT show in audacity" +echo "RENAME srt to new export name" +echo "SUBMIT show as host" +audacity "${working_dir}/reserve.flac" +echo "" +echo "cd" +echo "mv -v ${working_dir} ${dest_dir}/done/" +echo "ssh hpr \"rm -rvf /docker/users/hpr/hub.hackerpublicradio.org/reserve/$(basename ${working_dir} )\"" +echo "ssh hpr \"/docker/users/hpr/userfiles/bin/rename-reserve.bash\"" +xdg-open https://whp01.cloud-hosting.io:8443/phpMyAdmin/index.php +echo "DELETE FROM reservations WHERE reservations.key = '$( basename ${working_dir} | awk -F '_' '{print $3}' )';" +