aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2017-06-07 14:47:25 +0800
committerYen Chi Hsuan <yan12125@gmail.com>2017-07-11 15:03:11 +0800
commitbb13949197458fc6bd888bbe9255c391927a997b (patch)
treedbabf45fdab6bc041d896499e99aa21ea867a50b
parentc3c94ca4a40504147fce387ffb7eb9cb43233550 (diff)
downloadyoutube-dl-bb13949197458fc6bd888bbe9255c391927a997b.zip
youtube-dl-bb13949197458fc6bd888bbe9255c391927a997b.tar.gz
youtube-dl-bb13949197458fc6bd888bbe9255c391927a997b.tar.bz2
[niconico] Check login errors (#12486)
-rw-r--r--youtube_dl/extractor/niconico.py30
1 files changed, 17 insertions, 13 deletions
diff --git a/youtube_dl/extractor/niconico.py b/youtube_dl/extractor/niconico.py
index f268a72..695e32e 100644
--- a/youtube_dl/extractor/niconico.py
+++ b/youtube_dl/extractor/niconico.py
@@ -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)