[Rte] Improve extractor
[youtube-dl] / youtube_dl / extractor / ynet.py
1 # coding: utf-8
2 from __future__ import unicode_literals
3
4 import re
5 import json
6
7 from .common import InfoExtractor
8 from ..utils import compat_urllib_parse
9
10
11 class YnetIE(InfoExtractor):
12     _VALID_URL = r'http://(?:.+?\.)?ynet\.co\.il/(?:.+?/)?0,7340,(?P<id>L(?:-[0-9]+)+),00\.html'
13     _TESTS = [
14         {
15             'url': 'http://hot.ynet.co.il/home/0,7340,L-11659-99244,00.html',
16             'md5': '4b29cb57c3dddd57642b3f051f535b07',
17             'info_dict': {
18                 'id': 'L-11659-99244',
19                 'ext': 'flv',
20                 'title': 'איש לא יודע מאיפה באנו',
21                 'thumbnail': 're:^https?://.*\.jpg',
22             }
23         }, {
24             'url': 'http://hot.ynet.co.il/home/0,7340,L-8859-84418,00.html',
25             'md5': '8194c2ea221e9a639cac96b6b0753dc5',
26             'info_dict': {
27                 'id': 'L-8859-84418',
28                 'ext': 'flv',
29                 'title': "צפו: הנשיקה הלוהטת של תורגי' ויוליה פלוטקין",
30                 'thumbnail': 're:^https?://.*\.jpg',
31             }
32         }
33     ]
34
35     def _real_extract(self, url):
36         video_id = self._match_id(url)
37         webpage = self._download_webpage(url, video_id)
38
39         content = compat_urllib_parse.unquote_plus(self._og_search_video_url(webpage))
40         config = json.loads(self._search_regex(r'config=({.+?})$', content, 'video config'))
41         f4m_url = config['clip']['url']
42         title = self._og_search_title(webpage)
43         m = re.search(r'ynet - HOT -- (["\']+)(?P<title>.+?)\1', title)
44         if m:
45             title = m.group('title')
46
47         return {
48             'id': video_id,
49             'title': title,
50             'formats': self._extract_f4m_formats(f4m_url, video_id),
51             'thumbnail': self._og_search_thumbnail(webpage),
52         }