Heebin Moon
Claude Opus 4.6
Initial commit: YouTube transcript formatter
a2749f3
Raw History Blame Contribute Delete
2.01 kB
#!/bin/bash
# YouTube Script Extractor ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ
DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$DIR"
# ์ฒซ ์‹คํ–‰: .env ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ž๋™ ์„ค์ •
if [ ! -f .env ]; then
echo "=== YouTube Script Extractor ์ดˆ๊ธฐ ์„ค์ • ==="
echo ""
read -p "OpenAI API Key๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” (sk-...): " api_key
if [ -n "$api_key" ]; then
cat > .env << EOF
OPENAI_API_KEY=$api_key
DEFAULT_MODE=api
DEFAULT_MODEL=base
PORT=8000
EOF
echo ""
echo ".env ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
else
cp .env.example .env
echo ".env.example์„ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— .env ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•ด์ฃผ์„ธ์š”."
fi
echo ""
fi
# ffmpeg ์ฒดํฌ
if ! command -v ffmpeg &>/dev/null; then
echo "ffmpeg์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค..."
brew install ffmpeg || { echo "ffmpeg ์„ค์น˜ ์‹คํŒจ. 'brew install ffmpeg'์„ ์ง์ ‘ ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”."; exit 1; }
echo ""
fi
# Python ์˜์กด์„ฑ ์ฒดํฌ
if ! python3 -c "import yt_dlp" 2>/dev/null; then
echo "Python ์˜์กด์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค..."
python3 -m pip install -r requirements.txt || { echo "์„ค์น˜ ์‹คํŒจ. python3์™€ pip์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”."; exit 1; }
echo ""
fi
# ์‹คํ–‰ ๋ชจ๋“œ ์„ ํƒ
case "${1:-}" in
web|w)
echo "์›น ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค..."
python3 web.py
;;
"")
# URL ์—†์ด ์‹คํ–‰ํ•˜๋ฉด ์›น ์„œ๋ฒ„
echo "์›น ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค..."
python3 web.py
;;
http*|www.*)
# URL์ด ์ฃผ์–ด์ง€๋ฉด CLI ๋ชจ๋“œ
python3 cli.py "$@"
;;
*)
echo "์‚ฌ์šฉ๋ฒ•:"
echo " ./run ์›น ์„œ๋ฒ„ ์‹œ์ž‘"
echo " ./run web ์›น ์„œ๋ฒ„ ์‹œ์ž‘"
echo " ./run <YouTube URL> CLI๋กœ ์Šคํฌ๋ฆฝํŠธ ์ถ”์ถœ"
echo ""
echo "CLI ์˜ต์…˜:"
echo " ./run <URL> --mode local ๋กœ์ปฌ Whisper ์‚ฌ์šฉ"
echo " ./run <URL> --format srt SRT๋งŒ ์ƒ์„ฑ"
;;
esac