mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[bliptv] Convert to new subtitles system
This commit is contained in:
		| @@ -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 @@ from __future__ import unicode_literals | |||||||
| 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 @@ from ..utils import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| 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 @@ class BlipTVIE(SubtitlesInfoExtractor): | |||||||
|         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 @@ class BlipTVIE(SubtitlesInfoExtractor): | |||||||
|                 } |                 } | ||||||
|                 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 @@ class BlipTVIE(SubtitlesInfoExtractor): | |||||||
|                 }) |                 }) | ||||||
|         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 @@ class BlipTVIE(SubtitlesInfoExtractor): | |||||||
|             '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): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jaime Marquínez Ferrándiz
					Jaime Marquínez Ferrándiz