[tvp] Remove unnecessary code
[youtube-dl] / youtube_dl / extractor / tvp.py
index 6b95e2ed11fe3e8ef24b463ea3177f4940968461..bd7ee25a0bb13287695708d1819511d3b5fef61f 100644 (file)
@@ -79,15 +79,8 @@ class TvpIE(InfoExtractor):
             'id': video_id,
             'title': title,
             'thumbnail': self._og_search_thumbnail(webpage),
-            'description': self._og_search_description(webpage, default=''),
+            'description': self._og_search_description(webpage),
         }
-        if mobj.group('type') == 'vod' and info_dict['description'] == '':
-            info_dict.update({
-                'description': self._html_search_regex(
-                    r'(?s)<div\s+class=[\'"]opis.*?</div>',
-                    self._download_webpage(url, video_id), 'description', group=0),
-            })
-
         video_url = self._search_regex(
             r'0:{src:([\'"])(?P<url>.*?)\1', webpage, 'formats', group='url', default=None)
         if video_url is None:
@@ -110,3 +103,59 @@ class TvpIE(InfoExtractor):
                 'formats': formats,
             })
         return info_dict
+
+
+class TvpSeriesIE(InfoExtractor):
+    IE_NAME = 'tvp.pl:Series'
+    _VALID_URL = r'https?://vod\.tvp\.pl/(?:[^/]+/){2}(?P<id>[^/]+)/?$'
+
+    _TESTS = [
+        {
+            'url': 'http://vod.tvp.pl/filmy-fabularne/filmy-za-darmo/ogniem-i-mieczem',
+            'info_dict': {
+                'title': 'Ogniem i mieczem',
+                'id': '4278026',
+            },
+            'playlist_count': 4,
+        }, {
+            'url': 'http://vod.tvp.pl/audycje/podroze/boso-przez-swiat',
+            'info_dict': {
+                'title': 'Boso przez Ĺ›wiat',
+                'id': '9329207',
+            },
+            'playlist_count': 86,
+        }
+    ]
+
+    def _force_download_webpage(self, url, v_id, tries=0):
+        if tries >= 5:
+            raise ExtractorError(
+                '%s: Cannot download webpage, try again later' % v_id)
+        # Sometimes happen, but in my tests second try always succeeded
+        try:
+            return self._download_webpage(url, v_id)
+        except IncompleteRead as e:
+            return self._force_download_webpage(url, v_id, tries+1)
+    
+    def _real_extract(self, url):
+        display_id = self._match_id(url)
+        webpage = self._force_download_webpage(url, display_id)
+        title = self._html_search_regex(
+            r'(?s) id=[\'"]path[\'"]>(.*?)</span>', webpage, 'series')
+        title = title.split(' / ', 2)[-1]
+        playlist_id = self._search_regex(r'nodeId:\s*(\d+)', webpage, 'playlist id')
+        playlist = self._force_download_webpage(
+            'http://vod.tvp.pl/vod/seriesAjax?type=series&nodeId=%s&recommend'
+            'edId=0&sort=&page=0&pageSize=1000000' % playlist_id, display_id)
+        videos_paths = re.findall(
+            '(?s)class="shortTitle">.*?href="(/[^"]+)', playlist)
+        entries = [
+            self.url_result('http://vod.tvp.pl%s' % v_path, ie=TvpIE.ie_key())
+            for v_path in videos_paths]
+        return {
+            '_type': 'playlist',
+            'id': playlist_id,
+            'display_id': display_id,
+            'title': title,
+            'entries': entries,
+        }