]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/einthusan.py
3f6268637c87a55d658b59f8a7f65a1d22c000f0
2 from __future__
import unicode_literals
7 from .common
import InfoExtractor
15 get_elements_by_class
,
20 class EinthusanIE(InfoExtractor
):
21 _VALID_URL
= r
'https?://einthusan\.tv/movie/watch/(?P<id>[^/?#&]+)'
23 'url': 'https://einthusan.tv/movie/watch/9097/',
24 'md5': 'ff0f7f2065031b8a2cf13a933731c035',
28 'title': 'Ae Dil Hai Mushkil',
29 'description': 'md5:33ef934c82a671a94652a9b4e54d931b',
30 'thumbnail': r
're:^https?://.*\.jpg$',
33 'url': 'https://einthusan.tv/movie/watch/51MZ/?lang=hindi',
34 'only_matching': True,
37 # reversed from jsoncrypto.prototype.decrypt() in einthusan-PGMovieWatcher.js
38 def _decrypt(self
, encrypted_data
, video_id
):
39 return self
._parse
_json
(base64
.b64decode((
40 encrypted_data
[:10] + encrypted_data
[-1] + encrypted_data
[12:-1]
41 ).encode('ascii')).decode('utf-8'), video_id
)
43 def _real_extract(self
, url
):
44 video_id
= self
._match
_id
(url
)
46 webpage
= self
._download
_webpage
(url
, video_id
)
48 title
= self
._html
_search
_regex
(r
'<h3>([^<]+)</h3>', webpage
, 'title')
50 player_params
= extract_attributes(self
._search
_regex
(
51 r
'(<section[^>]+id="UIVideoPlayer"[^>]+>)', webpage
, 'player parameters'))
53 page_id
= self
._html
_search
_regex
(
54 '<html[^>]+data-pageid="([^"]+)"', webpage
, 'page ID')
55 video_data
= self
._download
_json
(
56 'https://einthusan.tv/ajax/movie/watch/%s/' % video_id
, video_id
,
57 data
=urlencode_postdata({
58 'xEvent': 'UIVideoPlayer.PingOutcome',
60 'EJOutcomes': player_params
['data-ejpingables'],
65 'gorilla.csrf.Token': page_id
,
68 if isinstance(video_data
, compat_str
) and video_data
.startswith('/ratelimited/'):
70 'Download rate reached. Please try again later.', expected
=True)
72 ej_links
= self
._decrypt
(video_data
['EJLinks'], video_id
)
76 m3u8_url
= ej_links
.get('HLSLink')
78 formats
.extend(self
._extract
_m
3u8_formats
(
79 m3u8_url
, video_id
, ext
='mp4', entry_protocol
='m3u8_native'))
81 mp4_url
= ej_links
.get('MP4Link')
87 self
._sort
_formats
(formats
)
89 description
= get_elements_by_class('synopsis', webpage
)[0]
90 thumbnail
= self
._html
_search
_regex
(
91 r
'''<img[^>]+src=(["'])(?P<url>(?!\1).+?/moviecovers/(?!\1).+?)\1''',
92 webpage
, 'thumbnail url', fatal
=False, group
='url')
93 if thumbnail
is not None:
94 thumbnail
= compat_urlparse
.urljoin(url
, thumbnail
)
100 'thumbnail': thumbnail
,
101 'description': description
,