Skip to main content

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

# ------------------------------------------------------------
# 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"