Spaces:
Sleeping
Sleeping
File size: 3,802 Bytes
3892784 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | """
์ ํ๋ธ URL์ ์
๋ ฅ๋ฐ์ ์ธ๊ทธ๋จผํธ ๋ถ๋ฆฌ ๋ฐ ์์ฝ์ ์ํํ๋ ํตํฉ ํ๋ก์ธ์
"""
import os
import sys
from pathlib import Path
# ๋ก์ปฌ ๋ชจ๋ import
from youtube_segmenter import process_youtube_video
from youtube_summarizer import summarize_youtube_segments
def main():
"""
๋ฉ์ธ ์คํ ํจ์
"""
print("=" * 80)
print("์ ํ๋ธ ์์ ๋ถ์ ํตํฉ ๋๊ตฌ")
print("=" * 80)
print()
# 1. ์ ํ๋ธ URL ์
๋ ฅ
youtube_url = input("์ ํ๋ธ URL์ ์
๋ ฅํ์ธ์ (ํ์): ").strip()
if not youtube_url:
print("์ค๋ฅ: URL์ด ์
๋ ฅ๋์ง ์์์ต๋๋ค.")
return
# 2. ์ฒ๋ฆฌ ๋ชจ๋ ์ ํ
print("\n์ฒ๋ฆฌ ๋ชจ๋๋ฅผ ์ ํํ์ธ์:")
print(" 1. ์ธ๊ทธ๋จผํธ ๋ถ๋ฆฌ๋ง")
print(" 2. ์ธ๊ทธ๋จผํธ ๋ถ๋ฆฌ + ์์ฝ ์์ฑ")
mode = input("์ ํ (1 ๋๋ 2, ๊ธฐ๋ณธ๊ฐ: 2): ").strip()
mode = mode if mode in ['1', '2'] else '2'
# 3. Penalty ๊ฐ ์
๋ ฅ
print("\n[์ ํ์ฌํญ] Penalty ๊ฐ ์ค์ ")
print(" - ๋์ฃผ์ ๋ถ๋ฆฌ ๋ฏผ๊ฐ๋ (์์์๋ก ๋ ๋ง์ ์ฃผ์ ๋ก ๋ถ๋ฆฌ)")
print(" - ๊ถ์ฅ: 3-7")
penalty_input = input("Penalty ๊ฐ (๊ธฐ๋ณธ๊ฐ: 5.0, ์ํฐ=๊ธฐ๋ณธ๊ฐ): ").strip()
penalty = float(penalty_input) if penalty_input else 5.0
# 4. Threshold ๊ฐ ์
๋ ฅ
print("\n[์ ํ์ฌํญ] Threshold ๊ฐ ์ค์ ")
print(" - ์์ฃผ์ ๋ถ๋ฆฌ ๋ฏผ๊ฐ๋")
print(" - 70-80: ์ธ๋ฐํ ๋ถ๋ฆฌ")
print(" - 85-92: ๊ท ํ์กํ ๋ถ๋ฆฌ (๊ถ์ฅ)")
print(" - 95-98: ํฐ ๋ฉ์ด๋ฆฌ๋ก ๋ถ๋ฆฌ")
threshold_input = input("Threshold ๊ฐ (๊ธฐ๋ณธ๊ฐ: 90, ์ํฐ=๊ธฐ๋ณธ๊ฐ): ").strip()
threshold = int(threshold_input) if threshold_input else 90
# 5. ์ถ๋ ฅ ํด๋ ์ค์
print("\n[์ ํ์ฌํญ] ๊ฒฐ๊ณผ ์ ์ฅ ํด๋")
output_dir = input("์ ์ฅ ํด๋ ๊ฒฝ๋ก (๊ธฐ๋ณธ๊ฐ: ํ์ฌ ํด๋, ์ํฐ=๊ธฐ๋ณธ๊ฐ): ").strip()
if not output_dir:
output_dir = "."
# ํด๋ ์์ฑ
output_path = Path(output_dir)
output_path.mkdir(parents=True, exist_ok=True)
print("\n" + "=" * 80)
print("์ฒ๋ฆฌ ์์")
print("=" * 80)
print(f"URL: {youtube_url}")
print(f"๋ชจ๋: {'์ธ๊ทธ๋จผํธ ๋ถ๋ฆฌ๋ง' if mode == '1' else '์ธ๊ทธ๋จผํธ ๋ถ๋ฆฌ + ์์ฝ'}")
print(f"Penalty: {penalty}")
print(f"Threshold: {threshold}")
print(f"์ถ๋ ฅ ํด๋: {output_path.absolute()}")
print("=" * 80)
print()
try:
# ๋จ๊ณ 1: ์ธ๊ทธ๋จผํธ ๋ถ๋ฆฌ
print("\n[๋จ๊ณ 1/2 ๋๋ 1/1] ์ ํ๋ธ ์์ ์ธ๊ทธ๋จผํธ ๋ถ๋ฆฌ ์ค...\n")
segment_file = process_youtube_video(
youtube_url,
penalty=penalty,
threshold=threshold,
output_dir=str(output_path)
)
print(f"\nโ ์ธ๊ทธ๋จผํธ ๋ถ๋ฆฌ ์๋ฃ: {segment_file}")
# ๋จ๊ณ 2: ์์ฝ (๋ชจ๋ 2์ธ ๊ฒฝ์ฐ)
if mode == '2':
print("\n[๋จ๊ณ 2/2] ์ธ๊ทธ๋จผํธ ์์ฝ ์์ฑ ์ค...\n")
# ์ถ๋ ฅ ํ์ผ๋ช
์ค์
segment_path = Path(segment_file)
summary_file = segment_path.parent / f"summary_{segment_path.name}"
summary_file = summarize_youtube_segments(
segment_file,
output_json_path=str(summary_file)
)
print(f"\nโ ์์ฝ ์์ฑ ์๋ฃ: {summary_file}")
# ์ต์ข
๊ฒฐ๊ณผ ์ถ๋ ฅ
print("\n" + "=" * 80)
print("์ฒ๋ฆฌ ์๋ฃ!")
print("=" * 80)
print(f"\n์์ฑ๋ ํ์ผ:")
print(f" 1. ์ธ๊ทธ๋จผํธ ํ์ผ: {segment_file}")
if mode == '2':
print(f" 2. ์์ฝ ํ์ผ: {summary_file}")
print()
except Exception as e:
print(f"\n์ค๋ฅ ๋ฐ์: {str(e)}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()
|