mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-02 09:12:40 +01:00
[bliptv] Convert to new subtitles system
This commit is contained in:
parent
bd7fe0cf66
commit
85920dd01d
@ -200,13 +200,11 @@ class TestBlipTVSubtitles(BaseTestSubtitles):
|
|||||||
IE = BlipTVIE
|
IE = BlipTVIE
|
||||||
|
|
||||||
def test_list_subtitles(self):
|
def test_list_subtitles(self):
|
||||||
self.DL.expect_warning('Automatic Captions not supported by this server')
|
|
||||||
self.DL.params['listsubtitles'] = True
|
self.DL.params['listsubtitles'] = True
|
||||||
info_dict = self.getInfoDict()
|
info_dict = self.getInfoDict()
|
||||||
self.assertEqual(info_dict, None)
|
self.assertEqual(info_dict, None)
|
||||||
|
|
||||||
def test_allsubtitles(self):
|
def test_allsubtitles(self):
|
||||||
self.DL.expect_warning('Automatic Captions not supported by this server')
|
|
||||||
self.DL.params['writesubtitles'] = True
|
self.DL.params['writesubtitles'] = True
|
||||||
self.DL.params['allsubtitles'] = True
|
self.DL.params['allsubtitles'] = True
|
||||||
subtitles = self.getSubtitles()
|
subtitles = self.getSubtitles()
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from .subtitles import SubtitlesInfoExtractor
|
|
||||||
|
|
||||||
from ..compat import (
|
from ..compat import (
|
||||||
compat_str,
|
compat_str,
|
||||||
@ -18,7 +17,7 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class BlipTVIE(SubtitlesInfoExtractor):
|
class BlipTVIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:\w+\.)?blip\.tv/(?:(?:.+-|rss/flash/)(?P<id>\d+)|((?:play/|api\.swf#)(?P<lookup_id>[\da-zA-Z+_]+)))'
|
_VALID_URL = r'https?://(?:\w+\.)?blip\.tv/(?:(?:.+-|rss/flash/)(?P<id>\d+)|((?:play/|api\.swf#)(?P<lookup_id>[\da-zA-Z+_]+)))'
|
||||||
|
|
||||||
_TESTS = [
|
_TESTS = [
|
||||||
@ -143,7 +142,7 @@ def itunes(s):
|
|||||||
categories = [category.text for category in item.findall('category')]
|
categories = [category.text for category in item.findall('category')]
|
||||||
|
|
||||||
formats = []
|
formats = []
|
||||||
subtitles = {}
|
subtitles_urls = {}
|
||||||
|
|
||||||
media_group = item.find(media('group'))
|
media_group = item.find(media('group'))
|
||||||
for media_content in media_group.findall(media('content')):
|
for media_content in media_group.findall(media('content')):
|
||||||
@ -161,7 +160,7 @@ def itunes(s):
|
|||||||
}
|
}
|
||||||
lang = role.rpartition('-')[-1].strip().lower()
|
lang = role.rpartition('-')[-1].strip().lower()
|
||||||
langcode = LANGS.get(lang, lang)
|
langcode = LANGS.get(lang, lang)
|
||||||
subtitles[langcode] = url
|
subtitles_urls[langcode] = url
|
||||||
elif media_type.startswith('video/'):
|
elif media_type.startswith('video/'):
|
||||||
formats.append({
|
formats.append({
|
||||||
'url': real_url,
|
'url': real_url,
|
||||||
@ -175,11 +174,7 @@ def itunes(s):
|
|||||||
})
|
})
|
||||||
self._sort_formats(formats)
|
self._sort_formats(formats)
|
||||||
|
|
||||||
# subtitles
|
subtitles = self.extract_subtitles(video_id, subtitles_urls)
|
||||||
video_subtitles = self.extract_subtitles(video_id, subtitles)
|
|
||||||
if self._downloader.params.get('listsubtitles', False):
|
|
||||||
self._list_available_subtitles(video_id, subtitles)
|
|
||||||
return
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
@ -192,15 +187,22 @@ def itunes(s):
|
|||||||
'thumbnail': thumbnail,
|
'thumbnail': thumbnail,
|
||||||
'categories': categories,
|
'categories': categories,
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
'subtitles': video_subtitles,
|
'subtitles': subtitles,
|
||||||
}
|
}
|
||||||
|
|
||||||
def _download_subtitle_url(self, sub_lang, url):
|
def _get_subtitles(self, video_id, subtitles_urls):
|
||||||
|
subtitles = {}
|
||||||
|
for lang, url in subtitles_urls.items():
|
||||||
# For some weird reason, blip.tv serves a video instead of subtitles
|
# For some weird reason, blip.tv serves a video instead of subtitles
|
||||||
# when we request with a common UA
|
# when we request with a common UA
|
||||||
req = compat_urllib_request.Request(url)
|
req = compat_urllib_request.Request(url)
|
||||||
req.add_header('User-Agent', 'youtube-dl')
|
req.add_header('User-Agent', 'youtube-dl')
|
||||||
return self._download_webpage(req, None, note=False)
|
subtitles[lang] = [{
|
||||||
|
# The extension is 'srt' but it's actually an 'ass' file
|
||||||
|
'ext': 'ass',
|
||||||
|
'data': self._download_webpage(req, None, note=False),
|
||||||
|
}]
|
||||||
|
return subtitles
|
||||||
|
|
||||||
|
|
||||||
class BlipTVUserIE(InfoExtractor):
|
class BlipTVUserIE(InfoExtractor):
|
||||||
|
Loading…
Reference in New Issue
Block a user