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()