| 
									
										
										
										
											2014-02-10 20:52:53 +01:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-09 00:05:52 +05:00
										 |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											2015-02-11 22:33:03 +06:00
										 |  |  | from ..utils import ( | 
					
						
							|  |  |  |     float_or_none, | 
					
						
							|  |  |  |     int_or_none, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2013-07-09 00:05:52 +05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DotsubIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2015-02-11 22:33:03 +06:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?dotsub\.com/view/(?P<id>[^/]+)' | 
					
						
							| 
									
										
										
										
											2016-10-24 15:13:17 +08:00
										 |  |  |     _TESTS = [{ | 
					
						
							| 
									
										
										
										
											2016-08-20 06:18:20 +07:00
										 |  |  |         'url': 'https://dotsub.com/view/9c63db2a-fa95-4838-8e6e-13deafe47f09', | 
					
						
							|  |  |  |         'md5': '21c7ff600f545358134fea762a6d42b6', | 
					
						
							| 
									
										
										
										
											2014-02-10 20:52:53 +01:00
										 |  |  |         'info_dict': { | 
					
						
							| 
									
										
										
										
											2016-08-20 06:18:20 +07:00
										 |  |  |             'id': '9c63db2a-fa95-4838-8e6e-13deafe47f09', | 
					
						
							| 
									
										
										
										
											2014-02-10 20:52:53 +01:00
										 |  |  |             'ext': 'flv', | 
					
						
							| 
									
										
										
										
											2016-08-20 06:18:20 +07:00
										 |  |  |             'title': 'MOTIVATION - "It\'s Possible" Best Inspirational Video Ever', | 
					
						
							|  |  |  |             'description': 'md5:41af1e273edbbdfe4e216a78b9d34ac6', | 
					
						
							|  |  |  |             'thumbnail': 're:^https?://dotsub.com/media/9c63db2a-fa95-4838-8e6e-13deafe47f09/p', | 
					
						
							|  |  |  |             'duration': 198, | 
					
						
							|  |  |  |             'uploader': 'liuxt', | 
					
						
							|  |  |  |             'timestamp': 1385778501.104, | 
					
						
							|  |  |  |             'upload_date': '20131130', | 
					
						
							| 
									
										
										
										
											2015-02-11 22:33:03 +06:00
										 |  |  |             'view_count': int, | 
					
						
							| 
									
										
										
										
											2013-07-09 00:05:52 +05:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-10-24 15:13:17 +08:00
										 |  |  |     }, { | 
					
						
							|  |  |  |         'url': 'https://dotsub.com/view/747bcf58-bd59-45b7-8c8c-ac312d084ee6', | 
					
						
							|  |  |  |         'md5': '2bb4a83896434d5c26be868c609429a3', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': '168006778', | 
					
						
							|  |  |  |             'ext': 'mp4', | 
					
						
							|  |  |  |             'title': 'Apartments and flats in Raipur the white symphony', | 
					
						
							|  |  |  |             'description': 'md5:784d0639e6b7d1bc29530878508e38fe', | 
					
						
							|  |  |  |             'thumbnail': 're:^https?://dotsub.com/media/747bcf58-bd59-45b7-8c8c-ac312d084ee6/p', | 
					
						
							|  |  |  |             'duration': 290, | 
					
						
							|  |  |  |             'timestamp': 1476767794.2809999, | 
					
						
							| 
									
										
										
										
											2017-05-01 20:51:51 +02:00
										 |  |  |             'upload_date': '20161018', | 
					
						
							| 
									
										
										
										
											2016-10-24 15:13:17 +08:00
										 |  |  |             'uploader': 'parthivi001', | 
					
						
							|  |  |  |             'uploader_id': 'user52596202', | 
					
						
							|  |  |  |             'view_count': int, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         'add_ie': ['Vimeo'], | 
					
						
							|  |  |  |     }] | 
					
						
							| 
									
										
										
										
											2013-07-09 00:05:52 +05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							| 
									
										
										
										
											2015-02-11 22:33:03 +06:00
										 |  |  |         video_id = self._match_id(url) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         info = self._download_json( | 
					
						
							|  |  |  |             'https://dotsub.com/api/media/%s/metadata' % video_id, video_id) | 
					
						
							|  |  |  |         video_url = info.get('mediaURI') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if not video_url: | 
					
						
							|  |  |  |             webpage = self._download_webpage(url, video_id) | 
					
						
							|  |  |  |             video_url = self._search_regex( | 
					
						
							| 
									
										
										
										
											2015-04-24 21:47:13 +06:00
										 |  |  |                 [r'<source[^>]+src="([^"]+)"', r'"file"\s*:\s*\'([^\']+)'], | 
					
						
							| 
									
										
										
										
											2016-10-24 15:13:17 +08:00
										 |  |  |                 webpage, 'video url', default=None) | 
					
						
							|  |  |  |             info_dict = { | 
					
						
							|  |  |  |                 'id': video_id, | 
					
						
							|  |  |  |                 'url': video_url, | 
					
						
							|  |  |  |                 'ext': 'flv', | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2013-07-08 22:40:42 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-24 15:13:17 +08:00
										 |  |  |         if not video_url: | 
					
						
							|  |  |  |             setup_data = self._parse_json(self._html_search_regex( | 
					
						
							|  |  |  |                 r'(?s)data-setup=([\'"])(?P<content>(?!\1).+?)\1', | 
					
						
							|  |  |  |                 webpage, 'setup data', group='content'), video_id) | 
					
						
							|  |  |  |             info_dict = { | 
					
						
							|  |  |  |                 '_type': 'url_transparent', | 
					
						
							|  |  |  |                 'url': setup_data['src'], | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         info_dict.update({ | 
					
						
							| 
									
										
										
										
											2014-02-10 20:52:53 +01:00
										 |  |  |             'title': info['title'], | 
					
						
							| 
									
										
										
										
											2015-02-11 22:33:03 +06:00
										 |  |  |             'description': info.get('description'), | 
					
						
							|  |  |  |             'thumbnail': info.get('screenshotURI'), | 
					
						
							|  |  |  |             'duration': int_or_none(info.get('duration'), 1000), | 
					
						
							|  |  |  |             'uploader': info.get('user'), | 
					
						
							|  |  |  |             'timestamp': float_or_none(info.get('dateCreated'), 1000), | 
					
						
							|  |  |  |             'view_count': int_or_none(info.get('numberOfViews')), | 
					
						
							| 
									
										
										
										
											2016-10-24 15:13:17 +08:00
										 |  |  |         }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return info_dict |