[Cinemassacre] Add detection for videos from blip.tv
authorYen Chi Hsuan <yan12125@gmail.com>
Tue, 21 Apr 2015 05:48:02 +0000 (13:48 +0800)
committerYen Chi Hsuan <yan12125@gmail.com>
Tue, 21 Apr 2015 05:48:02 +0000 (13:48 +0800)
youtube_dl/extractor/bliptv.py
youtube_dl/extractor/generic.py
youtube_dl/extractor/screenwavemedia.py

index b632ce967d515e8c819d1361afcaeddae99f8e9e..fb56cd78d07ab396ae26ff5a15ac7ebdef933237 100644 (file)
@@ -102,6 +102,15 @@ class BlipTVIE(InfoExtractor):
         },
     ]
 
+    @staticmethod
+    def _extract_url(webpage):
+        mobj = re.search(r'<meta\s[^>]*https?://api\.blip\.tv/\w+/redirect/\w+/(\d+)', webpage)
+        if mobj:
+            return 'http://blip.tv/a/a-' + mobj.group(1)
+        mobj = re.search(r'<(?:iframe|embed|object)\s[^>]*(https?://(?:\w+\.)?blip\.tv/(?:play/|api\.swf#)[a-zA-Z0-9_]+)', webpage)
+        if mobj:
+            return mobj.group(1)
+
     def _real_extract(self, url):
         mobj = re.match(self._VALID_URL, url)
         lookup_id = mobj.group('lookup_id')
index ec4d0c210431a9afe772241dea2384cff8526985..4946cc1325b0ffdecca0767e7532ddcb4741a028 100644 (file)
@@ -36,6 +36,7 @@ from .smotri import SmotriIE
 from .condenast import CondeNastIE
 from .udn import UDNEmbedIE
 from .senateisvp import SenateISVPIE
+from .bliptv import BlipTVIE
 
 
 class GenericIE(InfoExtractor):
@@ -1073,12 +1074,9 @@ class GenericIE(InfoExtractor):
             }
 
         # Look for embedded blip.tv player
-        mobj = re.search(r'<meta\s[^>]*https?://api\.blip\.tv/\w+/redirect/\w+/(\d+)', webpage)
-        if mobj:
-            return self.url_result('http://blip.tv/a/a-' + mobj.group(1), 'BlipTV')
-        mobj = re.search(r'<(?:iframe|embed|object)\s[^>]*(https?://(?:\w+\.)?blip\.tv/(?:play/|api\.swf#)[a-zA-Z0-9_]+)', webpage)
-        if mobj:
-            return self.url_result(mobj.group(1), 'BlipTV')
+        bliptv_url = BlipTVIE._extract_url(webpage)
+        if bliptv_url:
+            return self.url_result(bliptv_url, 'BlipTV')
 
         # Look for embedded condenast player
         matches = re.findall(
index 6c9fdb7c1aceb35efc166c9207fd503603040b9b..b515b11b45855fb5148b19a6ee5346e7f3b069a5 100644 (file)
@@ -7,7 +7,9 @@ from .common import InfoExtractor
 from ..utils import (
     int_or_none,
     unified_strdate,
+    ExtractorError
 )
+from .bliptv import BlipTVIE
 
 
 class ScreenwaveMediaIE(InfoExtractor):
@@ -104,6 +106,20 @@ class CinemassacreIE(InfoExtractor):
                 'upload_date': '20131002',
                 'title': 'The Mummy’s Hand (1940)',
             },
+        },
+        {
+            'url': 'http://cinemassacre.com/2006/12/07/chronologically-confused-about-bad-movie-and-video-game-sequel-titles/',
+            'md5': 'ca9b3c8dd5a66f9375daeb5135f5a3de',
+            'info_dict': {
+                'id': '4065369',
+                'ext': 'flv',
+                'title': 'AVGN: Chronologically Confused about Bad Movie and Video Game Sequel Titles',
+                'upload_date': '20061207',
+                'uploader': 'cinemassacre',
+                'uploader_id': '250778',
+                'timestamp': 1283233867,
+                'description': 'md5:0a108c78d130676b207d0f6d029ecffd',
+            }
         }
     ]
 
@@ -116,7 +132,12 @@ class CinemassacreIE(InfoExtractor):
 
         playerdata_url = self._search_regex(
             r'src="(http://player\.screenwavemedia\.com/play/[a-zA-Z]+\.php\?[^"]*\bid=.+?)"',
-            webpage, 'player data URL')
+            webpage, 'player data URL', default=None)
+        if not playerdata_url:
+            playerdata_url = BlipTVIE._extract_url(webpage)
+        if not playerdata_url:
+            raise ExtractorError('Unable to find player data')
+
         video_title = self._html_search_regex(
             r'<title>(?P<title>.+?)\|', webpage, 'title')
         video_description = self._html_search_regex(