]>
jfr.im git - yt-dlp.git/blob - yt_dlp/extractor/popcorntv.py
1 from .common
import InfoExtractor
9 class PopcornTVIE(InfoExtractor
):
10 _VALID_URL
= r
'https?://[^/]+\.popcorntv\.it/guarda/(?P<display_id>[^/]+)/(?P<id>\d+)'
12 'url': 'https://animemanga.popcorntv.it/guarda/food-wars-battaglie-culinarie-episodio-01/9183',
13 'md5': '47d65a48d147caf692ab8562fe630b45',
16 'display_id': 'food-wars-battaglie-culinarie-episodio-01',
18 'title': 'Food Wars, Battaglie Culinarie | Episodio 01',
19 'description': 'md5:b8bea378faae4651d3b34c6e112463d0',
20 'thumbnail': r
're:^https?://.*\.jpg$',
21 'timestamp': 1497610857,
22 'upload_date': '20170616',
27 'url': 'https://cinema.popcorntv.it/guarda/smash-cut/10433',
28 'only_matching': True,
31 def _real_extract(self
, url
):
32 mobj
= self
._match
_valid
_url
(url
)
33 display_id
, video_id
= mobj
.group('display_id', 'id')
35 webpage
= self
._download
_webpage
(url
, display_id
)
37 m3u8_url
= extract_attributes(
39 r
'(<link[^>]+itemprop=["\'](?
:content|embed
)Url
[^
>]*>)',
43 formats = self._extract_m3u8_formats(
44 m3u8_url, display_id, 'mp4
', entry_protocol='m3u8_native
',
47 title = self._search_regex(
48 r'<h1
[^
>]+itemprop
=["\']name[^>]*>([^<]+)', webpage,
49 'title', default=None) or self._og_search_title(webpage)
51 description = self._html_search_regex(
52 r'(?s)<article[^>]+itemprop=["\']description
[^
>]*>(.+?
)</article
>',
53 webpage, 'description
', fatal=False)
54 thumbnail = self._og_search_thumbnail(webpage)
55 timestamp = unified_timestamp(self._html_search_meta(
56 'uploadDate
', webpage, 'timestamp
'))
57 duration = int_or_none(self._html_search_meta(
58 'duration
', webpage), invscale=60)
59 view_count = int_or_none(self._html_search_meta(
60 'interactionCount
', webpage, 'view count
'))
64 'display_id
': display_id,
66 'description
': description,
67 'thumbnail
': thumbnail,
68 'timestamp
': timestamp,
70 'view_count
': view_count,