From 9b3cd9603440cb13c4b9aea34e53e1f2b3838bd4 Mon Sep 17 00:00:00 2001 From: motophil Date: Sun, 19 Mar 2017 12:54:02 +0100 Subject: [PATCH 1/3] [Gaskrank] fix for broken site. --- youtube_dl/extractor/gaskrank.py | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/youtube_dl/extractor/gaskrank.py b/youtube_dl/extractor/gaskrank.py index 36ba7d8cf..bb9668606 100644 --- a/youtube_dl/extractor/gaskrank.py +++ b/youtube_dl/extractor/gaskrank.py @@ -6,7 +6,6 @@ from .common import InfoExtractor from ..utils import ( float_or_none, int_or_none, - js_to_json, unified_strdate, ) @@ -49,18 +48,15 @@ class GaskrankIE(InfoExtractor): 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) categories = [re.match(self._VALID_URL, url).group('categories')] title = self._search_regex( - r'movieName\s*:\s*\'([^\']*)\'', + r']+itemprop\s*=\s*"name"[^>]+content\s*=\s*"([^"]+)"', webpage, 'title') thumbnail = self._search_regex( - r'poster\s*:\s*\'([^\']*)\'', + r']+itemprop\s*=\s*"thumbnail"[^>]+content\s*=\s*"([^"]+)"', webpage, 'thumbnail', default=None) mobj = re.search( @@ -89,23 +85,22 @@ 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') + webpage, 'video id') + + playlist = re.findall( + r']+)', + webpage) formats = [] - for key in playlist: + for entry in playlist: + url = self._search_regex(r'src\s*=\s*"([^"]+)"', entry, 'url') + label = self._search_regex(r'label\s*=\s*"([^"]+)"', entry, 'label') formats.append({ - 'url': playlist[key]['src'], - 'format_id': key, - 'quality': playlist[key].get('quality')}) - self._sort_formats(formats, field_preference=['format_id']) + 'url': url, + 'format_id': label, + 'quality': label}) return { 'id': video_id, From 334fdb192237f767abd95618806bb349f45324c3 Mon Sep 17 00:00:00 2001 From: motophil Date: Sun, 19 Mar 2017 16:45:30 +0100 Subject: [PATCH 2/3] [Gaskrank] fix for broken site. - requested fix. --- youtube_dl/extractor/gaskrank.py | 46 ++++++++++++-------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/youtube_dl/extractor/gaskrank.py b/youtube_dl/extractor/gaskrank.py index bb9668606..86bee9ceb 100644 --- a/youtube_dl/extractor/gaskrank.py +++ b/youtube_dl/extractor/gaskrank.py @@ -55,9 +55,6 @@ class GaskrankIE(InfoExtractor): title = self._search_regex( r']+itemprop\s*=\s*"name"[^>]+content\s*=\s*"([^"]+)"', webpage, 'title') - thumbnail = self._search_regex( - r']+itemprop\s*=\s*"thumbnail"[^>]+content\s*=\s*"([^"]+)"', - webpage, 'thumbnail', default=None) mobj = re.search( r'Video von:\s*(?P[^|]*?)\s*\|\s*vom:\s*(?P[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9][0-9])', @@ -89,30 +86,21 @@ class GaskrankIE(InfoExtractor): r'https?://movies\.gaskrank\.tv/([^-]*?)(-[^\.]*)?\.mp4', webpage, 'video id') - playlist = re.findall( - r']+)', - webpage) + entries = self._parse_html5_media_entries(url, webpage, video_id) + if entries: + for entry in entries: + entry.update({ + 'id': video_id, + 'title': title, + 'categories': categories, + 'display_id': display_id, + 'uploader_id': uploader_id, + 'upload_date': upload_date, + 'uploader_url': uploader_url, + 'tags': tags, + 'view_count': view_count, + 'average_rating': average_rating, + }) + self._sort_formats(entry['formats']) - formats = [] - for entry in playlist: - url = self._search_regex(r'src\s*=\s*"([^"]+)"', entry, 'url') - label = self._search_regex(r'label\s*=\s*"([^"]+)"', entry, 'label') - formats.append({ - 'url': url, - 'format_id': label, - 'quality': label}) - - return { - 'id': video_id, - 'title': title, - 'formats': formats, - 'thumbnail': thumbnail, - 'categories': categories, - 'display_id': display_id, - 'uploader_id': uploader_id, - 'upload_date': upload_date, - 'uploader_url': uploader_url, - 'tags': tags, - 'view_count': view_count, - 'average_rating': average_rating, - } + return self.playlist_result(entries) From cb1183729a7f4fb8098fc671c5c32f1dae048d7d Mon Sep 17 00:00:00 2001 From: motophil Date: Sun, 26 Mar 2017 11:51:08 +0200 Subject: [PATCH 3/3] [Gaskrank] fix for broken site. - requested fixes. --- youtube_dl/extractor/gaskrank.py | 37 +++++++++++++++----------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/youtube_dl/extractor/gaskrank.py b/youtube_dl/extractor/gaskrank.py index 86bee9ceb..baf513665 100644 --- a/youtube_dl/extractor/gaskrank.py +++ b/youtube_dl/extractor/gaskrank.py @@ -52,9 +52,8 @@ class GaskrankIE(InfoExtractor): display_id = self._match_id(url) webpage = self._download_webpage(url, display_id) categories = [re.match(self._VALID_URL, url).group('categories')] - title = self._search_regex( - r']+itemprop\s*=\s*"name"[^>]+content\s*=\s*"([^"]+)"', - webpage, 'title') + title = self._og_search_title(webpage, default=None) or self._html_search_meta( + 'title', webpage, fatal=True) mobj = re.search( r'Video von:\s*(?P[^|]*?)\s*\|\s*vom:\s*(?P[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9][0-9])', @@ -86,21 +85,19 @@ class GaskrankIE(InfoExtractor): r'https?://movies\.gaskrank\.tv/([^-]*?)(-[^\.]*)?\.mp4', webpage, 'video id') - entries = self._parse_html5_media_entries(url, webpage, video_id) - if entries: - for entry in entries: - entry.update({ - 'id': video_id, - 'title': title, - 'categories': categories, - 'display_id': display_id, - 'uploader_id': uploader_id, - 'upload_date': upload_date, - 'uploader_url': uploader_url, - 'tags': tags, - 'view_count': view_count, - 'average_rating': average_rating, - }) - self._sort_formats(entry['formats']) + entry = self._parse_html5_media_entries(url, webpage, video_id)[0] + entry.update({ + 'id': video_id, + 'title': title, + 'categories': categories, + 'display_id': display_id, + 'uploader_id': uploader_id, + 'upload_date': upload_date, + 'uploader_url': uploader_url, + 'tags': tags, + 'view_count': view_count, + 'average_rating': average_rating, + }) + self._sort_formats(entry['formats']) - return self.playlist_result(entries) + return entry