|
|
|
@ -1,23 +1,22 @@
|
|
|
|
|
# coding: utf-8
|
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
|
|
|
|
import re
|
|
|
|
|
import json
|
|
|
|
|
import datetime
|
|
|
|
|
|
|
|
|
|
from .common import InfoExtractor
|
|
|
|
|
from ..compat import (
|
|
|
|
|
compat_parse_qs,
|
|
|
|
|
compat_urlparse,
|
|
|
|
|
)
|
|
|
|
|
from ..utils import (
|
|
|
|
|
determine_ext,
|
|
|
|
|
ExtractorError,
|
|
|
|
|
int_or_none,
|
|
|
|
|
parse_duration,
|
|
|
|
|
parse_iso8601,
|
|
|
|
|
sanitized_Request,
|
|
|
|
|
xpath_text,
|
|
|
|
|
determine_ext,
|
|
|
|
|
urlencode_postdata,
|
|
|
|
|
xpath_text,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -101,19 +100,24 @@ class NiconicoIE(InfoExtractor):
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
# Log in
|
|
|
|
|
login_ok = True
|
|
|
|
|
login_form_strs = {
|
|
|
|
|
'mail': username,
|
|
|
|
|
'mail_tel': username,
|
|
|
|
|
'password': password,
|
|
|
|
|
}
|
|
|
|
|
login_data = urlencode_postdata(login_form_strs)
|
|
|
|
|
request = sanitized_Request(
|
|
|
|
|
'https://secure.nicovideo.jp/secure/login', login_data)
|
|
|
|
|
login_results = self._download_webpage(
|
|
|
|
|
request, None, note='Logging in', errnote='Unable to log in')
|
|
|
|
|
if re.search(r'(?i)<h1 class="mb8p4">Log in error</h1>', login_results) is not None:
|
|
|
|
|
urlh = self._request_webpage(
|
|
|
|
|
'https://account.nicovideo.jp/api/v1/login', None,
|
|
|
|
|
note='Logging in', errnote='Unable to log in',
|
|
|
|
|
data=urlencode_postdata(login_form_strs))
|
|
|
|
|
if urlh is False:
|
|
|
|
|
login_ok = False
|
|
|
|
|
else:
|
|
|
|
|
parts = compat_urlparse.urlparse(urlh.geturl())
|
|
|
|
|
if compat_parse_qs(parts.query).get('message', [None])[0] == 'cant_login':
|
|
|
|
|
login_ok = False
|
|
|
|
|
if not login_ok:
|
|
|
|
|
self._downloader.report_warning('unable to log in: bad username or password')
|
|
|
|
|
return False
|
|
|
|
|
return True
|
|
|
|
|
return login_ok
|
|
|
|
|
|
|
|
|
|
def _real_extract(self, url):
|
|
|
|
|
video_id = self._match_id(url)
|
|
|
|
|