diff options
| -rw-r--r-- | youtube_dl/extractor/soulanime.py | 10 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 11 | 
2 files changed, 19 insertions, 2 deletions
| diff --git a/youtube_dl/extractor/soulanime.py b/youtube_dl/extractor/soulanime.py index 7adb10c03..feef33e27 100644 --- a/youtube_dl/extractor/soulanime.py +++ b/youtube_dl/extractor/soulanime.py @@ -3,6 +3,10 @@ from __future__ import unicode_literals  import re  from .common import InfoExtractor +from ..utils import ( +    HEADRequest, +    urlhandle_detect_ext, +)  class SoulAnimeWatchingIE(InfoExtractor): @@ -31,8 +35,10 @@ class SoulAnimeWatchingIE(InfoExtractor):              r'<div id="download">[^<]*<a href="(?P<url>[^"]+)"', page, 'url')          video_url = "http://www.soul-anime." + domain + video_url_encoded -        vid = self._request_webpage(video_url, video_id) -        ext = vid.info().gettype().split("/")[1] +        ext_req = HEADRequest(video_url) +        ext_handle = self._request_webpage( +            ext_req, video_id, note='Determining extension') +        ext = urlhandle_detect_ext(ext_handle)          return {              'id': video_id, diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index efbe64fb3..bdfe053a7 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -1550,3 +1550,14 @@ def ytdl_is_updateable():  def args_to_str(args):      # Get a short string representation for a subprocess command      return ' '.join(shlex_quote(a) for a in args) + + +def urlhandle_detect_ext(url_handle): +    try: +        url_handle.headers +        getheader = lambda h: url_handle.headers[h] +    except AttributeError:  # Python < 3 +        getheader = url_handle.info().getheader + +    return getheader('Content-Type').split("/")[1] + | 
