diff --git a/pafy/backend_internal.py b/pafy/backend_internal.py index 9ccdc28..a13c6d0 100644 --- a/pafy/backend_internal.py +++ b/pafy/backend_internal.py @@ -68,6 +68,7 @@ def _get_lst(key, default="unknown", dic=allinfo): self._keywords = _get_lst('keywords', "").split(',') self._bigthumb = _get_lst('iurlsd', "") self._bigthumbhd = _get_lst('iurlsdmaxres', "") + self._subtitles = {} # no subtitles with the internal backend self.ciphertag = _get_lst("use_cipher_signature") == "True" self.sm = _extract_smap(g.UEFSM, allinfo, True) self.asm = _extract_smap(g.AF, allinfo, True) diff --git a/pafy/backend_shared.py b/pafy/backend_shared.py index 6870759..c3f8d2d 100644 --- a/pafy/backend_shared.py +++ b/pafy/backend_shared.py @@ -325,6 +325,14 @@ def dislikes(self): return self._dislikes + @property + def subtitles(self): + """ The subtitles of the video. Returns dict. """ + if not self._subtitles: + self._fetch_basic() + + return self._subtitles + @property def mix(self): """ The playlist for the related YouTube mix. Returns a Playlist object. """ diff --git a/pafy/backend_youtube_dl.py b/pafy/backend_youtube_dl.py index d9a19a4..b4c8390 100644 --- a/pafy/backend_youtube_dl.py +++ b/pafy/backend_youtube_dl.py @@ -54,6 +54,7 @@ def _fetch_basic(self): self._username = self._ydl_info['uploader_id'] self._category = self._ydl_info['categories'][0] if self._ydl_info['categories'] else '' self._bestthumb = self._ydl_info['thumbnails'][0]['url'] + self._subtitles = self._ydl_info.get('subtitles', {}) self._bigthumb = g.urls['bigthumb'] % self.videoid self._bigthumbhd = g.urls['bigthumbhd'] % self.videoid self.expiry = time.time() + g.lifespan diff --git a/pafy/g.py b/pafy/g.py index 60def53..8cf19d7 100644 --- a/pafy/g.py +++ b/pafy/g.py @@ -27,7 +27,8 @@ opener = build_opener() opener.addheaders = [('User-Agent', user_agent)] cache = {} -def_ydl_opts = {'quiet': True, 'prefer_insecure': False, 'no_warnings': True} +def_ydl_opts = {'quiet': True, 'prefer_insecure': False, + 'no_warnings': True, "writesubtitles": True} # The following are specific to the internal backend UEFSM = 'url_encoded_fmt_stream_map'