[letv] Merge LetvTvIE into LetvPlaylistIE
authorYen Chi Hsuan <yan12125@gmail.com>
Wed, 2 Mar 2016 19:14:00 +0000 (03:14 +0800)
committerYen Chi Hsuan <yan12125@gmail.com>
Wed, 2 Mar 2016 19:27:55 +0000 (03:27 +0800)
And
1. Add more URL examples
2. Improve the matching pattern

youtube_dl/extractor/__init__.py
youtube_dl/extractor/letv.py

index b3bf739637344006c3ef1a096bf5ae9d7528c34b..19c56317297f1bd7fc82420664615475604999df 100644 (file)
@@ -354,7 +354,6 @@ from .lecture2go import Lecture2GoIE
 from .lemonde import LemondeIE
 from .letv import (
     LetvIE,
-    LetvTvIE,
     LetvPlaylistIE,
     LetvCloudIE,
 )
index ba8126f75e36d92c61086bbc7c57de1b11ed0b77..ce25bb4dbf12b1959f36ac62b20570c7a1bd82c5 100644 (file)
@@ -195,8 +195,9 @@ class LetvIE(InfoExtractor):
         }
 
 
-class LetvTvIE(InfoExtractor):
-    _VALID_URL = r'http://www\.le\.com/tv/(?P<id>\d+)\.html'
+class LetvPlaylistIE(InfoExtractor):
+    _VALID_URL = r'http://[a-z]+\.le\.com/[a-z]+/(?P<id>[a-z0-9_]+)'
+
     _TESTS = [{
         'url': 'http://www.le.com/tv/46177.html',
         'info_dict': {
@@ -205,29 +206,7 @@ class LetvTvIE(InfoExtractor):
             'description': 'md5:395666ff41b44080396e59570dbac01c'
         },
         'playlist_count': 35
-    }]
-
-    def _real_extract(self, url):
-        playlist_id = self._match_id(url)
-        page = self._download_webpage(url, playlist_id)
-
-        # Currently old domain names are still used in playlists
-        media_ids = orderedSet(re.findall(
-            r'http://www\.letv\.com/ptv/vplay/(\d+)\.html', page))
-        entries = [self.url_result(LetvIE._URL_TEMPLATE % media_id, ie='Letv')
-                   for media_id in media_ids]
-
-        title = self._html_search_meta('keywords', page,
-                                       fatal=False).split(',')[0]
-        description = self._html_search_meta('description', page, fatal=False)
-
-        return self.playlist_result(entries, playlist_id, playlist_title=title,
-                                    playlist_description=description)
-
-
-class LetvPlaylistIE(LetvTvIE):
-    _VALID_URL = r'http://tv\.le\.com/[a-z]+/(?P<id>[a-z]+)/index\.s?html'
-    _TESTS = [{
+    }, {
         'url': 'http://tv.le.com/izt/wuzetian/index.html',
         'info_dict': {
             'id': 'wuzetian',
@@ -246,8 +225,35 @@ class LetvPlaylistIE(LetvTvIE):
             'description': 'md5:b1eef244f45589a7b5b1af9ff25a4489'
         },
         'playlist_mincount': 7
+    }, {
+        'url': 'http://www.le.com/comic/92063.html',
+        'only_matching': True,
+    }, {
+        'url': 'http://list.le.com/listn/c1009_sc532002_d2_p1_o1.html',
+        'only_matching': True,
     }]
 
+    @classmethod
+    def suitable(cls, url):
+        return False if LetvIE.suitable(url) else super(LetvPlaylistIE, cls).suitable(url)
+
+    def _real_extract(self, url):
+        playlist_id = self._match_id(url)
+        page = self._download_webpage(url, playlist_id)
+
+        # Currently old domain names are still used in playlists
+        media_ids = orderedSet(re.findall(
+            r'<a[^>]+href="http://www\.letv\.com/ptv/vplay/(\d+)\.html', page))
+        entries = [self.url_result(LetvIE._URL_TEMPLATE % media_id, ie='Letv')
+                   for media_id in media_ids]
+
+        title = self._html_search_meta('keywords', page,
+                                       fatal=False).split(',')[0]
+        description = self._html_search_meta('description', page, fatal=False)
+
+        return self.playlist_result(entries, playlist_id, playlist_title=title,
+                                    playlist_description=description)
+
 
 class LetvCloudIE(InfoExtractor):
     IE_DESC = '乐视云'