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"