diff options
| author | Yen Chi Hsuan <yan12125@gmail.com> | 2017-06-07 14:47:25 +0800 | 
|---|---|---|
| committer | Yen Chi Hsuan <yan12125@gmail.com> | 2017-07-11 15:03:11 +0800 | 
| commit | bb13949197458fc6bd888bbe9255c391927a997b (patch) | |
| tree | dbabf45fdab6bc041d896499e99aa21ea867a50b | |
| parent | c3c94ca4a40504147fce387ffb7eb9cb43233550 (diff) | |
[niconico] Check login errors (#12486)
| -rw-r--r-- | youtube_dl/extractor/niconico.py | 30 | 
1 files changed, 17 insertions, 13 deletions
| diff --git a/youtube_dl/extractor/niconico.py b/youtube_dl/extractor/niconico.py index f268a72d5..695e32e59 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) | 
