| 
					
				 | 
			
			
				@@ -85,7 +85,7 @@ class ProSiebenSat1IE(InfoExtractor): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'ext': 'mp4', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'title': 'Im Interview: Kai Wiesinger', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'description': 'md5:e4e5370652ec63b95023e914190b4eb9', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                'upload_date': '20140225', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'upload_date': '20140203', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'duration': 522.56, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             'params': { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -100,7 +100,7 @@ class ProSiebenSat1IE(InfoExtractor): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'ext': 'mp4', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'title': 'Jagd auf Fertigkost im Elsthal - Teil 2', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'description': 'md5:2669cde3febe9bce13904f701e774eb6', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                'upload_date': '20140225', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'upload_date': '20141014', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'duration': 2410.44, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             'params': { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -152,12 +152,22 @@ class ProSiebenSat1IE(InfoExtractor): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'skip_download': True, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'url': 'http://www.prosieben.de/tv/joko-gegen-klaas/videos/playlists/episode-8-ganze-folge-playlist', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'info_dict': { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'id': '439664', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'title': 'Episode 8 - Ganze Folge - Playlist', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'description': 'md5:63b8963e71f481782aeea877658dec84', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'playlist_count': 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     _CLIPID_REGEXES = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         r'"clip_id"\s*:\s+"(\d+)"', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         r'clipid: "(\d+)"', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         r'clip[iI]d=(\d+)', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        r"'itemImageUrl'\s*:\s*'/dynamic/thumbnails/full/\d+/(\d+)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     _TITLE_REGEXES = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         r'<h2 class="subtitle" itemprop="name">\s*(.+?)</h2>', 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -178,11 +188,19 @@ class ProSiebenSat1IE(InfoExtractor): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         r'<span style="padding-left: 4px;line-height:20px; color:#404040">(\d{2}\.\d{2}\.\d{4})</span>', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         r'(\d{2}\.\d{2}\.\d{4}) \| \d{2}:\d{2} Min<br/>', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    _PAGE_TYPE_REGEXES = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        r'<meta name="page_type" content="([^"]+)">', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        r"'itemType'\s*:\s*'([^']*)'", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    _PLAYLIST_ID_REGEXES = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        r'content[iI]d=(\d+)', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        r"'itemId'\s*:\s*'([^']*)'", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    _PLAYLIST_CLIP_REGEXES = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        r'(?s)data-qvt=.+?<a href="([^"]+)"', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def _real_extract(self, url): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        video_id = self._match_id(url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        webpage = self._download_webpage(url, video_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def _extract_clip(self, url, webpage): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         clip_id = self._html_search_regex(self._CLIPID_REGEXES, webpage, 'clip id') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         access_token = 'testclient' 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -281,3 +299,31 @@ class ProSiebenSat1IE(InfoExtractor): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             'duration': duration, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             'formats': formats, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def _extract_playlist(self, url, webpage): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        playlist_id = self._html_search_regex( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self._PLAYLIST_ID_REGEXES, webpage, 'playlist id') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for regex in self._PLAYLIST_CLIP_REGEXES: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            playlist_clips = re.findall(regex, webpage) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if playlist_clips: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                title = self._html_search_regex( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    self._TITLE_REGEXES, webpage, 'title') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                description = self._html_search_regex( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    self._DESCRIPTION_REGEXES, webpage, 'description', fatal=False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                entries = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    self.url_result( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        re.match('(.+?//.+?)/', url).group(1) + clip_path, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        'ProSiebenSat1') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for clip_path in playlist_clips] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return self.playlist_result(entries, playlist_id, title, description) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def _real_extract(self, url): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        video_id = self._match_id(url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        webpage = self._download_webpage(url, video_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        page_type = self._search_regex( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self._PAGE_TYPE_REGEXES, webpage, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'page type', default='clip').lower() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if page_type == 'clip': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return self._extract_clip(url, webpage) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif page_type == 'playlist': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return self._extract_playlist(url, webpage) 
			 |