From d41b8a2a89999d0b77cc1c7b838dd73d1db93ec7 Mon Sep 17 00:00:00 2001 From: Mort Yao Date: Tue, 24 Nov 2015 21:37:40 +0100 Subject: [PATCH] [youku] handle password-protected videos, fix #73 (again) --- src/you_get/extractors/youku.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/you_get/extractors/youku.py b/src/you_get/extractors/youku.py index 110dcdf5..006e5a72 100644 --- a/src/you_get/extractors/youku.py +++ b/src/you_get/extractors/youku.py @@ -118,10 +118,17 @@ class Youku(VideoExtractor): assert 'stream' in data except: if 'error' in data: - log.wtf('[Failed] ' + data['error']['note']) + if data['error']['code'] == -202: + # Password protected + self.password_protected = True + self.password = input(log.sprint('Password: ', log.YELLOW)) + api_url += '&pwd={}'.format(self.password) + meta = json.loads(get_html(api_url)) + data = meta['data'] + else: + log.wtf('[Failed] ' + data['error']['note']) else: log.wtf('[Failed] Video not found.') - # TBD: password protected? self.title = data['video']['title'] self.ep = data['security']['encrypt_string'] @@ -175,8 +182,7 @@ class Youku(VideoExtractor): if not kwargs['info_only']: if self.password_protected: - password = input(log.sprint('Password: ', log.YELLOW)) - m3u8_url += '&password={}'.format(password) + m3u8_url += '&password={}'.format(self.password) m3u8 = get_html(m3u8_url)