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) 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'])