#!/usr/bin/env bash ############################################################################################ # Update db source settings $1 git_dir="/home/ken/tmp/hpr/hpr_generator" if [ ! -d "${git_dir}/.git" ] then #git clone gitea@repo.anhonesthost.net:rho_n/hpr_generator.git "${git_dir}" git clone gitea@repo.anhonesthost.net:HPR/hpr_generator.git "${git_dir}" fi if [ ! -d "${git_dir}" ] then echo_error "The git dir \"${git_dir}\" is missing" fi cd "${git_dir}" git pull ssh hpr -t "ls -al /docker/users/hpr/userfiles/sql/hpr.sql;md5sum /docker/users/hpr/userfiles/sql/hpr.sql" ssh hpr -t "/docker/users/hpr/userfiles/sql/hpr_db_backup.bash" ssh hpr -t "ls -al /docker/users/hpr/userfiles/sql/hpr.sql;md5sum /docker/users/hpr/userfiles/sql/hpr.sql" #/home/ken/tmp/hpr/hpr_generator/utils/update-hpr-db.sh ./utils/update-hpr-db.sh if [ $? -ne 0 ] then echo 'Terminating...' >&2 exit 1 fi hpr_db="${git_dir}/hpr.db" if [[ ! -s "${hpr_db}" || -z "${hpr_db}" ]] then echo_error "The \"hpr_db\" variable/file is missing." fi if [ "$( file --brief --mime-type "${hpr_db}" | grep --count 'application/vnd.sqlite3' )" -ne "1" ] then echo_error "The \"hpr_db\" variable has not a valid \"application/vnd.sqlite3\" mime type." fi ############################################################################################ # Get previous show info row=$(sqlite3 hpr.db " SELECT notes FROM eps WHERE duration > 0 AND series = 47 ORDER BY date DESC LIMIT 1; ") eval $( echo "$row" | grep -o '' | sed -E 's//\1/' | tr ',' '\n' ) echo_debug "The last show month was for ${month}, latest_comment: ${latest_comment}, latest_host: ${latest_host}, and latest_episode: ${latest_episode}" ############################################################################################ # Get next show info this_month=$( \date --date="${month}-01 +1 month" +%Y-%m ) IFS='|' read -r eps_num eps_date <<< "$(sqlite3 hpr.db " SELECT id, date FROM eps WHERE duration = 0 AND series = 47 ORDER BY date ASC LIMIT 1; ")" echo_debug "This is going to be hpr${eps_num} for release on ${eps_date}" eps_dir="/home/ken/processing/x_${eps_num}_${eps_date}_x" if [ ! -d "${eps_dir}" ] then mkdir -vp "${eps_dir}" fi echo_debug "The episode dir is \"${eps_dir}\"" shownotes_html="${eps_dir}/shownotes.html" ############################################################################################ # Add New hosts to shownotes results=$(sqlite3 hpr.db "SELECT hostid, host FROM hosts WHERE hostid > ${latest_host};") echo "

New hosts

" | tee "${shownotes_html}" echo "

" | tee --append "${shownotes_html}" if [ -z "${results}" ] then echo "There were no new hosts this month." | tee --append "${shownotes_html}" newest_host="${latest_host}" else echo "Welcome to our new hosts:
" | tee --append "${shownotes_html}" echo "

" | tee --append "${shownotes_html}" fi echo "

" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" ############################################################################################ # Add Last Month's Shows to shownotes results=$(sqlite3 hpr.db " SELECT eps.id, hosts.host, eps.title, eps.date, eps.hostid FROM eps, hosts WHERE eps.id > ${latest_episode} AND eps.date LIKE \"${this_month}%\" AND eps.valid = 1 AND eps.hostid = hosts.hostid; ") echo "

Last Month's Shows

" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" # [%# The id 't01' is in the HPR CSS but might give trouble on the IA -%] echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" if [ -z "${results}" ] then echo_error "There were no shows found for this month." else while IFS="|" read -r eps_id host title eps_date hostid do printf -v hostid "%04d" "${hostid}" printf -v eps_id "%04d" "${eps_id}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" latest_episode=${eps_id} echo "" | tee --append "${shownotes_html}" done <<< "${results}" fi echo "
IdDayDateTitleHost
${eps_id}$( \date --date=${eps_date} +%a )${eps_date}${title}${host}
" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" ############################################################################################ # Add Comments to shownotes function render_comments() { results=${1} if [ -z "${results}" ] then echo_error "There were no comments found for this month." else this_comment="0" open_line="0" echo "" | tee --append "${shownotes_html}" fi open_line="1" this_comment="${comments_eps_id}" printf -v hosts_hostid "%04d" "${hosts_hostid}" printf -v comments_eps_id "%04d" "${comments_eps_id}" echo "
  • hpr${comments_eps_id} (${eps_date}) \"${eps_title}\" by ${hosts_host}.
  • " | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" fi } # ------------------------------------------- echo "

    Comments this month

    " | tee --append "${shownotes_html}" echo "" | tee --append "${shownotes_html}" echo "

    Past shows

    " | tee --append "${shownotes_html}" latest_comment_last_changed=$(sqlite3 hpr.db "SELECT last_changed FROM comments WHERE comments.id = ${latest_comment};") results=$(sqlite3 hpr.db " SELECT comments.id, comments.eps_id, eps.date, eps.title, hosts.host, hosts.hostid, comments.comment_author_name, comments.comment_timestamp, comments.comment_title FROM comments JOIN eps ON comments.eps_id = eps.id JOIN hosts ON eps.hostid = hosts.hostid WHERE comments.last_changed > \"${latest_comment_last_changed}\" AND eps.date <= \"${this_month}-01\" ORDER BY eps.date; ") render_comments "${results}" echo "

    This month's shows

    " | tee --append "${shownotes_html}" results=$(sqlite3 hpr.db " SELECT comments.id, comments.eps_id, eps.date, eps.title, hosts.host, hosts.hostid, comments.comment_author_name, comments.comment_timestamp, comments.comment_title FROM comments JOIN eps ON comments.eps_id = eps.id JOIN hosts ON eps.hostid = hosts.hostid WHERE eps.date LIKE \"${this_month}-%\" ORDER BY eps.date; ") render_comments "${results}" ############################################################################################ # Add maillist and cal to shownotes mailman_link="https://lists.hackerpublicradio.com/pipermail/hpr/$( \date -d"${month}-01 next month" +%Y-%B )/thread.html" echo "

    Mailing List discussions

    " | tee --append "${shownotes_html}" echo "

    Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mailing List which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under Mailman.

    The threaded discussions this month can be found here:

    ${mailman_link}

    Events Calendar

    With the kind permission of LWN.net we are linking to The LWN.net Community Calendar.

    Quoting the site:

    This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page.
    " | tee --append "${shownotes_html}" latest_comment=$(sqlite3 hpr.db "SELECT MAX(id) FROM comments;") echo "" | tee --append "${shownotes_html}" cp -v "${shownotes_html}" "${shownotes_html%.*}"_edited.html ls -al "${eps_dir}"