diff options
| author | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2015-02-18 20:37:16 +0100 | 
|---|---|---|
| committer | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2015-02-18 20:37:16 +0100 | 
| commit | 4f7cea6c5327fdda79877e34e630c478f0e5d4dd (patch) | |
| tree | 7c3b822c692916b4259388bb78a851f4f0fe7510 | |
| parent | afbdd3acc36130d1a717b3cacab69c0dfc716622 (diff) | |
[viki] Convert to new subtitles system
| -rw-r--r-- | test/test_subtitles.py | 13 | ||||
| -rw-r--r-- | youtube_dl/extractor/viki.py | 17 | 
2 files changed, 22 insertions, 8 deletions
diff --git a/test/test_subtitles.py b/test/test_subtitles.py index 4dbb50515..98d1afff4 100644 --- a/test/test_subtitles.py +++ b/test/test_subtitles.py @@ -23,6 +23,7 @@ from youtube_dl.extractor import (      ComedyCentralIE,      NRKTVIE,      RaiIE, +    VikiIE,  ) @@ -372,5 +373,17 @@ class TestRaiSubtitles(BaseTestSubtitles):          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__':      unittest.main() diff --git a/youtube_dl/extractor/viki.py b/youtube_dl/extractor/viki.py index 944901e14..6816dacb6 100644 --- a/youtube_dl/extractor/viki.py +++ b/youtube_dl/extractor/viki.py @@ -2,16 +2,17 @@ from __future__ import unicode_literals  import re +from ..compat import compat_urlparse  from ..utils import (      ExtractorError,      unescapeHTML,      unified_strdate,      US_RATINGS,  ) -from .subtitles import SubtitlesInfoExtractor +from .common import InfoExtractor -class VikiIE(SubtitlesInfoExtractor): +class VikiIE(InfoExtractor):      IE_NAME = 'viki'      _VALID_URL = r'^https?://(?:www\.)?viki\.com/videos/(?P<id>[0-9]+v)' @@ -69,9 +70,6 @@ class VikiIE(SubtitlesInfoExtractor):          # subtitles          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 {              'id': video_id, @@ -85,12 +83,15 @@ class VikiIE(SubtitlesInfoExtractor):              'upload_date': upload_date,          } -    def _get_available_subtitles(self, video_id, info_webpage): +    def _get_subtitles(self, video_id, info_webpage):          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)              m = re.search(r'/(?P<lang>[a-z]+)\.vtt', sturl)              if not m:                  continue -            res[m.group('lang')] = sturl +            res[m.group('lang')] = [{ +                'url': compat_urlparse.urljoin('http://www.viki.com', sturl), +                'ext': 'vtt', +            }]          return res  | 
