Skip to main content

Script ./bin/meeting-stop

./bin/meeting-stop

#!/usr/bin/env bash
set -euo pipefail

SESSION="${1:-$(ls -d "$HOME/meetings/recordings/"* | tail -n1)}"

# Prozesse beenden
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

# Meta laden (ISO_STAMP, etc.)
META="$SESSION/meta.env"
if [[ -f "$META" ]]; then
  # shellcheck disable=SC1090
  source "$META"
fi

# Meeting-Namen abfragen
read -r -p "Meeting name (for filenames): " MEETING_NAME
MEETING_NAME="${MEETING_NAME:-meeting}"

# Slugify: klein, äöü->ae/oe/ue, ß->ss, spaces->_, dann auf safe chars reduzieren
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")"

# ISO-Stempel fallback, falls meta.env fehlt
ISO="${ISO_STAMP:-$(date +%Y-%m-%dT%H%M)}"

# Zielnamen
NEW_TRANSCRIPT="$SESSION/${ISO}_${SLUG}_transcript.txt"
NEW_AUDIO="$SESSION/${ISO}_${SLUG}_audio.wav"

# Umbenennen (nur wenn Dateien existieren)
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

echo "⏹ Stopped."
echo "📁 Session: $SESSION"
echo "🎧 Audio: ${NEW_AUDIO:-$SESSION/audio.wav}"
echo "📄 Transcript: ${NEW_TRANSCRIPT:-$SESSION/transcript.txt}"
echo "🧾 Meta: $META"