From 37eb68304477c2e2469b6d48de1ca340e56669a3 Mon Sep 17 00:00:00 2001 From: kaotisk Date: Sat, 9 Nov 2024 02:56:08 +0200 Subject: Updates - Image creation based on show's hash - Some style improvements - Previous list now shows the artist and title information instead of JSON - Script for appending an already existing playlist with a show --- append_latest_list.sh | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100755 append_latest_list.sh (limited to 'append_latest_list.sh') diff --git a/append_latest_list.sh b/append_latest_list.sh new file mode 100755 index 0000000..3b66d93 --- /dev/null +++ b/append_latest_list.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +if [ ! -f hashes/list ] +then + echo 'No list to append, use ./create_list.sh instead' + exit 1 +fi + +function get_latest_list(){ + cat ./hashes/list | jq -r '.latest_list' +} + +latest_list="$(get_latest_list)" + +echo "Latest list's hash: ${latest_list}" +latest_show_object="$(cat hashes/${latest_list} | jq -r '.list' | jq '.[-1:]')" +latest_index_number="$(echo ${latest_show_object} | jq -r '.[].index')" +latest_starts_on="$(echo ${latest_show_object} | jq -r '.[].starts_on')" +latest_duration="$(echo ${latest_show_object} | jq -r '.[].duration')" +list_started_on="$(cat hashes/${latest_list} | jq -r '.started_on')" +list_duration="$(cat hashes/${latest_list} | jq -r '.duration')" +already_in_list="$(mktemp)" +time_now="$(date -u +%s)000" +new_list_file="$(mktemp)" +new_list_started_on="$(($(($(($((${time_now} - ${list_started_on}))/${list_duration}))*${list_duration}))+${list_started_on}))" +new_shows="$(mktemp)" + +cat hashes/${latest_list} | jq -r '.list.[].hash' > ${already_in_list} + +find hashes -type f -size -4096 | sort | while read filepath +do + if [ "${filepath}" == "hashes/list" ] + then + continue + fi + cat "${filepath}" | jq > /dev/null 2>&1 + if [ $? -ne 0 ] + then + continue + fi + if [ "$(cat "${filepath}" | jq -r '.type')" == "show" ] + then + grep $(basename ${filepath}) ${already_in_list} > /dev/null + if [ $? -ne 0 ] + then + echo "New show found: ${filepath}" + echo "${filepath}" >> ${new_shows} + fi + fi +done +function make_new_list(){ + new_show_found="$(cat ${new_shows})" + new_show_hash="$(basename ${new_show_found})" + new_show_starts_on="$((${latest_duration}+${latest_starts_on}))" + new_show_duration="$(cat ${new_show_found}| jq -r '.duration')" + ( + echo -n '{' + echo -n '"type":"list",' + echo -n '"started_on":"'${new_list_started_on}'",' + echo -n '"list":' + echo -n '[' + cat hashes/${latest_list} | jq -r '.list.[]' | sed -e 's/}/},/g' | tr -d '\n' + echo -n '{' + echo -n '"hash":"'${new_show_hash}'",' + echo -n '"index":"'$((${latest_index_number}+1))'",' + echo -n '"starts_on":"'${new_show_starts_on}'",' + echo -n '"duration":"'${new_show_duration}'"' + echo -n '}' + echo -n '],' + echo -n '"duration":"'$((${new_show_duration}+${new_show_starts_on}))'"' + echo -n '}' + )| jq -c -M > ${new_list_file} + sha_live=$(sha512sum ${new_list_file}|cut -d ' ' -f 1) + cat ${new_list_file} | jq + if [ $? -ne 0 ] + then + echo "Corrupted list: ${new_list_file}" + exit 1 + fi + echo '{"latest_list":"'${sha_live}'"}' > ./hashes/list + mv ${new_list_file} ./hashes/${sha_live} + +} +case "$(cat ${new_shows}|wc -l)" in + 0) echo "no new shows";; + 1) make_new_list;; + *) echo "more than one shows...";break; +esac +rm ${new_shows} +rm ${already_in_list} +#cat hashes/${latest_list} | jq -r '.list.[]' | sed -e 's/}/},/g' +#cat hashes/${latest_list} | jq -- cgit v1.2.3