diff options
Diffstat (limited to 'youtube_dl/extractor/gaskrank.py')
| -rw-r--r-- | youtube_dl/extractor/gaskrank.py | 106 | 
1 files changed, 42 insertions, 64 deletions
| diff --git a/youtube_dl/extractor/gaskrank.py b/youtube_dl/extractor/gaskrank.py index 36ba7d8cf..1726a6704 100644 --- a/youtube_dl/extractor/gaskrank.py +++ b/youtube_dl/extractor/gaskrank.py @@ -6,62 +6,52 @@ from .common import InfoExtractor  from ..utils import (      float_or_none,      int_or_none, -    js_to_json,      unified_strdate,  )  class GaskrankIE(InfoExtractor): -    """InfoExtractor for gaskrank.tv""" -    _VALID_URL = r'https?://(?:www\.)?gaskrank\.tv/tv/(?P<categories>[^/]+)/(?P<id>[^/]+)\.html?' -    _TESTS = [ -        { -            'url': 'http://www.gaskrank.tv/tv/motorrad-fun/strike-einparken-durch-anfaenger-crash-mit-groesserem-flurschaden.htm', -            'md5': '1ae88dbac97887d85ebd1157a95fc4f9', -            'info_dict': { -                'id': '201601/26955', -                'ext': 'mp4', -                'title': 'Strike! Einparken können nur Männer - Flurschaden hält sich in Grenzen *lol*', -                'thumbnail': r're:^https?://.*\.jpg$', -                'categories': ['motorrad-fun'], -                'display_id': 'strike-einparken-durch-anfaenger-crash-mit-groesserem-flurschaden', -                'uploader_id': 'Bikefun', -                'upload_date': '20170110', -                'uploader_url': None, -            } -        }, -        { -            'url': 'http://www.gaskrank.tv/tv/racing/isle-of-man-tt-2011-michael-du-15920.htm', -            'md5': 'c33ee32c711bc6c8224bfcbe62b23095', -            'info_dict': { -                'id': '201106/15920', -                'ext': 'mp4', -                'title': 'Isle of Man - Michael Dunlop vs Guy Martin - schwindelig kucken', -                'thumbnail': r're:^https?://.*\.jpg$', -                'categories': ['racing'], -                'display_id': 'isle-of-man-tt-2011-michael-du-15920', -                'uploader_id': 'IOM', -                'upload_date': '20160506', -                'uploader_url': 'www.iomtt.com', -            } +    _VALID_URL = r'https?://(?:www\.)?gaskrank\.tv/tv/(?P<categories>[^/]+)/(?P<id>[^/]+)\.htm' +    _TESTS = [{ +        'url': 'http://www.gaskrank.tv/tv/motorrad-fun/strike-einparken-durch-anfaenger-crash-mit-groesserem-flurschaden.htm', +        'md5': '1ae88dbac97887d85ebd1157a95fc4f9', +        'info_dict': { +            'id': '201601/26955', +            'ext': 'mp4', +            'title': 'Strike! Einparken können nur Männer - Flurschaden hält sich in Grenzen *lol*', +            'thumbnail': r're:^https?://.*\.jpg$', +            'categories': ['motorrad-fun'], +            'display_id': 'strike-einparken-durch-anfaenger-crash-mit-groesserem-flurschaden', +            'uploader_id': 'Bikefun', +            'upload_date': '20170110', +            'uploader_url': None,          } -    ] +    }, { +        'url': 'http://www.gaskrank.tv/tv/racing/isle-of-man-tt-2011-michael-du-15920.htm', +        'md5': 'c33ee32c711bc6c8224bfcbe62b23095', +        'info_dict': { +            'id': '201106/15920', +            'ext': 'mp4', +            'title': 'Isle of Man - Michael Dunlop vs Guy Martin - schwindelig kucken', +            'thumbnail': r're:^https?://.*\.jpg$', +            'categories': ['racing'], +            'display_id': 'isle-of-man-tt-2011-michael-du-15920', +            'uploader_id': 'IOM', +            'upload_date': '20170523', +            'uploader_url': 'www.iomtt.com', +        } +    }]      def _real_extract(self, url): -        """extract information from gaskrank.tv""" -        def fix_json(code): -            """Removes trailing comma in json: {{},} --> {{}}""" -            return re.sub(r',\s*}', r'}', js_to_json(code)) -          display_id = self._match_id(url) +          webpage = self._download_webpage(url, display_id) + +        title = self._og_search_title( +            webpage, default=None) or self._html_search_meta( +            'title', webpage, fatal=True) +          categories = [re.match(self._VALID_URL, url).group('categories')] -        title = self._search_regex( -            r'movieName\s*:\s*\'([^\']*)\'', -            webpage, 'title') -        thumbnail = self._search_regex( -            r'poster\s*:\s*\'([^\']*)\'', -            webpage, 'thumbnail', default=None)          mobj = re.search(              r'Video von:\s*(?P<uploader_id>[^|]*?)\s*\|\s*vom:\s*(?P<upload_date>[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9][0-9])', @@ -89,29 +79,14 @@ class GaskrankIE(InfoExtractor):          if average_rating:              average_rating = float_or_none(average_rating.replace(',', '.')) -        playlist = self._parse_json( -            self._search_regex( -                r'playlist\s*:\s*\[([^\]]*)\]', -                webpage, 'playlist', default='{}'), -            display_id, transform_source=fix_json, fatal=False) -          video_id = self._search_regex(              r'https?://movies\.gaskrank\.tv/([^-]*?)(-[^\.]*)?\.mp4', -            playlist.get('0').get('src'), 'video id') - -        formats = [] -        for key in playlist: -            formats.append({ -                'url': playlist[key]['src'], -                'format_id': key, -                'quality': playlist[key].get('quality')}) -        self._sort_formats(formats, field_preference=['format_id']) +            webpage, 'video id', default=display_id) -        return { +        entry = self._parse_html5_media_entries(url, webpage, video_id)[0] +        entry.update({              'id': video_id,              'title': title, -            'formats': formats, -            'thumbnail': thumbnail,              'categories': categories,              'display_id': display_id,              'uploader_id': uploader_id, @@ -120,4 +95,7 @@ class GaskrankIE(InfoExtractor):              'tags': tags,              'view_count': view_count,              'average_rating': average_rating, -        } +        }) +        self._sort_formats(entry['formats']) + +        return entry | 
