Sborole commited on
Commit
28535ba
·
verified ·
1 Parent(s): ae9196b

Update tools/YouTubeTool.py

Browse files
Files changed (1) hide show
  1. tools/YouTubeTool.py +19 -6
tools/YouTubeTool.py CHANGED
@@ -1,5 +1,6 @@
1
  from smolagents import Tool
2
- from youtube_transcript_api import YouTubeTranscriptApi
 
3
 
4
  class YouTubeTool(Tool):
5
  name = "youtube_reader"
@@ -8,10 +9,22 @@ class YouTubeTool(Tool):
8
  output_type = "string"
9
 
10
  def forward(self, video_url: str) -> str:
11
- video_id = video_url.split("v=")[-1] # basic extraction
12
  try:
13
- transcript = YouTubeTranscriptApi.get_transcript(video_id)
14
- return " ".join([t["text"] for t in transcript])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  except Exception as e:
16
- return f"Error fetching YouTube transcript: {e}"
17
-
 
1
  from smolagents import Tool
2
+ from youtube_transcript_api import YouTubeTranscriptApi, NoTranscriptFound, TranscriptsDisabled
3
+ import re
4
 
5
  class YouTubeTool(Tool):
6
  name = "youtube_reader"
 
9
  output_type = "string"
10
 
11
  def forward(self, video_url: str) -> str:
 
12
  try:
13
+ # Extract video ID
14
+ match = re.search(r"v=([A-Za-z0-9_-]{11})", video_url)
15
+ if not match:
16
+ return "Invalid YouTube URL."
17
+ video_id = match.group(1)
18
+
19
+ # Fetch transcript
20
+ transcript_list = YouTubeTranscriptApi.get_transcript(video_id)
21
+ transcript_text = " ".join([t["text"] for t in transcript_list])
22
+
23
+ return transcript_text
24
+
25
+ except NoTranscriptFound:
26
+ return "Transcript not available for this video."
27
+ except TranscriptsDisabled:
28
+ return "Transcripts are disabled for this video."
29
  except Exception as e:
30
+ return f"Error fetching transcript: {str(e)}"