mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[viki] Convert to new subtitles system
This commit is contained in:
		| @@ -23,6 +23,7 @@ from youtube_dl.extractor import ( | |||||||
|     ComedyCentralIE, |     ComedyCentralIE, | ||||||
|     NRKTVIE, |     NRKTVIE, | ||||||
|     RaiIE, |     RaiIE, | ||||||
|  |     VikiIE, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -372,5 +373,17 @@ class TestRaiSubtitles(BaseTestSubtitles): | |||||||
|         self.assertEqual(md5(subtitles['it']), 'b1d90a98755126b61e667567a1f6680a') |         self.assertEqual(md5(subtitles['it']), 'b1d90a98755126b61e667567a1f6680a') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestVikiSubtitles(BaseTestSubtitles): | ||||||
|  |     url = 'http://www.viki.com/videos/1060846v-punch-episode-18' | ||||||
|  |     IE = VikiIE | ||||||
|  |  | ||||||
|  |     def test_allsubtitles(self): | ||||||
|  |         self.DL.params['writesubtitles'] = True | ||||||
|  |         self.DL.params['allsubtitles'] = True | ||||||
|  |         subtitles = self.getSubtitles() | ||||||
|  |         self.assertEqual(set(subtitles.keys()), set(['en'])) | ||||||
|  |         self.assertEqual(md5(subtitles['en']), 'b0b781eeb45efd3f6398a925b259150b') | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|     unittest.main() |     unittest.main() | ||||||
|   | |||||||
| @@ -2,16 +2,17 @@ from __future__ import unicode_literals | |||||||
|  |  | ||||||
| import re | import re | ||||||
|  |  | ||||||
|  | from ..compat import compat_urlparse | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     ExtractorError, |     ExtractorError, | ||||||
|     unescapeHTML, |     unescapeHTML, | ||||||
|     unified_strdate, |     unified_strdate, | ||||||
|     US_RATINGS, |     US_RATINGS, | ||||||
| ) | ) | ||||||
| from .subtitles import SubtitlesInfoExtractor | from .common import InfoExtractor | ||||||
|  |  | ||||||
|  |  | ||||||
| class VikiIE(SubtitlesInfoExtractor): | class VikiIE(InfoExtractor): | ||||||
|     IE_NAME = 'viki' |     IE_NAME = 'viki' | ||||||
|  |  | ||||||
|     _VALID_URL = r'^https?://(?:www\.)?viki\.com/videos/(?P<id>[0-9]+v)' |     _VALID_URL = r'^https?://(?:www\.)?viki\.com/videos/(?P<id>[0-9]+v)' | ||||||
| @@ -69,9 +70,6 @@ class VikiIE(SubtitlesInfoExtractor): | |||||||
|  |  | ||||||
|         # subtitles |         # subtitles | ||||||
|         video_subtitles = self.extract_subtitles(video_id, info_webpage) |         video_subtitles = self.extract_subtitles(video_id, info_webpage) | ||||||
|         if self._downloader.params.get('listsubtitles', False): |  | ||||||
|             self._list_available_subtitles(video_id, info_webpage) |  | ||||||
|             return |  | ||||||
|  |  | ||||||
|         return { |         return { | ||||||
|             'id': video_id, |             'id': video_id, | ||||||
| @@ -85,12 +83,15 @@ class VikiIE(SubtitlesInfoExtractor): | |||||||
|             'upload_date': upload_date, |             'upload_date': upload_date, | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     def _get_available_subtitles(self, video_id, info_webpage): |     def _get_subtitles(self, video_id, info_webpage): | ||||||
|         res = {} |         res = {} | ||||||
|         for sturl_html in re.findall(r'<track src="([^"]+)"/>', info_webpage): |         for sturl_html in re.findall(r'<track src="([^"]+)"', info_webpage): | ||||||
|             sturl = unescapeHTML(sturl_html) |             sturl = unescapeHTML(sturl_html) | ||||||
|             m = re.search(r'/(?P<lang>[a-z]+)\.vtt', sturl) |             m = re.search(r'/(?P<lang>[a-z]+)\.vtt', sturl) | ||||||
|             if not m: |             if not m: | ||||||
|                 continue |                 continue | ||||||
|             res[m.group('lang')] = sturl |             res[m.group('lang')] = [{ | ||||||
|  |                 'url': compat_urlparse.urljoin('http://www.viki.com', sturl), | ||||||
|  |                 'ext': 'vtt', | ||||||
|  |             }] | ||||||
|         return res |         return res | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jaime Marquínez Ferrándiz
					Jaime Marquínez Ferrándiz