2 from .common
import InfoExtractor
3 from ..utils
import int_or_none
, parse_duration
, parse_iso8601
6 class NovaPlayIE(InfoExtractor
):
7 _VALID_URL
= r
'https://play.nova\.bg/video/.*/(?P<id>\d+)'
10 'url': 'https://play.nova.bg/video/bratya/season-3/bratq-2021-10-08/548677',
11 'md5': 'b1127a84e61bed1632b7c2ca9cbb4153',
16 'alt_title': 'bratya/season-3/bratq-2021-10-08',
18 'timestamp': 1633724150,
19 'upload_date': '20211008',
20 'thumbnail': 'https://nbg-img.fite.tv/img/548677_460x260.jpg',
21 'description': 'Сезон 3 Епизод 25'
25 'url': 'https://play.nova.bg/video/igri-na-volqta/season-3/igri-na-volqta-2021-09-20-1/548227',
26 'md5': '5fd61b8ecbe582fc021019d570965d58',
30 'title': 'Игри на волята: България (20.09.2021) - част 1',
31 'alt_title': 'gri-na-volqta/season-3/igri-na-volqta-2021-09-20-1',
33 'timestamp': 1632167564,
34 'upload_date': '20210920',
35 'thumbnail': 'https://nbg-img.fite.tv/img/548227_460x260.jpg',
36 'description': 'Сезон 3 Епизод 13'
41 def _real_extract(self
, url
):
42 video_id
= self
._match
_id
(url
)
43 webpage
= self
._download
_webpage
(url
, video_id
)
44 video_props
= self
._parse
_json
(self
._search
_regex
(
45 r
'<script\s?id=\"__NEXT_DATA__\"\s?type=\"application/json\">({.+})</script>',
46 webpage
, 'video_props'), video_id
)['props']['pageProps']['video']
47 m3u8_url
= self
._download
_json
(
48 f
'https://nbg-api.fite.tv/api/v2/videos/{video_id}/streams',
49 video_id
, headers
={'x-flipps-user-agent': 'Flipps/75/9.7'}
)[0]['url']
50 formats
= self
._extract
_m
3u8_formats
(m3u8_url
, video_id
, 'mp4', m3u8_id
='hls')
51 self
._sort
_formats
(formats
)
55 'title': video_props
['title'],
56 'alt_title': video_props
.get('slug'),
57 'thumbnail': self
._og
_search
_thumbnail
(webpage
),
58 'description': self
._og
_search
_description
(webpage
),
60 'duration': parse_duration(video_props
['duration']),
61 'timestamp': parse_iso8601(video_props
['published_at']),
62 'view_count': int_or_none(video_props
['view_count']),