""" 유튜브 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()