[karaoketv] Simplify (#3853)
[youtube-dl] / youtube_dl / extractor / karaoketv.py
1 # coding: utf-8
2 from __future__ import unicode_literals
3
4 from .common import InfoExtractor
5 from ..compat import compat_urllib_parse
6 from ..utils import (
7     ExtractorError,
8     js_to_json,
9 )
10
11
12 class KaraoketvIE(InfoExtractor):
13     _VALID_URL = r'http://karaoketv\.co\.il/\?container=songs&id=(?P<id>[0-9]+)'
14     _TEST = {
15         'url': 'http://karaoketv.co.il/?container=songs&id=171568',
16         'info_dict': {
17             'id': '171568',
18             'ext': 'mp4',
19             'title': 'אל העולם שלך - רותם כהן - שרים קריוקי',
20         }
21     }
22
23     def _real_extract(self, url):
24         video_id = self._match_id(url)
25         webpage = self._download_webpage(url, video_id)
26
27         page_video_url = self._og_search_video_url(webpage, video_id)
28         config_json = compat_urllib_parse.unquote_plus(self._search_regex(
29             r'config=(.*)', page_video_url, 'configuration'))
30
31         urls_info_json = self._download_json(
32             config_json, video_id, 'Downloading configuration',
33             transform_source=js_to_json)
34
35         url = urls_info_json['playlist'][0]['url']
36
37         return {
38             'id': video_id,
39             'title': self._og_search_title(webpage),
40             'url': url,
41         }