mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-11-13 13:05:13 +00:00
[ie/GoogleDrive] Fix subtitles extraction (#14809)
Closes #14806 Authored by: seproDev
This commit is contained in:
@@ -4,6 +4,7 @@ from .common import InfoExtractor
|
|||||||
from ..utils import (
|
from ..utils import (
|
||||||
determine_ext,
|
determine_ext,
|
||||||
extract_attributes,
|
extract_attributes,
|
||||||
|
filter_dict,
|
||||||
get_element_by_class,
|
get_element_by_class,
|
||||||
get_element_html_by_id,
|
get_element_html_by_id,
|
||||||
int_or_none,
|
int_or_none,
|
||||||
@@ -60,6 +61,17 @@ class GoogleDriveIE(InfoExtractor):
|
|||||||
'duration': 9.999,
|
'duration': 9.999,
|
||||||
'thumbnail': r're:https://lh3\.googleusercontent\.com/drive-storage/',
|
'thumbnail': r're:https://lh3\.googleusercontent\.com/drive-storage/',
|
||||||
},
|
},
|
||||||
|
}, {
|
||||||
|
# Has subtitle track with kind 'asr'
|
||||||
|
'url': 'https://drive.google.com/file/d/1Prvv9-mtDDfN_gkJgtt1OFvIULK8c3Ev/view',
|
||||||
|
'md5': 'ccae12d07f18b5988900b2c8b92801fc',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '1Prvv9-mtDDfN_gkJgtt1OFvIULK8c3Ev',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'LEE NA GYUNG-3410-VOICE_MESSAGE.mp4',
|
||||||
|
'duration': 8.766,
|
||||||
|
'thumbnail': r're:https://lh3\.googleusercontent\.com/drive-storage/',
|
||||||
|
},
|
||||||
}, {
|
}, {
|
||||||
# video can't be watched anonymously due to view count limit reached,
|
# video can't be watched anonymously due to view count limit reached,
|
||||||
# but can be downloaded (see https://github.com/ytdl-org/youtube-dl/issues/14046)
|
# but can be downloaded (see https://github.com/ytdl-org/youtube-dl/issues/14046)
|
||||||
@@ -89,15 +101,16 @@ class GoogleDriveIE(InfoExtractor):
|
|||||||
yield 'https://drive.google.com/file/d/{}'.format(mobj.group('id'))
|
yield 'https://drive.google.com/file/d/{}'.format(mobj.group('id'))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _construct_subtitle_url(base_url, video_id, language, fmt):
|
def _construct_subtitle_url(base_url, video_id, language, fmt, kind):
|
||||||
return update_url_query(
|
return update_url_query(
|
||||||
base_url, {
|
base_url, filter_dict({
|
||||||
'hl': 'en-US',
|
'hl': 'en-US',
|
||||||
'v': video_id,
|
'v': video_id,
|
||||||
'type': 'track',
|
'type': 'track',
|
||||||
'lang': language,
|
'lang': language,
|
||||||
'fmt': fmt,
|
'fmt': fmt,
|
||||||
})
|
'kind': kind,
|
||||||
|
}))
|
||||||
|
|
||||||
def _get_subtitles(self, video_id, video_info):
|
def _get_subtitles(self, video_id, video_info):
|
||||||
subtitles = {}
|
subtitles = {}
|
||||||
@@ -116,7 +129,8 @@ class GoogleDriveIE(InfoExtractor):
|
|||||||
for track in traverse_obj(subtitle_data, (lambda _, v: v.tag == 'track' and v.get('lang_code'))):
|
for track in traverse_obj(subtitle_data, (lambda _, v: v.tag == 'track' and v.get('lang_code'))):
|
||||||
language = track.get('lang_code')
|
language = track.get('lang_code')
|
||||||
subtitles.setdefault(language, []).extend([{
|
subtitles.setdefault(language, []).extend([{
|
||||||
'url': self._construct_subtitle_url(timed_text_base_url, video_id, language, sub_fmt),
|
'url': self._construct_subtitle_url(
|
||||||
|
timed_text_base_url, video_id, language, sub_fmt, track.get('kind')),
|
||||||
'name': track.get('lang_original'),
|
'name': track.get('lang_original'),
|
||||||
'ext': sub_fmt,
|
'ext': sub_fmt,
|
||||||
} for sub_fmt in subtitle_formats])
|
} for sub_fmt in subtitle_formats])
|
||||||
|
|||||||
Reference in New Issue
Block a user