#!/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}' )';"