1
0
mirror of https://github.com/l1ving/youtube-dl synced 2025-03-13 20:27:27 +08:00

[gaskrank] Add new extractor - more requested fixes

This commit is contained in:
motophil 2017-01-22 18:07:08 +01:00
parent b7c7d29085
commit 2c88df8d54

View File

@ -7,7 +7,7 @@ from ..utils import js_to_json
class GaskrankIE(InfoExtractor): class GaskrankIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?gaskrank\.tv/tv(?:/[^/]+)+/(?P<id>[^/]+)\.htm' _VALID_URL = r'https?://(?:www\.)?gaskrank\.tv/tv/(?P<categories>[^/]+)/(?P<id>[^/]+)\.html?'
_TEST = { _TEST = {
'url': 'http://www.gaskrank.tv/tv/motorrad-fun/strike-einparken-durch-anfaenger-crash-mit-groesserem-flurschaden.htm', 'url': 'http://www.gaskrank.tv/tv/motorrad-fun/strike-einparken-durch-anfaenger-crash-mit-groesserem-flurschaden.htm',
'md5': '1ae88dbac97887d85ebd1157a95fc4f9', 'md5': '1ae88dbac97887d85ebd1157a95fc4f9',
@ -16,6 +16,8 @@ class GaskrankIE(InfoExtractor):
'ext': 'mp4', 'ext': 'mp4',
'title': 'Strike! Einparken können nur Männer - Flurschaden hält sich in Grenzen *lol*', 'title': 'Strike! Einparken können nur Männer - Flurschaden hält sich in Grenzen *lol*',
'thumbnail': r're:^https?://.*\.jpg$', 'thumbnail': r're:^https?://.*\.jpg$',
'categories': ['motorrad-fun'],
'display_id': 'strike-einparken-durch-anfaenger-crash-mit-groesserem-flurschaden',
} }
} }
@ -25,20 +27,20 @@ class GaskrankIE(InfoExtractor):
display_id = self._match_id(url) display_id = self._match_id(url)
webpage = self._download_webpage(url, display_id) webpage = self._download_webpage(url, display_id)
video_id = self._search_regex(r'https?://movies\.gaskrank\.tv/([^-]*?)\.mp4', webpage, 'video id') categories = [re.match(self._VALID_URL, url).group('categories')]
categories = self._search_regex(r'https?://(?:www\.)?gaskrank\.tv/tv(?:/([^/]+))+/[^/]+\.htm', url, 'categories', default=None) title = self._search_regex(r'movieName\s*:\s*\'([^\']*)\'', webpage, 'title')
title = self._search_regex(r'movieName[^\']*?\'([^\']*?)\'', webpage, 'title') thumbnail = self._search_regex(r'poster\s*:\s*\'([^\']*)\'', webpage, 'thumbnail', default=None)
thumbnail = self._search_regex(r'poster[^\']*?\'([^\']*?)\'', webpage, 'thumbnail', default=None)
playlist = self._parse_json( playlist = self._parse_json(
self._search_regex(r'playlist:[\s\S]*?\[([\s\S]*?)]', webpage, 'playlist', default='{}'), self._search_regex(r'playlist\s*:\s*\[([^\]]*)\]', webpage, 'playlist', default='{}'),
video_id, transform_source=fix_json, fatal=False) 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 = [] formats = []
for key in sorted(playlist): for key in playlist:
formats.append({ formats.append({
'url': playlist[key]['src'], 'url': playlist[key]['src'],
'format_id': key, 'format_id': key,
'quality': playlist[key].get('quality'), 'quality': playlist[key].get('quality')})
'resolution': playlist[key].get('quality')}) self._sort_formats(formats, field_preference=['format_id'])
return { return {
'id': video_id, 'id': video_id,