| 
									
										
										
										
											2018-06-03 17:09:20 +07:00
										 |  |  | # coding: utf-8 | 
					
						
							|  |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from .common import InfoExtractor | 
					
						
							|  |  |  | from ..utils import ( | 
					
						
							|  |  |  |     int_or_none, | 
					
						
							|  |  |  |     unified_timestamp, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CamTubeIE(InfoExtractor): | 
					
						
							|  |  |  |     _VALID_URL = r'https?://(?:(?:www|api)\.)?camtube\.co/recordings?/(?P<id>[^/?#&]+)' | 
					
						
							|  |  |  |     _TESTS = [{ | 
					
						
							|  |  |  |         'url': 'https://camtube.co/recording/minafay-030618-1136-chaturbate-female', | 
					
						
							|  |  |  |         'info_dict': { | 
					
						
							|  |  |  |             'id': '42ad3956-dd5b-445a-8313-803ea6079fac', | 
					
						
							|  |  |  |             'display_id': 'minafay-030618-1136-chaturbate-female', | 
					
						
							|  |  |  |             'ext': 'mp4', | 
					
						
							|  |  |  |             'title': 'minafay-030618-1136-chaturbate-female', | 
					
						
							|  |  |  |             'duration': 1274, | 
					
						
							|  |  |  |             'timestamp': 1528018608, | 
					
						
							|  |  |  |             'upload_date': '20180603', | 
					
						
							| 
									
										
										
										
											2019-01-01 15:39:18 +01:00
										 |  |  |             'age_limit': 18 | 
					
						
							| 
									
										
										
										
											2018-06-03 17:09:20 +07:00
										 |  |  |         }, | 
					
						
							|  |  |  |         'params': { | 
					
						
							|  |  |  |             'skip_download': True, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |     }] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     _API_BASE = 'https://api.camtube.co' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							|  |  |  |         display_id = self._match_id(url) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         token = self._download_json( | 
					
						
							|  |  |  |             '%s/rpc/session/new' % self._API_BASE, display_id, | 
					
						
							|  |  |  |             'Downloading session token')['token'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self._set_cookie('api.camtube.co', 'session', token) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         video = self._download_json( | 
					
						
							|  |  |  |             '%s/recordings/%s' % (self._API_BASE, display_id), display_id, | 
					
						
							|  |  |  |             headers={'Referer': url}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         video_id = video['uuid'] | 
					
						
							|  |  |  |         timestamp = unified_timestamp(video.get('createdAt')) | 
					
						
							|  |  |  |         duration = int_or_none(video.get('duration')) | 
					
						
							|  |  |  |         view_count = int_or_none(video.get('viewCount')) | 
					
						
							|  |  |  |         like_count = int_or_none(video.get('likeCount')) | 
					
						
							|  |  |  |         creator = video.get('stageName') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         formats = [{ | 
					
						
							|  |  |  |             'url': '%s/recordings/%s/manifest.m3u8' | 
					
						
							|  |  |  |                    % (self._API_BASE, video_id), | 
					
						
							|  |  |  |             'format_id': 'hls', | 
					
						
							|  |  |  |             'ext': 'mp4', | 
					
						
							|  |  |  |             'protocol': 'm3u8_native', | 
					
						
							|  |  |  |         }] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             'id': video_id, | 
					
						
							|  |  |  |             'display_id': display_id, | 
					
						
							|  |  |  |             'title': display_id, | 
					
						
							|  |  |  |             'timestamp': timestamp, | 
					
						
							|  |  |  |             'duration': duration, | 
					
						
							|  |  |  |             'view_count': view_count, | 
					
						
							|  |  |  |             'like_count': like_count, | 
					
						
							|  |  |  |             'creator': creator, | 
					
						
							|  |  |  |             'formats': formats, | 
					
						
							| 
									
										
										
										
											2019-01-01 15:39:18 +01:00
										 |  |  |             'age_limit': 18 | 
					
						
							| 
									
										
										
										
											2018-06-03 17:09:20 +07:00
										 |  |  |         } |