1 from .common
import InfoExtractor
9 class EUScreenIE(InfoExtractor
):
10 _VALID_URL
= r
'https?://(?:www\.)?euscreen\.eu/item.html\?id=(?P<id>[^&?$/]+)'
13 'url': 'https://euscreen.eu/item.html?id=EUS_0EBCBF356BFC4E12A014023BA41BD98C',
15 'id': 'EUS_0EBCBF356BFC4E12A014023BA41BD98C',
17 'title': "L'effondrement du stade du Heysel",
18 'alt_title': 'Collapse of the Heysel Stadium',
20 'description': 'md5:f0ffffdfce6821139357a1b8359d6152',
21 'series': 'JA2 DERNIERE',
23 'uploader': 'INA / France',
24 'thumbnail': 'http://images3.noterik.com/domain/euscreenxl/user/eu_ina/video/EUS_0EBCBF356BFC4E12A014023BA41BD98C/image.jpg'
26 'params': {'skip_download': True}
29 _payload
= b
'<fsxml><screen><properties><screenId>-1</screenId></properties><capabilities id="1"><properties><platform>Win32</platform><appcodename>Mozilla</appcodename><appname>Netscape</appname><appversion>5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36</appversion><useragent>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36</useragent><cookiesenabled>true</cookiesenabled><screenwidth>784</screenwidth><screenheight>758</screenheight><orientation>undefined</orientation><smt_browserid>Sat, 07 Oct 2021 08:56:50 GMT</smt_browserid><smt_sessionid>1633769810758</smt_sessionid></properties></capabilities></screen></fsxml>'
31 def _real_extract(self
, url
):
32 id = self
._match
_id
(url
)
33 args_for_js_request
= self
._download
_webpage
(
34 'https://euscreen.eu/lou/LouServlet/domain/euscreenxl/html5application/euscreenxlitem',
35 id, data
=self
._payload
, query
={'actionlist': 'itempage', 'id': id}
)
36 info_js
= self
._download
_webpage
(
37 'https://euscreen.eu/lou/LouServlet/domain/euscreenxl/html5application/euscreenxlitem',
38 id, data
=args_for_js_request
.replace('screenid', 'screenId').encode())
39 video_json
= self
._parse
_json
(
40 self
._search
_regex
(r
'setVideo\(({.+})\)\(\$end\$\)put', info_js
, 'Video JSON'),
41 id, transform_source
=js_to_json
)
42 meta_json
= self
._parse
_json
(
43 self
._search
_regex
(r
'setData\(({.+})\)\(\$end\$\)', info_js
, 'Metadata JSON'),
44 id, transform_source
=js_to_json
)
47 } for source
in video_json
.get('sources', [])]
48 self
._sort
_formats
(formats
)
52 'title': meta_json
.get('originalTitle'),
53 'alt_title': meta_json
.get('title'),
54 'duration': parse_duration(meta_json
.get('duration')),
55 'description': '%s\n%s' % (meta_json
.get('summaryOriginal', ''), meta_json
.get('summaryEnglish', '')),
56 'series': meta_json
.get('series') or meta_json
.get('seriesEnglish'),
57 'episode': meta_json
.get('episodeNumber'),
58 'uploader': meta_json
.get('provider'),
59 'thumbnail': meta_json
.get('screenshot') or video_json
.get('screenshot'),