File size: 4,609 Bytes
a54527e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import google.generativeai as genai
import time


def extract_catchphrase(video_path: str):
    # Set your API key
    genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))

    # Load the model (Gemini 1.5 Flash is currently accessible via the multimodal endpoint)
    model = genai.GenerativeModel(model_name="models/gemini-2.5-flash")

    # Upload video as a part of a multi-turn prompt
    upload_response = genai.upload_file(path=video_path, mime_type="video/mp4")
    
    file_id = upload_response.name
    while True:
        status = genai.get_file(file_id)
        if status.state == 2:
            break
        print(f"Waiting for file to become ACTIVE... Current state: {status.state}")
        time.sleep(1)

    prompt = '''
**Role:** You are an expert sports commentary analyst with a keen ear for identifying impactful and memorable short phrases ("catchphrases") that describe a race's outcome or a competitor's performance, particularly at the moment of or immediately following a win.

**Task:**
Analyze the provided race video's audio commentary (or a provided transcript) and extract a list of significant 2-3 word catchphrases that highlight key aspects of the win or the winner's achievement.

**Inputs:**
1.  **Race Video/Audio:** The video will be provided in the prompt and the audio track will be present in the video.
    *OR*
2.  **Commentary Transcript:** [User will provide a text transcript of the race commentary.]
3.  **(Optional) Approximate Timestamp of Win:** [User may provide an approximate time for when the win occurs to help you focus your search, e.g., "around the 2:15 mark"].

**Process & Reasoning (Think Step-by-Step):**

1.  **Transcribe (if necessary):** If audio is provided, accurately transcribe the commentary.
2.  **Identify Key Moments:** Listen for/read through the commentary, paying close attention to:
    *   The period leading up to the finish line.
    *   The moment the winner crosses the finish line.
    *   The immediate aftermath of the win.
3.  **Filter for "Winning" Context:** Focus on segments of commentary that directly describe the act of winning, the winner, or the nature of their victory.
4.  **Define "Significant Catchphrase":** Look for phrases that are:
    *   **Concise:** Ideally 2-3 words in length.
    *   **Impactful/Descriptive:** Use strong adjectives or highlight a notable achievement (e.g., "debut," "first," "commanding," "dominant," "incredible," "historic").
    *   **Memorable/Quotable:** Sound like a good "soundbite" from the race.
    *   **Unique or Emphatic:** Stand out from more generic commentary.
5.  **Examples of Desired Catchphrases:**
    *   "Debut winner!"
    *   "First win for him!"
    *   "Commanding win!"
    *   "Dominant performance!"
    *   "Simply unstoppable!"
    *   "Picture perfect!"
    *   "Record breaking!"
6.  **Examples of Phrases to AVOID (too generic or not catchphrases):**
    *   "Crosses the line"
    *   "Good race"
    *   "He is the winner" (unless part of a more emphatic phrase like "And he is the winner, by a mile!")
    *   "And the crowd goes wild"
    *   "Impressive"
    *   "Away he goes"
    *   Anything related to the way the race was won, about the distance to the second place
    *   Simple name mentions without descriptive context.
7.  **Extract and Timestamp:** For each identified catchphrase, provide the phrase itself and the approximate timestamp (HH:MM:SS or MM:SS) of when it was spoken in the commentary.
8.  **Prioritize & Limit:** If many potential phrases are found, prioritize the most impactful and descriptive ones. Aim to provide the top 3-5 distinct catchphrases unless otherwise specified.

**Output Requirements:**

*   A numbered list of the extracted catchphrases.
*   Each item in the list should be in the format: `"Catchphrase" - Timestamp (e.g., MM:SS)`

**Example Output:**
"Debut winner!" - 02:31
"Commanding performance!" - 02:33
"Absolutely dominant!" - 02:35


**Important Considerations for the AI:**
*   **Commentary Style:** Some commentators are more prone to catchphrases than others. If the commentary is very straightforward, fewer distinct catchphrases might be available.
*   **Accuracy:** Strive for accurate transcription and phrase extraction.
*   **Context is Key:** Ensure the phrase is genuinely related to the significance of the win and not just a general comment.

'''
    
    # Use the uploaded video in a prompt
    prompt_parts = [
        prompt,
        upload_response  # This is a File object
    ]

    response = model.generate_content(prompt_parts)

    return response.text