mirror of https://github.com/yt-dlp/yt-dlp.git
[funimation] Extract subtitles (#434)
Closes #420, https://github.com/ytdl-org/youtube-dl/issues/25645 Related: https://github.com/ytdl-org/youtube-dl/pull/24906 Authored by: Mevious
This commit is contained in:
parent
9fc0de5796
commit
29f63c9672
|
@ -10,8 +10,9 @@ from ..utils import (
|
||||||
determine_ext,
|
determine_ext,
|
||||||
int_or_none,
|
int_or_none,
|
||||||
js_to_json,
|
js_to_json,
|
||||||
|
urlencode_postdata,
|
||||||
|
urljoin,
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
urlencode_postdata
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,6 +110,7 @@ class FunimationIE(InfoExtractor):
|
||||||
if series:
|
if series:
|
||||||
title = '%s - %s' % (series, title)
|
title = '%s - %s' % (series, title)
|
||||||
description = self._html_search_meta(['description', 'og:description'], webpage, fatal=True)
|
description = self._html_search_meta(['description', 'og:description'], webpage, fatal=True)
|
||||||
|
subtitles = self.extract_subtitles(url, video_id, display_id)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
headers = {}
|
headers = {}
|
||||||
|
@ -153,6 +155,24 @@ class FunimationIE(InfoExtractor):
|
||||||
'season_number': int_or_none(title_data.get('seasonNum') or _search_kane('season')),
|
'season_number': int_or_none(title_data.get('seasonNum') or _search_kane('season')),
|
||||||
'episode_number': int_or_none(title_data.get('episodeNum')),
|
'episode_number': int_or_none(title_data.get('episodeNum')),
|
||||||
'episode': episode,
|
'episode': episode,
|
||||||
|
'subtitles': subtitles,
|
||||||
'season_id': title_data.get('seriesId'),
|
'season_id': title_data.get('seriesId'),
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _get_subtitles(self, url, video_id, display_id):
|
||||||
|
player_url = urljoin(url, '/player/' + video_id)
|
||||||
|
player_page = self._download_webpage(player_url, display_id)
|
||||||
|
text_tracks_json_string = self._search_regex(
|
||||||
|
r'"textTracks": (\[{.+?}\])',
|
||||||
|
player_page, 'subtitles data', default='')
|
||||||
|
text_tracks = self._parse_json(
|
||||||
|
text_tracks_json_string, display_id, js_to_json, fatal=False) or []
|
||||||
|
subtitles = {}
|
||||||
|
for text_track in text_tracks:
|
||||||
|
url_element = {'url': text_track.get('src')}
|
||||||
|
language = text_track.get('language')
|
||||||
|
if text_track.get('type') == 'CC':
|
||||||
|
language += '_CC'
|
||||||
|
subtitles.setdefault(language, []).append(url_element)
|
||||||
|
return subtitles
|
||||||
|
|
Loading…
Reference in New Issue