Spaces:
Running
Running
refactor: Optimize YouTube comment generation by reducing API calls and improving efficiency
Browse files- app/routes/commend/router.py +12 -20
app/routes/commend/router.py
CHANGED
|
@@ -153,17 +153,12 @@ async def get_video_info(request: GenerateCommentRequest):
|
|
| 153 |
async def generate_youtube_comment(request: GenerateCommentRequest):
|
| 154 |
"""
|
| 155 |
Generate an AI-powered comment for a YouTube video.
|
| 156 |
-
|
| 157 |
-
The comment is generated based on:
|
| 158 |
-
- Video title, description, and metadata
|
| 159 |
-
- Existing comments on the video
|
| 160 |
-
- Video transcript (if available)
|
| 161 |
-
- Selected language and style
|
| 162 |
"""
|
| 163 |
start_time = time.time()
|
| 164 |
video_id = extract_video_id(request.videoUrl)
|
| 165 |
|
| 166 |
-
# 1. Fetch video details
|
| 167 |
details, error = get_video_details(request.videoUrl)
|
| 168 |
if error:
|
| 169 |
logger.warning(f"Video details error: {error}")
|
|
@@ -172,26 +167,23 @@ async def generate_youtube_comment(request: GenerateCommentRequest):
|
|
| 172 |
detail=f"Could not fetch video details: {error}"
|
| 173 |
)
|
| 174 |
|
| 175 |
-
# 2.
|
| 176 |
-
|
| 177 |
-
channel_info, _ = get_channel_details(details['channelId'])
|
| 178 |
-
if channel_info:
|
| 179 |
-
details['subscriberCount'] = channel_info.get('subscriberCount')
|
| 180 |
|
| 181 |
-
# 3. Fetch
|
| 182 |
-
existing_comments, _ = get_video_comments(video_id, max_results=
|
| 183 |
|
| 184 |
-
# 4.
|
| 185 |
-
|
| 186 |
has_transcript = False
|
|
|
|
| 187 |
transcript_text, _ = get_video_transcript(video_id)
|
| 188 |
if transcript_text:
|
| 189 |
has_transcript = True
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
transcript_summary = summary
|
| 193 |
|
| 194 |
-
# 5. Generate comment
|
| 195 |
generated_text, gen_error = generate_comment(
|
| 196 |
video_details=details,
|
| 197 |
comment_style=request.commentStyle,
|
|
|
|
| 153 |
async def generate_youtube_comment(request: GenerateCommentRequest):
|
| 154 |
"""
|
| 155 |
Generate an AI-powered comment for a YouTube video.
|
| 156 |
+
Optimized for minimal API calls and token usage.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
"""
|
| 158 |
start_time = time.time()
|
| 159 |
video_id = extract_video_id(request.videoUrl)
|
| 160 |
|
| 161 |
+
# 1. Fetch video details (required)
|
| 162 |
details, error = get_video_details(request.videoUrl)
|
| 163 |
if error:
|
| 164 |
logger.warning(f"Video details error: {error}")
|
|
|
|
| 167 |
detail=f"Could not fetch video details: {error}"
|
| 168 |
)
|
| 169 |
|
| 170 |
+
# 2. Skip channel stats - not critical, saves 1 API call
|
| 171 |
+
# Channel name is already in video details
|
|
|
|
|
|
|
|
|
|
| 172 |
|
| 173 |
+
# 3. Fetch only top 5 comments (reduced from 10)
|
| 174 |
+
existing_comments, _ = get_video_comments(video_id, max_results=5)
|
| 175 |
|
| 176 |
+
# 4. Skip transcript summarization - saves 1 Gemini API call
|
| 177 |
+
# Use raw transcript snippet instead if available
|
| 178 |
has_transcript = False
|
| 179 |
+
transcript_summary = None
|
| 180 |
transcript_text, _ = get_video_transcript(video_id)
|
| 181 |
if transcript_text:
|
| 182 |
has_transcript = True
|
| 183 |
+
# Just take first 500 chars as context, no separate API call
|
| 184 |
+
transcript_summary = transcript_text[:500]
|
|
|
|
| 185 |
|
| 186 |
+
# 5. Generate comment (single Gemini call)
|
| 187 |
generated_text, gen_error = generate_comment(
|
| 188 |
video_details=details,
|
| 189 |
comment_style=request.commentStyle,
|