From 8577444d5b211d04c864ceadea2d905853be0d60 Mon Sep 17 00:00:00 2001 From: Ken Fallon Date: Sun, 5 Apr 2026 16:35:17 +0200 Subject: [PATCH] 2026-04-05_14-35-17Z_Sunday workarond script due to broken perl lib --- Community_News/recording_dates.dat | 1 + workflow/hpr-cn-generate-notes.bash | 280 ++++++++++++++++++++++++++++ 2 files changed, 281 insertions(+) create mode 100755 workflow/hpr-cn-generate-notes.bash diff --git a/Community_News/recording_dates.dat b/Community_News/recording_dates.dat index dad959a..2c877a3 100644 --- a/Community_News/recording_dates.dat +++ b/Community_News/recording_dates.dat @@ -44,3 +44,4 @@ 2026-02-01,2026-02-30 15:00:00 2026-03-01,2026-03-26 15:00:00 2026-04-01,2026-04-30 15:00:00 +2026-05-01,2026-05-29 15:00:00 \ No newline at end of file diff --git a/workflow/hpr-cn-generate-notes.bash b/workflow/hpr-cn-generate-notes.bash new file mode 100755 index 0000000..1b20ef4 --- /dev/null +++ b/workflow/hpr-cn-generate-notes.bash @@ -0,0 +1,280 @@ +#!/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}"