Merge branch 'akamai_pv' of https://github.com/remitamine/youtube-dl into remitamine...
authorYen Chi Hsuan <yan12125@gmail.com>
Mon, 25 Apr 2016 13:02:02 +0000 (21:02 +0800)
committerYen Chi Hsuan <yan12125@gmail.com>
Mon, 25 Apr 2016 13:02:02 +0000 (21:02 +0800)
1  2 
youtube_dl/extractor/common.py

index 02cd2c003ce0ab7b305d67e4f0e9c61304795620,e3d1dd076364261dcd2e8860f281a48dfc2b39cc..a285ee7d898e0777005ff625b5fcc44f1013d683
@@@ -993,19 -854,15 +993,26 @@@ class InfoExtractor(object)
              'Unable to download f4m manifest',
              # Some manifests may be malformed, e.g. prosiebensat1 generated manifests
              # (see https://github.com/rg3/youtube-dl/issues/6215#issuecomment-121704244)
 -            transform_source=transform_source)
 +            transform_source=transform_source,
 +            fatal=fatal)
 +
 +        if manifest is False:
 +            return []
  
 +        return self._parse_f4m_formats(
 +            manifest, manifest_url, video_id, preference=preference, f4m_id=f4m_id,
 +            transform_source=transform_source, fatal=fatal)
 +
 +    def _parse_f4m_formats(self, manifest, manifest_url, video_id, preference=None, f4m_id=None,
 +                           transform_source=lambda s: fix_xml_ampersands(s).strip(),
 +                           fatal=True):
+         # currently youtube-dl cannot decode the playerVerificationChallenge as Akamai uses Adobe Alchemy
+         akamai_pv = manifest.find('{http://ns.adobe.com/f4m/1.0}pv-2.0')
+         if akamai_pv is not None and ';' in akamai_pv.text:
+             playerVerificationChallenge = akamai_pv.text.split(';')[0]
+             if playerVerificationChallenge.strip() != '':
+                 return []
          formats = []
          manifest_version = '1.0'
          media_nodes = manifest.findall('{http://ns.adobe.com/f4m/1.0}media')