#!/bin/bash
MASJID="your-masjid-slug"
SECRET="your-stream-key"
SITE="https://broadcast.azaanbox.com"
DEVICE=":1"
TMPDIR="/tmp/masjid-stream"

mkdir -p "$TMPDIR"

upload() {
    local filename
    filename=$(basename "$1")
    curl -s -X PUT \
        "$SITE/server/hls/upload.php?masjid=$MASJID&f=$filename&key=$SECRET" \
        --data-binary @"$1" > /dev/null
}

while true; do
    declare -A uploaded=()

    ffmpeg -f avfoundation -i "$DEVICE" \
        -c:a aac -b:a 32k -ar 22050 -ac 1 \
        -f hls \
        -hls_time 4 \
        -hls_list_size 10 \
        -hls_flags delete_segments \
        -hls_segment_filename "$TMPDIR/seg%03d.ts" \
        -hls_base_url "$SITE/server/hls/segments/$MASJID/" \
        "$TMPDIR/stream.m3u8" &

    FFMPEG_PID=$!

    while kill -0 $FFMPEG_PID 2>/dev/null; do
        for f in "$TMPDIR"/seg*.ts; do
            [[ -f "$f" ]] || continue
            key="${f}_$(stat -f%z "$f" 2>/dev/null)"
            if [[ -z "${uploaded[$key]}" ]]; then
                upload "$f"
                uploaded[$key]=1
            fi
        done
        [[ -f "$TMPDIR/stream.m3u8" ]] && upload "$TMPDIR/stream.m3u8"
        sleep 1
    done

    echo "Stream stopped. Restarting in 5s..."
    sleep 5
done
