浏览代码

[abcnews,chilloutsoze,cracked,vice,vk] Use dedicated YouTube embeds extraction routines

Sergey M․ 8 年之前
父节点
当前提交
5113b69124

+ 3 - 4
youtube_dl/extractor/abcnews.py

@@ -7,6 +7,7 @@ import time
 
 
 from .amp import AMPIE
 from .amp import AMPIE
 from .common import InfoExtractor
 from .common import InfoExtractor
+from .youtube import YoutubeIE
 from ..compat import compat_urlparse
 from ..compat import compat_urlparse
 
 
 
 
@@ -108,9 +109,7 @@ class AbcNewsIE(InfoExtractor):
             r'window\.abcnvideo\.url\s*=\s*"([^"]+)"', webpage, 'video URL')
             r'window\.abcnvideo\.url\s*=\s*"([^"]+)"', webpage, 'video URL')
         full_video_url = compat_urlparse.urljoin(url, video_url)
         full_video_url = compat_urlparse.urljoin(url, video_url)
 
 
-        youtube_url = self._html_search_regex(
-            r'<iframe[^>]+src="(https://www\.youtube\.com/embed/[^"]+)"',
-            webpage, 'YouTube URL', default=None)
+        youtube_url = YoutubeIE._extract_url(webpage)
 
 
         timestamp = None
         timestamp = None
         date_str = self._html_search_regex(
         date_str = self._html_search_regex(
@@ -140,7 +139,7 @@ class AbcNewsIE(InfoExtractor):
         }
         }
 
 
         if youtube_url:
         if youtube_url:
-            entries = [entry, self.url_result(youtube_url, 'Youtube')]
+            entries = [entry, self.url_result(youtube_url, ie=YoutubeIE.ie_key())]
             return self.playlist_result(entries)
             return self.playlist_result(entries)
 
 
         return entry
         return entry

+ 4 - 5
youtube_dl/extractor/chilloutzone.py

@@ -5,6 +5,7 @@ import base64
 import json
 import json
 
 
 from .common import InfoExtractor
 from .common import InfoExtractor
+from .youtube import YoutubeIE
 from ..utils import (
 from ..utils import (
     clean_html,
     clean_html,
     ExtractorError
     ExtractorError
@@ -70,11 +71,9 @@ class ChilloutzoneIE(InfoExtractor):
 
 
         # If nativePlatform is None a fallback mechanism is used (i.e. youtube embed)
         # If nativePlatform is None a fallback mechanism is used (i.e. youtube embed)
         if native_platform is None:
         if native_platform is None:
-            youtube_url = self._html_search_regex(
-                r'<iframe.* src="((?:https?:)?//(?:[^.]+\.)?youtube\.com/.+?)"',
-                webpage, 'fallback video URL', default=None)
-            if youtube_url is not None:
-                return self.url_result(youtube_url, ie='Youtube')
+            youtube_url = YoutubeIE._extract_url(webpage)
+            if youtube_url:
+                return self.url_result(youtube_url, ie=YoutubeIE.ie_key())
 
 
         # Non Fallback: Decide to use native source (e.g. youtube or vimeo) or
         # Non Fallback: Decide to use native source (e.g. youtube or vimeo) or
         # the own CDN
         # the own CDN

+ 3 - 4
youtube_dl/extractor/cracked.py

@@ -3,6 +3,7 @@ from __future__ import unicode_literals
 import re
 import re
 
 
 from .common import InfoExtractor
 from .common import InfoExtractor
+from .youtube import YoutubeIE
 from ..utils import (
 from ..utils import (
     parse_iso8601,
     parse_iso8601,
     str_to_int,
     str_to_int,
@@ -41,11 +42,9 @@ class CrackedIE(InfoExtractor):
 
 
         webpage = self._download_webpage(url, video_id)
         webpage = self._download_webpage(url, video_id)
 
 
-        youtube_url = self._search_regex(
-            r'<iframe[^>]+src="((?:https?:)?//www\.youtube\.com/embed/[^"]+)"',
-            webpage, 'youtube url', default=None)
+        youtube_url = YoutubeIE._extract_url(webpage)
         if youtube_url:
         if youtube_url:
-            return self.url_result(youtube_url, 'Youtube')
+            return self.url_result(youtube_url, ie=YoutubeIE.ie_key())
 
 
         video_url = self._html_search_regex(
         video_url = self._html_search_regex(
             [r'var\s+CK_vidSrc\s*=\s*"([^"]+)"', r'<video\s+src="([^"]+)"'],
             [r'var\s+CK_vidSrc\s*=\s*"([^"]+)"', r'<video\s+src="([^"]+)"'],

+ 3 - 4
youtube_dl/extractor/vice.py

@@ -7,6 +7,7 @@ import hashlib
 import json
 import json
 
 
 from .adobepass import AdobePassIE
 from .adobepass import AdobePassIE
+from .youtube import YoutubeIE
 from .common import InfoExtractor
 from .common import InfoExtractor
 from ..compat import compat_HTTPError
 from ..compat import compat_HTTPError
 from ..utils import (
 from ..utils import (
@@ -261,11 +262,9 @@ class ViceArticleIE(InfoExtractor):
         if embed_code:
         if embed_code:
             return _url_res('ooyala:%s' % embed_code, 'Ooyala')
             return _url_res('ooyala:%s' % embed_code, 'Ooyala')
 
 
-        youtube_url = self._html_search_regex(
-            r'<iframe[^>]+src="(.*youtube\.com/.*)"',
-            body, 'YouTube URL', default=None)
+        youtube_url = YoutubeIE._extract_url(body)
         if youtube_url:
         if youtube_url:
-            return _url_res(youtube_url, 'Youtube')
+            return _url_res(youtube_url, YoutubeIE.ie_key())
 
 
         video_url = self._html_search_regex(
         video_url = self._html_search_regex(
             r'data-video-url="([^"]+)"',
             r'data-video-url="([^"]+)"',

+ 3 - 4
youtube_dl/extractor/vk.py

@@ -25,6 +25,7 @@ from ..utils import (
 from .dailymotion import DailymotionIE
 from .dailymotion import DailymotionIE
 from .pladform import PladformIE
 from .pladform import PladformIE
 from .vimeo import VimeoIE
 from .vimeo import VimeoIE
+from .youtube import YoutubeIE
 
 
 
 
 class VKBaseIE(InfoExtractor):
 class VKBaseIE(InfoExtractor):
@@ -345,11 +346,9 @@ class VKIE(VKBaseIE):
             if re.search(error_re, info_page):
             if re.search(error_re, info_page):
                 raise ExtractorError(error_msg % video_id, expected=True)
                 raise ExtractorError(error_msg % video_id, expected=True)
 
 
-        youtube_url = self._search_regex(
-            r'<iframe[^>]+src="((?:https?:)?//www.youtube.com/embed/[^"]+)"',
-            info_page, 'youtube iframe', default=None)
+        youtube_url = YoutubeIE._extract_url(info_page)
         if youtube_url:
         if youtube_url:
-            return self.url_result(youtube_url, 'Youtube')
+            return self.url_result(youtube_url, ie=YoutubeIE.ie_key())
 
 
         vimeo_url = VimeoIE._extract_url(url, info_page)
         vimeo_url = VimeoIE._extract_url(url, info_page)
         if vimeo_url is not None:
         if vimeo_url is not None: