| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  | # encoding: utf-8 | 
					
						
							| 
									
										
										
										
											2014-03-21 14:03:18 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  | from ..compat import compat_urllib_parse | 
					
						
							| 
									
										
										
										
											2015-12-29 10:40:32 +01:00
										 |  |  | from ..utils import ( | 
					
						
							|  |  |  |     int_or_none, | 
					
						
							|  |  |  |     str_to_int, | 
					
						
							|  |  |  |     xpath_text, | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DaumIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  |     _VALID_URL = r'https?://(?:m\.)?tvpot\.daum\.net/v/(?P<id>[^?#&]+)' | 
					
						
							| 
									
										
										
										
											2014-03-21 14:03:18 +01:00
										 |  |  |     IE_NAME = 'daum.net' | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-15 15:25:35 +02:00
										 |  |  |     _TESTS = [{ | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  |         'url': 'http://tvpot.daum.net/v/vab4dyeDBysyBssyukBUjBz', | 
					
						
							| 
									
										
										
										
											2015-12-23 02:59:49 +06:00
										 |  |  |         'info_dict': { | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  |             'id': 'vab4dyeDBysyBssyukBUjBz', | 
					
						
							| 
									
										
										
										
											2015-12-23 02:59:49 +06:00
										 |  |  |             'ext': 'mp4', | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  |             'title': '마크 헌트 vs 안토니오 실바', | 
					
						
							|  |  |  |             'description': 'Mark Hunt vs Antonio Silva', | 
					
						
							|  |  |  |             'upload_date': '20131217', | 
					
						
							|  |  |  |             'duration': 2117, | 
					
						
							| 
									
										
										
										
											2015-12-29 10:40:32 +01:00
										 |  |  |             'view_count': int, | 
					
						
							|  |  |  |             'comment_count': int, | 
					
						
							| 
									
										
										
										
											2015-12-23 02:59:49 +06:00
										 |  |  |         }, | 
					
						
							| 
									
										
										
										
											2014-09-15 15:25:35 +02:00
										 |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'http://tvpot.daum.net/v/07dXWRka62Y%24', | 
					
						
							|  |  |  |         'only_matching': True, | 
					
						
							|  |  |  |     }] | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  |         video_id = self._match_id(url) | 
					
						
							|  |  |  |         query = compat_urllib_parse.urlencode({'vid': video_id}) | 
					
						
							| 
									
										
										
										
											2013-11-26 18:48:52 +01:00
										 |  |  |         info = self._download_xml( | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  |             'http://tvpot.daum.net/clip/ClipInfoXml.do?' + query, video_id, | 
					
						
							| 
									
										
										
										
											2014-03-21 14:03:18 +01:00
										 |  |  |             'Downloading video info') | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  |         movie_data = self._download_json( | 
					
						
							|  |  |  |             'http://videofarm.daum.net/controller/api/closed/v1_2/IntegratedMovieData.json?' + query, | 
					
						
							| 
									
										
										
										
											2014-03-21 14:03:18 +01:00
										 |  |  |             video_id, 'Downloading video formats info') | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         formats = [] | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  |         for format_el in movie_data['output_list']['output_list']: | 
					
						
							|  |  |  |             profile = format_el['profile'] | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  |             format_query = compat_urllib_parse.urlencode({ | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  |                 'vid': video_id, | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  |                 'profile': profile, | 
					
						
							|  |  |  |             }) | 
					
						
							| 
									
										
										
										
											2013-11-26 18:48:52 +01:00
										 |  |  |             url_doc = self._download_xml( | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  |                 'http://videofarm.daum.net/controller/api/open/v1_2/MovieLocation.apixml?' + format_query, | 
					
						
							| 
									
										
										
										
											2014-09-15 15:25:35 +02:00
										 |  |  |                 video_id, note='Downloading video data for %s format' % profile) | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  |             format_url = url_doc.find('result/url').text | 
					
						
							|  |  |  |             formats.append({ | 
					
						
							|  |  |  |                 'url': format_url, | 
					
						
							|  |  |  |                 'format_id': profile, | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  |                 'width': int_or_none(format_el.get('width')), | 
					
						
							|  |  |  |                 'height': int_or_none(format_el.get('height')), | 
					
						
							|  |  |  |                 'filesize': int_or_none(format_el.get('filesize')), | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  |             }) | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  |         self._sort_formats(formats) | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-03 14:21:06 +01:00
										 |  |  |         return { | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  |             'id': video_id, | 
					
						
							|  |  |  |             'title': info.find('TITLE').text, | 
					
						
							|  |  |  |             'formats': formats, | 
					
						
							| 
									
										
										
										
											2015-12-29 10:40:32 +01:00
										 |  |  |             'thumbnail': xpath_text(info, 'THUMB_URL'), | 
					
						
							|  |  |  |             'description': xpath_text(info, 'CONTENTS'), | 
					
						
							|  |  |  |             'duration': int_or_none(xpath_text(info, 'DURATION')), | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  |             'upload_date': info.find('REGDTTM').text[:8], | 
					
						
							| 
									
										
										
										
											2015-12-29 10:40:32 +01:00
										 |  |  |             'view_count': str_to_int(xpath_text(info, 'PLAY_CNT')), | 
					
						
							|  |  |  |             'comment_count': str_to_int(xpath_text(info, 'COMMENT_CNT')), | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DaumClipIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2015-12-29 10:40:32 +01:00
										 |  |  |     _VALID_URL = r'https?://(?:m\.)?tvpot\.daum\.net/(?:clip/ClipView.do|mypot/View.do)\?.*?clipid=(?P<id>\d+)' | 
					
						
							| 
									
										
										
										
											2015-12-29 11:59:27 +01:00
										 |  |  |     IE_NAME = 'daum.net:clip' | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     _TESTS = [{ | 
					
						
							|  |  |  |         'url': 'http://tvpot.daum.net/clip/ClipView.do?clipid=52554690', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': '52554690', | 
					
						
							|  |  |  |             'ext': 'mp4', | 
					
						
							|  |  |  |             'title': 'DOTA 2GETHER 시즌2 6회 - 2부', | 
					
						
							|  |  |  |             'description': 'DOTA 2GETHER 시즌2 6회 - 2부', | 
					
						
							|  |  |  |             'upload_date': '20130831', | 
					
						
							|  |  |  |             'duration': 3868, | 
					
						
							|  |  |  |             'view_count': int, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |     }] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         video_id = self._match_id(url) | 
					
						
							| 
									
										
										
										
											2015-12-29 10:40:32 +01:00
										 |  |  |         clip_info = self._download_json( | 
					
						
							|  |  |  |             'http://tvpot.daum.net/mypot/json/GetClipInfo.do?clipid=%s' % video_id, | 
					
						
							|  |  |  |             video_id, 'Downloading clip info')['clip_bean'] | 
					
						
							| 
									
										
										
										
											2015-10-31 01:08:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             '_type': 'url_transparent', | 
					
						
							|  |  |  |             'id': video_id, | 
					
						
							|  |  |  |             'url': 'http://tvpot.daum.net/v/%s' % clip_info['vid'], | 
					
						
							|  |  |  |             'title': clip_info['title'], | 
					
						
							|  |  |  |             'thumbnail': clip_info.get('thumb_url'), | 
					
						
							|  |  |  |             'description': clip_info.get('contents'), | 
					
						
							|  |  |  |             'duration': int_or_none(clip_info.get('duration')), | 
					
						
							|  |  |  |             'upload_date': clip_info.get('up_date')[:8], | 
					
						
							|  |  |  |             'view_count': int_or_none(clip_info.get('play_count')), | 
					
						
							|  |  |  |             'ie_key': 'Daum', | 
					
						
							| 
									
										
										
										
											2013-09-04 22:06:50 +02:00
										 |  |  |         } |