Script meetings/bin/meeting-stop
./bin/meeting-stop
#!/usr/bin/env bash
set -euo pipefail
SESSION="${1:-$(ls -d "$HOME/meetings/recordings/"* | tail -n1)}"
META="$SESSION/meta.env"
# ------------------------------------------------------------
# Stop running processes
# ------------------------------------------------------------
if [[ -f "$SESSION/ffmpeg.pid" ]]; then
kill "$(cat "$SESSION/ffmpeg.pid")" 2>/dev/null || true
fi
if [[ -f "$SESSION/whisper.pid" ]]; then
kill "$(cat "$SESSION/whisper.pid")" 2>/dev/null || true
fi
# Remove current session pointer
rm -f "$CURRENT"
# ------------------------------------------------------------
# Load metadata (if available)
# ------------------------------------------------------------
if [[ -f "$META" ]]; then
# shellcheck disable=SC1090
source "$META"
fi
# ------------------------------------------------------------
# Clean up audio graph (optional but recommended)
# ------------------------------------------------------------
if [[ -n "${REMAPPED_MID:-}" ]]; then
pactl unload-module "$REMAPPED_MID" >/dev/null 2>&1 || true
fi
# ------------------------------------------------------------
# Ask for meeting name
# ------------------------------------------------------------
read -r -p "Meeting name (for filenames): " MEETING_NAME
MEETING_NAME="${MEETING_NAME:-meeting}"
# Slugify: lowercase, umlauts, spaces → _
slugify() {
local s="$1"
s="$(printf '%s' "$s" | tr '[:upper:]' '[:lower:]')"
s="$(printf '%s' "$s" | sed \
-e 's/ä/ae/g' -e 's/ö/oe/g' -e 's/ü/ue/g' -e 's/ß/ss/g' \
-e 's/[^a-z0-9 _-]/_/g' \
-e 's/[[:space:]]\+/_/g' \
-e 's/_\{2,\}/_/g' \
-e 's/^_//' -e 's/_$//')"
printf '%s' "$s"
}
SLUG="$(slugify "$MEETING_NAME")"
# ------------------------------------------------------------
# Final filenames
# ------------------------------------------------------------
ISO="${ISO_STAMP:-$(date +%Y-%m-%dT%H%M)}"
NEW_TRANSCRIPT="$SESSION/${ISO}_${SLUG}_transcript.txt"
NEW_AUDIO="$SESSION/${ISO}_${SLUG}_audio.wav"
if [[ -f "$SESSION/transcript.txt" ]]; then
mv -n "$SESSION/transcript.txt" "$NEW_TRANSCRIPT"
fi
if [[ -f "$SESSION/audio.wav" ]]; then
mv -n "$SESSION/audio.wav" "$NEW_AUDIO"
fi
CURRENT="$HOME/meetings/recordings/.current"
if [[ -f "$CURRENT" ]] && grep -qx "$SESSION" "$CURRENT"; then
rm -f "$CURRENT"
fi
# ------------------------------------------------------------
# Final output
# ------------------------------------------------------------
echo "⏹ Meeting stopped."
echo "📁 Session: $SESSION"
echo "🎧 Audio: ${NEW_AUDIO:-$SESSION/audio.wav}"
echo "📄 Transcript: ${NEW_TRANSCRIPT:-$SESSION/transcript.txt}"
echo "🧾 Meta: $META"