Spaces:
Sleeping
Sleeping
| """ | |
| ์ ํ๋ธ 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() | |