| 
									
										
										
										
											2016-10-15 00:12:21 +08:00
										 |  |  | # coding: utf-8 | 
					
						
							| 
									
										
										
										
											2014-03-24 22:30:32 +01:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-24 07:51:44 +01:00
										 |  |  | from .common import InfoExtractor | 
					
						
							| 
									
										
										
										
											2014-03-24 22:30:32 +01:00
										 |  |  | from ..utils import ( | 
					
						
							| 
									
										
										
										
											2015-07-24 12:00:20 +01:00
										 |  |  |     int_or_none, | 
					
						
							| 
									
										
										
										
											2015-10-30 20:06:38 +01:00
										 |  |  |     unified_strdate, | 
					
						
							| 
									
										
										
										
											2014-03-24 22:30:32 +01:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2013-11-24 07:51:44 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ClipfishIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2015-08-08 01:10:41 +06:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?clipfish\.de/(?:[^/]+/)+video/(?P<id>[0-9]+)' | 
					
						
							| 
									
										
										
										
											2013-11-24 07:51:44 +01:00
										 |  |  |     _TEST = { | 
					
						
							| 
									
										
										
										
											2016-10-15 00:12:21 +08:00
										 |  |  |         'url': 'http://www.clipfish.de/special/ugly-americans/video/4343170/s01-e01-ugly-americans-date-in-der-hoelle/', | 
					
						
							|  |  |  |         'md5': '720563e467b86374c194bdead08d207d', | 
					
						
							| 
									
										
										
										
											2014-03-24 22:30:32 +01:00
										 |  |  |         'info_dict': { | 
					
						
							| 
									
										
										
										
											2016-10-15 00:12:21 +08:00
										 |  |  |             'id': '4343170', | 
					
						
							| 
									
										
										
										
											2014-03-24 22:30:32 +01:00
										 |  |  |             'ext': 'mp4', | 
					
						
							| 
									
										
										
										
											2016-10-15 00:12:21 +08:00
										 |  |  |             'title': 'S01 E01 - Ugly Americans - Date in der Hölle', | 
					
						
							|  |  |  |             'description': 'Mark Lilly arbeitet im Sozialdienst der Stadt New York und soll Immigranten bei ihrer Einbürgerung in die USA zur Seite stehen.', | 
					
						
							|  |  |  |             'upload_date': '20161005', | 
					
						
							|  |  |  |             'duration': 1291, | 
					
						
							| 
									
										
										
										
											2015-10-30 20:06:38 +01:00
										 |  |  |             'view_count': int, | 
					
						
							| 
									
										
										
										
											2015-07-24 12:00:20 +01:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-11-24 07:51:44 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							| 
									
										
										
										
											2015-07-24 12:00:20 +01:00
										 |  |  |         video_id = self._match_id(url) | 
					
						
							| 
									
										
										
										
											2015-08-08 01:10:41 +06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-04 16:38:05 +01:00
										 |  |  |         video_info = self._download_json( | 
					
						
							|  |  |  |             'http://www.clipfish.de/devapi/id/%s?format=json&apikey=hbbtv' % video_id, | 
					
						
							|  |  |  |             video_id)['items'][0] | 
					
						
							| 
									
										
										
										
											2015-08-08 01:10:41 +06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-04 16:38:05 +01:00
										 |  |  |         formats = [] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         m3u8_url = video_info.get('media_videourl_hls') | 
					
						
							|  |  |  |         if m3u8_url: | 
					
						
							|  |  |  |             formats.append({ | 
					
						
							|  |  |  |                 'url': m3u8_url.replace('de.hls.fra.clipfish.de', 'hls.fra.clipfish.de'), | 
					
						
							|  |  |  |                 'ext': 'mp4', | 
					
						
							|  |  |  |                 'format_id': 'hls', | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         mp4_url = video_info.get('media_videourl') | 
					
						
							|  |  |  |         if mp4_url: | 
					
						
							|  |  |  |             formats.append({ | 
					
						
							|  |  |  |                 'url': mp4_url, | 
					
						
							|  |  |  |                 'format_id': 'mp4', | 
					
						
							|  |  |  |                 'width': int_or_none(video_info.get('width')), | 
					
						
							|  |  |  |                 'height': int_or_none(video_info.get('height')), | 
					
						
							|  |  |  |                 'tbr': int_or_none(video_info.get('bitrate')), | 
					
						
							|  |  |  |             }) | 
					
						
							| 
									
										
										
										
											2015-08-08 01:10:41 +06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-15 00:12:21 +08:00
										 |  |  |         descr = video_info.get('descr') | 
					
						
							|  |  |  |         if descr: | 
					
						
							|  |  |  |             descr = descr.strip() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-24 07:51:44 +01:00
										 |  |  |         return { | 
					
						
							|  |  |  |             'id': video_id, | 
					
						
							| 
									
										
										
										
											2015-10-30 20:06:38 +01:00
										 |  |  |             'title': video_info['title'], | 
					
						
							| 
									
										
										
										
											2016-10-15 00:12:21 +08:00
										 |  |  |             'description': descr, | 
					
						
							| 
									
										
										
										
											2015-07-24 12:00:20 +01:00
										 |  |  |             'formats': formats, | 
					
						
							| 
									
										
										
										
											2015-10-30 20:06:38 +01:00
										 |  |  |             'thumbnail': video_info.get('media_content_thumbnail_large') or video_info.get('media_thumbnail'), | 
					
						
							|  |  |  |             'duration': int_or_none(video_info.get('media_length')), | 
					
						
							|  |  |  |             'upload_date': unified_strdate(video_info.get('pubDate')), | 
					
						
							|  |  |  |             'view_count': int_or_none(video_info.get('media_views')) | 
					
						
							| 
									
										
										
										
											2013-11-24 07:51:44 +01:00
										 |  |  |         } |