From bd8d8919b29404879c699f510d03cbfea422175e Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 29 Nov 2021 18:25:14 +0200 Subject: [PATCH 1/2] Raise `TranscriptsDisabled` if 'playerCaptionsTracklistRenderer' is not found (Fixes #136) --- youtube_transcript_api/_transcripts.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/youtube_transcript_api/_transcripts.py b/youtube_transcript_api/_transcripts.py index 8240420..d7fd5b3 100644 --- a/youtube_transcript_api/_transcripts.py +++ b/youtube_transcript_api/_transcripts.py @@ -60,7 +60,9 @@ class TranscriptListFetcher(object): captions_json = json.loads( splitted_html[1].split(',"videoDetails')[0].replace('\n', '') - )['playerCaptionsTracklistRenderer'] + ).get('playerCaptionsTracklistRenderer') + if captions_json is None: + raise TranscriptsDisabled(video_id) if 'captionTracks' not in captions_json: raise NoTranscriptAvailable(video_id) From b8dbc975497c60dded94d299ac966748598a8257 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 29 Nov 2021 18:40:01 +0200 Subject: [PATCH 2/2] Add additional test case for `TranscriptsDisabled` --- .../youtube_transcripts_disabled2.html.static | 91 +++++++++++++++++++ youtube_transcript_api/test/test_api.py | 8 ++ 2 files changed, 99 insertions(+) create mode 100644 youtube_transcript_api/test/assets/youtube_transcripts_disabled2.html.static diff --git a/youtube_transcript_api/test/assets/youtube_transcripts_disabled2.html.static b/youtube_transcript_api/test/assets/youtube_transcripts_disabled2.html.static new file mode 100644 index 0000000..de97cbc --- /dev/null +++ b/youtube_transcript_api/test/assets/youtube_transcripts_disabled2.html.static @@ -0,0 +1,91 @@ +Watch live Dow Jones feed: Markets plunge amid coronavirus fears, oil price war - YouTube
AboutPressCopyrightContact usCreatorsAdvertiseDevelopersTermsPrivacyPolicy & SafetyHow YouTube worksTest new features
\ No newline at end of file diff --git a/youtube_transcript_api/test/test_api.py b/youtube_transcript_api/test/test_api.py index 0cc7fc3..0d0cf8d 100644 --- a/youtube_transcript_api/test/test_api.py +++ b/youtube_transcript_api/test/test_api.py @@ -205,6 +205,14 @@ class TestYouTubeTranscriptApi(TestCase): with self.assertRaises(TranscriptsDisabled): YouTubeTranscriptApi.get_transcript('dsMFmonKDD4') + httpretty.register_uri( + httpretty.GET, + 'https://www.youtube.com/watch', + body=load_asset('youtube_transcripts_disabled2.html.static') + ) + with self.assertRaises(TranscriptsDisabled): + YouTubeTranscriptApi.get_transcript('Fjg5lYqvzUs') + def test_get_transcript__exception_if_language_unavailable(self): with self.assertRaises(NoTranscriptFound): YouTubeTranscriptApi.get_transcript('GJLlxj_dtq8', languages=['cz'])