summary refs log tree commit diff
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2016-10-02 03:03:41 +0800
committerYen Chi Hsuan <yan12125@gmail.com>2016-10-02 03:03:41 +0800
commitbd2644120526429783c55e885f7042633826d7da (patch)
tree78e29df6910de4a27a4f5342c230e331e66fe505
parentb19e275d99c8dfe121ba0dc3478e4eb9c83e4f9b (diff)
downloadyoutube-dl-bd2644120526429783c55e885f7042633826d7da.tar.gz
youtube-dl-bd2644120526429783c55e885f7042633826d7da.tar.xz
youtube-dl-bd2644120526429783c55e885f7042633826d7da.zip
[utils] Fix xattr error handling
-rw-r--r--youtube_dl/extractor/generic.py16
-rw-r--r--youtube_dl/utils.py1
2 files changed, 13 insertions, 4 deletions
diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py
index c1792c534..489b3c7c1 100644
--- a/youtube_dl/extractor/generic.py
+++ b/youtube_dl/extractor/generic.py
@@ -2332,12 +2332,23 @@ class GenericIE(InfoExtractor):
             info_dict.update(json_ld)
             return info_dict
 
+        # Look for HTML5 media
+        entries = self._parse_html5_media_entries(url, webpage, video_id, m3u8_id='hls')
+        if entries:
+            for entry in entries:
+                entry.update({
+                    'id': video_id,
+                    'title': video_title,
+                })
+                self._sort_formats(entry['formats'])
+            return self.playlist_result(entries)
+
         def check_video(vurl):
             if YoutubeIE.suitable(vurl):
                 return True
             vpath = compat_urlparse.urlparse(vurl).path
             vext = determine_ext(vpath)
-            return '.' in vpath and vext not in ('swf', 'png', 'jpg', 'srt', 'sbv', 'sub', 'vtt', 'ttml')
+            return '.' in vpath and vext not in ('swf', 'png', 'jpg', 'srt', 'sbv', 'sub', 'vtt', 'ttml', 'js')
 
         def filter_video(urls):
             return list(filter(check_video, urls))
@@ -2388,9 +2399,6 @@ class GenericIE(InfoExtractor):
             if m_video_type is not None:
                 found = filter_video(re.findall(r'<meta.*?property="og:video".*?content="(.*?)"', webpage))
         if not found:
-            # HTML5 video
-            found = re.findall(r'(?s)<(?:video|audio)[^<]*(?:>.*?<source[^>]*)?\s+src=["\'](.*?)["\']', webpage)
-        if not found:
             REDIRECT_REGEX = r'[0-9]{,2};\s*(?:URL|url)=\'?([^\'"]+)'
             found = re.search(
                 r'(?i)<meta\s+(?=(?:[a-z-]+="[^"]+"\s+)*http-equiv="refresh")'
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index c259f8bff..044520037 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -782,6 +782,7 @@ class XAttrMetadataError(Exception):
     def __init__(self, code=None, msg='Unknown error'):
         super(XAttrMetadataError, self).__init__(msg)
         self.code = code
+        self.msg = msg
 
         # Parsing code and msg
         if (self.code in (errno.ENOSPC, errno.EDQUOT) or