From 95c43eb66c4267967a8ab84136b3060d9fc7335f Mon Sep 17 00:00:00 2001 From: PSJay Date: Tue, 1 Sep 2015 00:19:58 +0800 Subject: [PATCH 1/3] Support video-password on Youku. --- youtube_dl/extractor/youku.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/youtube_dl/extractor/youku.py b/youtube_dl/extractor/youku.py index 78caeb8b3..220f84221 100644 --- a/youtube_dl/extractor/youku.py +++ b/youtube_dl/extractor/youku.py @@ -49,6 +49,17 @@ class YoukuIE(InfoExtractor): }, 'playlist_count': 13, 'skip': 'Available in China only', + }, { + 'url': 'http://v.youku.com/v_show/id_XNjA1NzA2Njgw.html', + 'note': 'Video protected with password', + 'info_dict': { + 'id': 'XNjA1NzA2Njgw', + 'ext': 'flv', + 'title': u'邢義田复旦讲座之想象中的胡人—从“左衽孔子”说起', + }, + 'params': { + 'videopassword': '100600', + }, }] def construct_video_urls(self, data1, data2): @@ -185,10 +196,17 @@ class YoukuIE(InfoExtractor): raw_data = self._download_json(req, video_id, note=note) return raw_data['data'][0] + video_password = self._downloader.params.get('videopassword', None) + # request basic data - data1 = retrieve_data( - 'http://v.youku.com/player/getPlayList/VideoIDS/%s' % video_id, - 'Downloading JSON metadata 1') + if video_password: + data1 = retrieve_data( + 'http://v.youku.com/player/getPlayList/VideoIDS/%s?password=%s' % (video_id, video_password), + 'Downloading JSON metadata 1') + else: + data1 = retrieve_data( + 'http://v.youku.com/player/getPlayList/VideoIDS/%s' % video_id, + 'Downloading JSON metadata 1') data2 = retrieve_data( 'http://v.youku.com/player/getPlayList/VideoIDS/%s/Pf/4/ctype/12/ev/1' % video_id, 'Downloading JSON metadata 2') From d7ba368688adbdb77aa8b74a88e507748fafe1de Mon Sep 17 00:00:00 2001 From: PSJay Date: Tue, 1 Sep 2015 11:07:47 +0800 Subject: [PATCH 2/3] Fix coding styple in YouKuIE. --- youtube_dl/extractor/youku.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/youtube_dl/extractor/youku.py b/youtube_dl/extractor/youku.py index 220f84221..6219bc1bb 100644 --- a/youtube_dl/extractor/youku.py +++ b/youtube_dl/extractor/youku.py @@ -199,14 +199,13 @@ class YoukuIE(InfoExtractor): video_password = self._downloader.params.get('videopassword', None) # request basic data + basic_data_url = 'http://v.youku.com/player/getPlayList/VideoIDS/%s' % video_id if video_password: - data1 = retrieve_data( - 'http://v.youku.com/player/getPlayList/VideoIDS/%s?password=%s' % (video_id, video_password), - 'Downloading JSON metadata 1') - else: - data1 = retrieve_data( - 'http://v.youku.com/player/getPlayList/VideoIDS/%s' % video_id, - 'Downloading JSON metadata 1') + basic_data_url = '%s?password=%s' % (basic_data_url, video_password) + + data1 = retrieve_data( + basic_data_url, + 'Downloading JSON metadata 1') data2 = retrieve_data( 'http://v.youku.com/player/getPlayList/VideoIDS/%s/Pf/4/ctype/12/ev/1' % video_id, 'Downloading JSON metadata 2') From 596f041664cd81fad591ea3be4282996653927a2 Mon Sep 17 00:00:00 2001 From: PSJay Date: Tue, 1 Sep 2015 12:50:01 +0800 Subject: [PATCH 3/3] Update README Add Youku in video password description. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 25844eb6d..b6f0677f7 100644 --- a/README.md +++ b/README.md @@ -207,7 +207,7 @@ which means you can modify it, redistribute it or use it however you like. -p, --password PASSWORD Account password. If this option is left out, youtube-dl will ask interactively. -2, --twofactor TWOFACTOR Two-factor auth code -n, --netrc Use .netrc authentication data - --video-password PASSWORD Video password (vimeo, smotri) + --video-password PASSWORD Video password (vimeo, smotri, Youku) ## Post-processing Options: -x, --extract-audio Convert video files to audio-only files (requires ffmpeg or avconv and ffprobe or avprobe)