]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/njpwworld.py
   2 from __future__ 
import unicode_literals
 
   6 from .common 
import InfoExtractor
 
   7 from ..compat 
import compat_urlparse
 
  15 class NJPWWorldIE(InfoExtractor
): 
  16     _VALID_URL 
= r
'https?://njpwworld\.com/p/(?P<id>[a-z0-9_]+)' 
  17     IE_DESC 
= '新日本プロレスワールド' 
  18     _NETRC_MACHINE 
= 'njpwworld' 
  21         'url': 'http://njpwworld.com/p/s_series_00155_1_9/', 
  23             'id': 's_series_00155_1_9', 
  25             'title': '第9試合 ランディ・サベージ vs リック・スタイナー', 
  29             'skip_download': True,  # AES-encrypted m3u8 
  31         'skip': 'Requires login', 
  34     _LOGIN_URL 
= 'https://front.njpwworld.com/auth/login' 
  36     def _real_initialize(self
): 
  40         username
, password 
= self
._get
_login
_info
() 
  41         # No authentication to be performed 
  45         # Setup session (will set necessary cookies) 
  46         self
._request
_webpage
( 
  47             'https://njpwworld.com/', None, note
='Setting up session') 
  49         webpage
, urlh 
= self
._download
_webpage
_handle
( 
  50             self
._LOGIN
_URL
, None, 
  51             note
='Logging in', errnote
='Unable to login', 
  52             data
=urlencode_postdata({'login_id': username
, 'pw': password
}), 
  53             headers
={'Referer': 'https://front.njpwworld.com/auth'}) 
  54         # /auth/login will return 302 for successful logins 
  55         if urlh
.geturl() == self
._LOGIN
_URL
: 
  56             self
.report_warning('unable to login') 
  61     def _real_extract(self
, url
): 
  62         video_id 
= self
._match
_id
(url
) 
  64         webpage 
= self
._download
_webpage
(url
, video_id
) 
  67         for mobj 
in re
.finditer(r
'<a[^>]+\bhref=(["\'])/player
.+?
[^
>]*>', webpage): 
  68             player = extract_attributes(mobj.group(0)) 
  69             player_path = player.get('href
') 
  72             kind = self._search_regex( 
  73                 r'(low|high
)$
', player.get('class') or '', 'kind
', 
  75             player_url = compat_urlparse.urljoin(url, player_path) 
  76             player_page = self._download_webpage( 
  77                 player_url, video_id, note='Downloading player page
') 
  78             entries = self._parse_html5_media_entries( 
  79                 player_url, player_page, video_id, m3u8_id='hls
-%s' % kind, 
  80                 m3u8_entry_protocol='m3u8_native
') 
  81             kind_formats = entries[0]['formats
'] 
  82             for f in kind_formats: 
  83                 f['quality
'] = 2 if kind == 'high
' else 1 
  84             formats.extend(kind_formats) 
  86         self._sort_formats(formats) 
  88         post_content = get_element_by_class('post
-content
', webpage) 
  90             r'<li
[^
>]+class="tag-[^"]+"><a[^>]*>([^<]+)</a></li>', post_content 
  91         ) if post_content else None 
  95             'title': self._og_search_title(webpage),