[downloader/f4m] Fix malformed manifests (Closes #7823)
authorSergey M․ <dstftw@gmail.com>
Thu, 10 Dec 2015 16:59:50 +0000 (22:59 +0600)
committerSergey M․ <dstftw@gmail.com>
Thu, 10 Dec 2015 16:59:50 +0000 (22:59 +0600)
youtube_dl/downloader/f4m.py

index 6170cc1552194104ea1f029ec9b54c2b051e7a9c..7819a91dcb2f5108b0c6690f05cc6579d2d4362c 100644 (file)
@@ -15,6 +15,7 @@ from ..compat import (
 )
 from ..utils import (
     encodeFilename,
+    fix_xml_ampersands,
     sanitize_open,
     struct_pack,
     struct_unpack,
@@ -288,7 +289,10 @@ class F4mFD(FragmentFD):
         self.to_screen('[%s] Downloading f4m manifest' % self.FD_NAME)
         urlh = self.ydl.urlopen(man_url)
         man_url = urlh.geturl()
-        manifest = urlh.read()
+        # Some manifests may be malformed, e.g. prosiebensat1 generated manifests
+        # (see https://github.com/rg3/youtube-dl/issues/6215#issuecomment-121704244
+        # and https://github.com/rg3/youtube-dl/issues/7823)
+        manifest = fix_xml_ampersands(urlh.read()).strip()
 
         doc = compat_etree_fromstring(manifest)
         formats = [(int(f.attrib.get('bitrate', -1)), f)