diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2015-01-25 21:39:50 +0100 | 
|---|---|---|
| committer | Philipp Hagemeister <phihag@phihag.de> | 2015-01-25 21:39:50 +0100 | 
| commit | 71e7da653382b38d8cecde20d60f722417f1cf93 (patch) | |
| tree | 8218d61b1f77f756ec5d2f487b5f3e0f93dcf543 /youtube_dl/extractor/common.py | |
| parent | b1b0b1ca3030a2b04dd94ec28d5ece3fda88a282 (diff) | |
| parent | 80a49d3d7bcd235ba15bd491cc62a0345c9abce1 (diff) | |
Merge branch 'master' of github.com:rg3/youtube-dl
Diffstat (limited to 'youtube_dl/extractor/common.py')
| -rw-r--r-- | youtube_dl/extractor/common.py | 23 | 
1 files changed, 23 insertions, 0 deletions
diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 388c55e99..478232682 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -14,6 +14,7 @@ import xml.etree.ElementTree  from ..compat import (      compat_cookiejar, +    compat_HTTPError,      compat_http_client,      compat_urllib_error,      compat_urllib_parse_urlparse, @@ -26,6 +27,7 @@ from ..utils import (      compiled_regex_type,      ExtractorError,      float_or_none, +    HEADRequest,      int_or_none,      RegexNotFoundError,      sanitize_filename, @@ -716,6 +718,27 @@ class InfoExtractor(object):              )          formats.sort(key=_formats_key) +    def _check_formats(self, formats, video_id): +        if formats: +            formats[:] = filter( +                lambda f: self._is_valid_url( +                    f['url'], video_id, +                    item='%s video format' % f.get('format_id') if f.get('format_id') else 'video'), +                formats) + +    def _is_valid_url(self, url, video_id, item='video'): +        try: +            self._request_webpage( +                HEADRequest(url), video_id, +                'Checking %s URL' % item) +            return True +        except ExtractorError as e: +            if isinstance(e.cause, compat_HTTPError): +                self.report_warning( +                    '%s URL is invalid, skipping' % item, video_id) +                return False +            raise +      def http_scheme(self):          """ Either "http:" or "https:", depending on the user's preferences """          return (  | 
