浏览代码

[history] fix signature and media url extraction(fixes #8240)

remitamine 9 年之前
父节点
当前提交
ffbc0baf72
共有 2 个文件被更改,包括 14 次插入5 次删除
  1. 13 4
      youtube_dl/extractor/history.py
  2. 1 1
      youtube_dl/extractor/theplatform.py

+ 13 - 4
youtube_dl/extractor/history.py

@@ -2,6 +2,7 @@ from __future__ import unicode_literals
 
 
 from .common import InfoExtractor
 from .common import InfoExtractor
 from ..utils import smuggle_url
 from ..utils import smuggle_url
+from ..compat import compat_urllib_parse
 
 
 
 
 class HistoryIE(InfoExtractor):
 class HistoryIE(InfoExtractor):
@@ -19,13 +20,21 @@ class HistoryIE(InfoExtractor):
         'add_ie': ['ThePlatform'],
         'add_ie': ['ThePlatform'],
     }]
     }]
 
 
+    _VIDEO_URL_RE = [
+        r"media_url\s*=\s*'[^']'",
+        r'data-mediaurl="([^"]+)"'
+    ]
+
     def _real_extract(self, url):
     def _real_extract(self, url):
         video_id = self._match_id(url)
         video_id = self._match_id(url)
 
 
         webpage = self._download_webpage(url, video_id)
         webpage = self._download_webpage(url, video_id)
 
 
-        video_url = self._search_regex(
-            r'data-href="[^"]*/%s"[^>]+data-release-url="([^"]+)"' % video_id,
-            webpage, 'video url')
+        media_url = self._search_regex(self._VIDEO_URL_RE, webpage, 'video url')
+
+        pdk_signature = webpage = self._download_webpage(
+            'https://signature.video.aetndigital.com/?' +
+            compat_urllib_parse.urlencode({'url': media_url}), video_id)
 
 
-        return self.url_result(smuggle_url(video_url, {'sig': {'key': 'crazyjava', 'secret': 's3cr3t'}}))
+        return self.url_result(smuggle_url(
+            media_url + '?mbr=true&format=smil&sig=' + pdk_signature, {'force_smil_url': True}))

+ 1 - 1
youtube_dl/extractor/theplatform.py

@@ -85,7 +85,7 @@ class ThePlatformBaseIE(InfoExtractor):
 class ThePlatformIE(ThePlatformBaseIE):
 class ThePlatformIE(ThePlatformBaseIE):
     _VALID_URL = r'''(?x)
     _VALID_URL = r'''(?x)
         (?:https?://(?:link|player)\.theplatform\.com/[sp]/(?P<provider_id>[^/]+)/
         (?:https?://(?:link|player)\.theplatform\.com/[sp]/(?P<provider_id>[^/]+)/
-           (?:(?P<media>(?:[^/]+/)+select/media/)|(?P<config>(?:[^/\?]+/(?:swf|config)|onsite)/select/))?
+           (?:(?P<media>(?:(?:[^/]+/)+select/)?media/)|(?P<config>(?:[^/\?]+/(?:swf|config)|onsite)/select/))?
          |theplatform:)(?P<id>[^/\?&]+)'''
          |theplatform:)(?P<id>[^/\?&]+)'''
 
 
     _TESTS = [{
     _TESTS = [{