]>
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     def _real_initialize(self
): 
  38         username
, password 
= self
._get
_login
_info
() 
  39         # No authentication to be performed 
  43         webpage
, urlh 
= self
._download
_webpage
_handle
( 
  44             'https://njpwworld.com/auth/login', None, 
  45             note
='Logging in', errnote
='Unable to login', 
  46             data
=urlencode_postdata({'login_id': username
, 'pw': password
}), 
  47             headers
={'Referer': 'https://njpwworld.com/auth'}) 
  48         # /auth/login will return 302 for successful logins 
  49         if urlh
.geturl() == 'https://njpwworld.com/auth/login': 
  50             self
.report_warning('unable to login') 
  55     def _real_extract(self
, url
): 
  56         video_id 
= self
._match
_id
(url
) 
  58         webpage 
= self
._download
_webpage
(url
, video_id
) 
  61         for mobj 
in re
.finditer(r
'<a[^>]+\bhref=(["\'])/player
.+?
[^
>]*>', webpage): 
  62             player = extract_attributes(mobj.group(0)) 
  63             player_path = player.get('href
') 
  66             kind = self._search_regex( 
  67                 r'(low|high
)$
', player.get('class') or '', 'kind
', 
  69             player_url = compat_urlparse.urljoin(url, player_path) 
  70             player_page = self._download_webpage( 
  71                 player_url, video_id, note='Downloading player page
') 
  72             entries = self._parse_html5_media_entries( 
  73                 player_url, player_page, video_id, m3u8_id='hls
-%s' % kind, 
  74                 m3u8_entry_protocol='m3u8_native
') 
  75             kind_formats = entries[0]['formats
'] 
  76             for f in kind_formats: 
  77                 f['quality
'] = 2 if kind == 'high
' else 1 
  78             formats.extend(kind_formats) 
  80         self._sort_formats(formats) 
  82         post_content = get_element_by_class('post
-content
', webpage) 
  84             r'<li
[^
>]+class="tag-[^"]+"><a[^>]*>([^<]+)</a></li>', post_content 
  85         ) if post_content else None 
  89             'title': self._og_search_title(webpage),