[tv2dk] Add extractor
[youtube-dl] / youtube_dl / extractor / tv2dk.py
1 # coding: utf-8
2 from __future__ import unicode_literals
3
4 import re
5
6 from .common import InfoExtractor
7 from ..utils import extract_attributes
8
9
10 class TV2DKIE(InfoExtractor):
11     _VALID_URL = r'''(?x)
12                     https?://
13                         (?:www\.)?
14                         (?:
15                             tvsyd|
16                             tv2ostjylland|
17                             tvmidtvest|
18                             tv2fyn|
19                             tv2east|
20                             tv2lorry|
21                             tv2nord
22                         )\.dk/
23                         (:[^/]+/)*
24                         (?P<id>[^/?\#&]+)
25                     '''
26     _TESTS = [{
27         'url': 'https://www.tvsyd.dk/nyheder/28-10-2019/1930/1930-28-okt-2019?autoplay=1#player',
28         'info_dict': {
29             'id': '0_52jmwa0p',
30             'ext': 'mp4',
31             'title': '19:30 - 28. okt. 2019',
32             'timestamp': 1572290248,
33             'upload_date': '20191028',
34             'uploader_id': 'tvsyd',
35             'duration': 1347,
36             'view_count': int,
37         },
38         'params': {
39             'skip_download': True,
40         },
41         'add_ie': ['Kaltura'],
42     }, {
43         'url': 'https://www.tv2ostjylland.dk/artikel/minister-gaar-ind-i-sag-om-diabetes-teknologi',
44         'only_matching': True,
45     }, {
46         'url': 'https://www.tv2ostjylland.dk/nyheder/28-10-2019/22/2200-nyhederne-mandag-d-28-oktober-2019?autoplay=1#player',
47         'only_matching': True,
48     }, {
49         'url': 'https://www.tvmidtvest.dk/nyheder/27-10-2019/1930/1930-27-okt-2019',
50         'only_matching': True,
51     }, {
52         'url': 'https://www.tv2fyn.dk/artikel/fyn-kan-faa-landets-foerste-fabrik-til-groent-jetbraendstof',
53         'only_matching': True,
54     }, {
55         'url': 'https://www.tv2east.dk/artikel/gods-faar-indleveret-tonsvis-af-aebler-100-kilo-aebler-gaar-til-en-aeblebrandy',
56         'only_matching': True,
57     }, {
58         'url': 'https://www.tv2lorry.dk/koebenhavn/rasmus-paludan-evakueret-til-egen-demonstration#player',
59         'only_matching': True,
60     }, {
61         'url': 'https://www.tv2nord.dk/artikel/dybt-uacceptabelt',
62         'only_matching': True,
63     }]
64
65     def _real_extract(self, url):
66         video_id = self._match_id(url)
67
68         webpage = self._download_webpage(url, video_id)
69
70         entries = []
71         for video_el in re.findall(r'(?s)<[^>]+\bdata-entryid\s*=[^>]*>', webpage):
72             video = extract_attributes(video_el)
73             kaltura_id = video.get('data-entryid')
74             if not kaltura_id:
75                 continue
76             partner_id = video.get('data-partnerid')
77             if not partner_id:
78                 continue
79             entries.append(self.url_result(
80                 'kaltura:%s:%s' % (partner_id, kaltura_id), 'Kaltura',
81                 video_id=kaltura_id))
82         return self.playlist_result(entries)