[daum.net] Remove error fix, and improve code for playlist/user channel support

This commit is contained in:
ping 2016-01-27 12:38:34 +08:00
parent 528668da72
commit 3e7c72bb35

View File

@ -2,7 +2,6 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import re
import itertools import itertools
from .common import InfoExtractor from .common import InfoExtractor
@ -11,6 +10,7 @@ from ..utils import (
int_or_none, int_or_none,
str_to_int, str_to_int,
xpath_text, xpath_text,
unescapeHTML,
) )
@ -30,16 +30,6 @@ class DaumIE(InfoExtractor):
'view_count': int, 'view_count': int,
'comment_count': int, 'comment_count': int,
}, },
}, {
'url': 'http://m.tvpot.daum.net/v/65139429',
'info_dict': {
'id': '65139429',
'ext': 'mp4',
'title': 'md5:a100d65d09cec246d8aa9bde7de45aed',
'description': 'md5:79794514261164ff27e36a21ad229fc5',
'upload_date': '20150604',
'duration': 154
},
}, { }, {
'url': 'http://tvpot.daum.net/v/07dXWRka62Y%24', 'url': 'http://tvpot.daum.net/v/07dXWRka62Y%24',
'only_matching': True, 'only_matching': True,
@ -55,10 +45,6 @@ class DaumIE(InfoExtractor):
'http://videofarm.daum.net/controller/api/closed/v1_2/IntegratedMovieData.json?' + query, 'http://videofarm.daum.net/controller/api/closed/v1_2/IntegratedMovieData.json?' + query,
video_id, 'Downloading video formats info') video_id, 'Downloading video formats info')
# For urls like http://m.tvpot.daum.net/v/65139429, where the video_id is really a clipid
if not movie_data.get('output_list', {}).get('output_list') and re.match(r'^\d+$', video_id):
return self.url_result('http://tvpot.daum.net/clip/ClipView.do?clipid=%s' % video_id)
formats = [] formats = []
for format_el in movie_data['output_list']['output_list']: for format_el in movie_data['output_list']['output_list']:
profile = format_el['profile'] profile = format_el['profile']
@ -93,7 +79,7 @@ class DaumIE(InfoExtractor):
class DaumClipIE(InfoExtractor): class DaumClipIE(InfoExtractor):
_VALID_URL = r'https?://(?:m\.)?tvpot\.daum\.net/(?:clip/ClipView.(?:do|tv)|mypot/View.do)\?.*?clipid=(?P<id>\d+)' _VALID_URL = r'https?://(?:m\.)?tvpot\.daum\.net/(?:clip/ClipView.do|mypot/View.do)\?.*?clipid=(?P<id>\d+)'
IE_NAME = 'daum.net:clip' IE_NAME = 'daum.net:clip'
_TESTS = [{ _TESTS = [{
@ -107,9 +93,6 @@ class DaumClipIE(InfoExtractor):
'duration': 3868, 'duration': 3868,
'view_count': int, 'view_count': int,
}, },
}, {
'url': 'http://m.tvpot.daum.net/clip/ClipView.tv?clipid=54999425',
'only_matching': True,
}] }]
def _real_extract(self, url): def _real_extract(self, url):
@ -122,7 +105,7 @@ class DaumClipIE(InfoExtractor):
'_type': 'url_transparent', '_type': 'url_transparent',
'id': video_id, 'id': video_id,
'url': 'http://tvpot.daum.net/v/%s' % clip_info['vid'], 'url': 'http://tvpot.daum.net/v/%s' % clip_info['vid'],
'title': clip_info['title'], 'title': unescapeHTML(clip_info['title']),
'thumbnail': clip_info.get('thumb_url'), 'thumbnail': clip_info.get('thumb_url'),
'description': clip_info.get('contents'), 'description': clip_info.get('contents'),
'duration': int_or_none(clip_info.get('duration')), 'duration': int_or_none(clip_info.get('duration')),
@ -136,7 +119,7 @@ class DaumListIE(InfoExtractor):
def _get_entries(self, list_id, list_id_type): def _get_entries(self, list_id, list_id_type):
name = None name = None
entries = [] entries = []
for pagenum in itertools.count(start=1): for pagenum in itertools.count(1):
list_info = self._download_json( list_info = self._download_json(
'http://tvpot.daum.net/mypot/json/GetClipInfo.do?size=48&init=true&order=date&page=%d&%s=%s' % ( 'http://tvpot.daum.net/mypot/json/GetClipInfo.do?size=48&init=true&order=date&page=%d&%s=%s' % (
pagenum, list_id_type, list_id), list_id,'Downloading list info - %s' % pagenum) pagenum, list_id_type, list_id), list_id,'Downloading list info - %s' % pagenum)
@ -189,6 +172,8 @@ class DaumPlaylistIE(DaumListIE):
return self.url_result(url, 'DaumClip') return self.url_result(url, 'DaumClip')
list_id = self._match_id(url) list_id = self._match_id(url)
self.to_screen('Downloading playlist %s - add --no-playlist to just download video' % list_id)
name, entries = self._get_entries(list_id, 'playlistid') name, entries = self._get_entries(list_id, 'playlistid')
return self.playlist_result(entries, list_id, name) return self.playlist_result(entries, list_id, name)
@ -210,7 +195,7 @@ class DaumUserIE(DaumListIE):
'info_dict': { 'info_dict': {
'id': '73801156', 'id': '73801156',
'ext': 'mp4', 'ext': 'mp4',
'title': '[미공개] 김구라, 오만석이 부릅니다 &#39;오케피&#39; - 마이 리틀 텔레비전 20160116', 'title': '[미공개] 김구라, 오만석이 부릅니다 \'오케피\' - 마이 리틀 텔레비전 20160116',
'upload_date': '20160117', 'upload_date': '20160117',
'description': 'md5:5e91d2d6747f53575badd24bd62b9f36' 'description': 'md5:5e91d2d6747f53575badd24bd62b9f36'
}, },
@ -239,6 +224,7 @@ class DaumUserIE(DaumListIE):
return self.url_result(url, 'DaumPlaylist') return self.url_result(url, 'DaumPlaylist')
list_id = self._match_id(url) list_id = self._match_id(url)
self.to_screen('Downloading playlist %s - add --no-playlist to just download video' % list_id)
name, entries = self._get_entries(list_id, 'ownerid') name, entries = self._get_entries(list_id, 'ownerid')
return self.playlist_result(entries, list_id, name) return self.playlist_result(entries, list_id, name)