diff options
Diffstat (limited to 'youtube_dl/extractor')
| -rw-r--r-- | youtube_dl/extractor/izlesene.py | 55 | 
1 files changed, 32 insertions, 23 deletions
diff --git a/youtube_dl/extractor/izlesene.py b/youtube_dl/extractor/izlesene.py index 5b2095490..f8fca6c8f 100644 --- a/youtube_dl/extractor/izlesene.py +++ b/youtube_dl/extractor/izlesene.py @@ -2,7 +2,10 @@  from __future__ import unicode_literals  from .common import InfoExtractor -from ..compat import compat_urllib_parse_unquote +from ..compat import ( +    compat_str, +    compat_urllib_parse_unquote, +)  from ..utils import (      determine_ext,      float_or_none, @@ -55,12 +58,33 @@ class IzleseneIE(InfoExtractor):      def _real_extract(self, url):          video_id = self._match_id(url) -        url = 'http://www.izlesene.com/video/%s' % video_id -        webpage = self._download_webpage(url, video_id) +        webpage = self._download_webpage('http://www.izlesene.com/video/%s' % video_id, video_id) + +        video = self._parse_json( +            self._search_regex( +                r'videoObj\s*=\s*({.+?})\s*;\s*\n', webpage, 'streams'), +            video_id) + +        title = video.get('videoTitle') or self._og_search_title(webpage) + +        formats = [] +        for stream in video['media']['level']: +            source_url = stream.get('source') +            if not source_url or not isinstance(source_url, compat_str): +                continue +            ext = determine_ext(url, 'mp4') +            quality = stream.get('value') +            height = int_or_none(quality) +            formats.append({ +                'format_id': '%sp' % quality if quality else 'sd', +                'url': compat_urllib_parse_unquote(source_url), +                'ext': ext, +                'height': height, +            }) +        self._sort_formats(formats) -        title = self._og_search_title(webpage)          description = self._og_search_description(webpage, default=None) -        thumbnail = self._proto_relative_url( +        thumbnail = video.get('posterURL') or self._proto_relative_url(              self._og_search_thumbnail(webpage), scheme='http:')          uploader = self._html_search_regex( @@ -69,30 +93,15 @@ class IzleseneIE(InfoExtractor):          timestamp = parse_iso8601(self._html_search_meta(              'uploadDate', webpage, 'upload date')) -        duration = float_or_none(self._html_search_regex( -            r'videoduration\s*=\s*\'([^\']+)\'', -            webpage, 'duration', fatal=False), scale=1000) +        duration = float_or_none(video.get('duration') or self._html_search_regex( +            r'videoduration["\']?\s*=\s*(["\'])(?P<value>(?:(?!\1).)+)\1', +            webpage, 'duration', fatal=False, group='value'), scale=1000)          view_count = str_to_int(get_element_by_id('videoViewCount', webpage))          comment_count = self._html_search_regex(              r'comment_count\s*=\s*\'([^\']+)\';',              webpage, 'comment_count', fatal=False) -        streams_json = self._html_search_regex( -            r'_videoObj\s*=\s*(.+);', webpage, 'streams') -        streams = self._parse_json(streams_json, video_id) - -        formats = [] -        for stream in streams.get('media').get('level'): -            url = stream.get('source') -            ext = determine_ext(url, 'mp4') -            quality = stream.get('value') -            formats.append({ -                'format_id': '%sp' % quality, -                'url': compat_urllib_parse_unquote(url), -                'ext': ext, -            }) -          return {              'id': video_id,              'title': title,  | 
