]> git.bitcoin.ninja Git - youtube-dl/commitdiff
[niconico] Allow login via cookies
authorYen Chi Hsuan <yan12125@gmail.com>
Sun, 15 Jan 2017 14:51:54 +0000 (22:51 +0800)
committerYen Chi Hsuan <yan12125@gmail.com>
Sun, 15 Jan 2017 14:51:54 +0000 (22:51 +0800)
Some codes are borrowed from #7968, which is by @jlhg

Closes #7968

ChangeLog
youtube_dl/extractor/niconico.py

index dba18d39b2f587acbc2eff7e476149dbc2d54493..029d13426f34ab4f6c8c984ab41c1ea0e8a43d04 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+version <unreleased>
+
+Extractors
++ [niconico] Support login via cookies (#7968)
+
 version 2017.01.14
 
 Core
index 7e6c594c8f458bc7a9b3bea88111d13622a8d08b..8baac23e4b16643a59e6a83570862b6a5afd2b45 100644 (file)
@@ -87,8 +87,6 @@ class NiconicoIE(InfoExtractor):
 
     _VALID_URL = r'https?://(?:www\.|secure\.)?nicovideo\.jp/watch/(?P<id>(?:[a-z]{2})?[0-9]+)'
     _NETRC_MACHINE = 'niconico'
-    # Determine whether the downloader used authentication to download video
-    _AUTHENTICATED = False
 
     def _real_initialize(self):
         self._login()
@@ -112,8 +110,6 @@ class NiconicoIE(InfoExtractor):
         if re.search(r'(?i)<h1 class="mb8p4">Log in error</h1>', login_results) is not None:
             self._downloader.report_warning('unable to log in: bad username or password')
             return False
-        # Successful login
-        self._AUTHENTICATED = True
         return True
 
     def _real_extract(self, url):
@@ -131,19 +127,19 @@ class NiconicoIE(InfoExtractor):
             'http://ext.nicovideo.jp/api/getthumbinfo/' + video_id, video_id,
             note='Downloading video info page')
 
-        if self._AUTHENTICATED:
-            # Get flv info
-            flv_info_webpage = self._download_webpage(
-                'http://flapi.nicovideo.jp/api/getflv/' + video_id + '?as3=1',
-                video_id, 'Downloading flv info')
-        else:
-            raise ExtractorError('Niconico videos now require logging in', expected=True)
+        # Get flv info
+        flv_info_webpage = self._download_webpage(
+            'http://flapi.nicovideo.jp/api/getflv/' + video_id + '?as3=1',
+            video_id, 'Downloading flv info')
 
         flv_info = compat_urlparse.parse_qs(flv_info_webpage)
         if 'url' not in flv_info:
             if 'deleted' in flv_info:
                 raise ExtractorError('The video has been deleted.',
                                      expected=True)
+            elif 'closed' in flv_info:
+                raise ExtractorError('Niconico videos now require logging in',
+                                     expected=True)
             else:
                 raise ExtractorError('Unable to find video URL')