#!/bin/bash

set -e

# -------- CONFIG --------
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
AUDIO_DIR="$SCRIPT_DIR"
RSS_DIR="$SCRIPT_DIR/../rss"
RSS_FILE="$RSS_DIR/sweet_liberty.xml"
TMP_DIR="$SCRIPT_DIR/tmp_rss_items"

BASE_URL="https://download.alanwattarchive.net/Sweet_Liberty/audio"
SHOW_TITLE="Sweet Liberty"
AUTHOR="Alan Watt"

# -------- SETUP --------
mkdir -p "$RSS_DIR" "$TMP_DIR"
rm -f "$TMP_DIR"/*

# -------- BUILD ITEMS --------
for f in "$AUDIO_DIR"/*.mp3; do
    fname=$(basename "$f")
    base="${fname%.mp3}"
    url="$BASE_URL/$fname"
    size=$(stat -c%s "$f")

    # Defaults
    timestamp=0
    pubdate="Sat, 01 Jan 2000 00:00:00 -0500"
    human_date="Unknown Date"
    season="0"

    # Date parsing (MMDDYY or MMDDYYYY)
    if [[ $base =~ ^([0-1][0-9])([0-3][0-9])([0-9]{2,4})$ ]]; then
        month=${BASH_REMATCH[1]}
        day=${BASH_REMATCH[2]}
        year=${BASH_REMATCH[3]}

        if [ ${#year} -eq 2 ]; then
            if [ "$year" -ge 50 ]; then
                year="19$year"
            else
                year="20$year"
            fi
        fi

        timestamp=$(date -d "$year-$month-$day" +"%s")
        pubdate=$(date -d "@$timestamp" +"%a, %d %b %Y 00:00:00 -0500")
        human_date=$(date -d "@$timestamp" +"%B %d, %Y")
        season="$year"
    fi

    # Duration (HH:MM:SS)
    duration=$(ffprobe -v error -show_entries format=duration \
        -of default=noprint_wrappers=1:nokey=1 "$f" | awk '{printf "%02d:%02d:%02d", int($1/3600), int($1%3600/60), int($1%60)}')

    title="$SHOW_TITLE – $human_date"
    desc="$SHOW_TITLE with $AUTHOR. Archival radio broadcast originally aired $human_date."

    tmpfile="$TMP_DIR/$timestamp-$fname.item"

    cat > "$tmpfile" <<EOL
<item>
<title>$title</title>
<enclosure url="$url" length="$size" type="audio/mpeg"/>
<guid>$url</guid>
<pubDate>$pubdate</pubDate>
<description><![CDATA[$desc]]></description>
<itunes:summary><![CDATA[$desc]]></itunes:summary>
<itunes:duration>$duration</itunes:duration>
<itunes:season>$season</itunes:season>
</item>
EOL
done

# -------- START RSS --------
cat > "$RSS_FILE" <<EOL
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
     xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
     xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>$SHOW_TITLE Archive</title>
<link>https://download.alanwattarchive.net</link>
<description>Archival Sweet Liberty radio broadcasts with Alan Watt.</description>
<language>en-us</language>
<itunes:author>$AUTHOR</itunes:author>
<itunes:explicit>no</itunes:explicit>
<itunes:image href="https://download.alanwattarchive.net/logo.jpg"/>
<atom:link href="https://download.alanwattarchive.net/rss/sweet_liberty.xml" rel="self" type="application/rss+xml"/>
<ttl>120</ttl>
EOL

# -------- APPEND SORTED ITEMS + EPISODES --------
episode=1
for item in $(ls -1 "$TMP_DIR" | sort); do
    sed "/<\/item>/i \ \ <itunes:episode>$episode</itunes:episode>" \
        "$TMP_DIR/$item" >> "$RSS_FILE"
    episode=$((episode + 1))
done

# -------- CLOSE RSS --------
cat >> "$RSS_FILE" <<EOL
</channel>
</rss>
EOL

# -------- CLEANUP --------
rm -rf "$TMP_DIR"

echo "✅ Sweet Liberty RSS generated:"
echo "   $RSS_FILE"
