From b749b0fded42af9e7647df43e28fefa55b9d8632 Mon Sep 17 00:00:00 2001 From: mobin shaterian Date: Mon, 29 Oct 2018 14:58:41 +0330 Subject: [PATCH] Fix issue: #18008 Update aparat.py aparat.com change their code and and fix regular expression --- youtube_dl/extractor/aparat.py | 37 +++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/youtube_dl/extractor/aparat.py b/youtube_dl/extractor/aparat.py index 6eb8bbb6e..d90d7716d 100644 --- a/youtube_dl/extractor/aparat.py +++ b/youtube_dl/extractor/aparat.py @@ -34,32 +34,45 @@ class AparatIE(InfoExtractor): 'http://www.aparat.com/video/video/embed/vt/frame/showvideo/yes/videohash/' + video_id, video_id) - title = self._search_regex(r'\s+title:\s*"([^"]+)"', webpage, 'title') + title = self._search_regex(r'title":"([^"]+)', webpage, 'title') + title = title.decode('unicode_escape') file_list = self._parse_json( self._search_regex( - r'fileList\s*=\s*JSON\.parse\(\'([^\']+)\'\)', webpage, - 'file list'), + r'options\s*=\s*JSON\.parse\(\'([^\']+)\'\)', webpage, + 'options'), video_id) + appleSrc = file_list['plugins']['sabaPlayerPlugin']['multiSRC'][0] + multiSrc = file_list['plugins']['sabaPlayerPlugin']['multiSRC'][1] + formats = [] - for item in file_list[0]: - file_url = url_or_none(item.get('file')) + for item in multiSrc: + file_url = url_or_none(item.get('src')) + + if not file_url: continue ext = mimetype2ext(item.get('type')) + + label = item.get('label') + + file_url = file_url + '.'+label + formats.append({ - 'url': file_url, - 'ext': ext, - 'format_id': label or ext, - 'height': int_or_none(self._search_regex( - r'(\d+)[pP]', label or '', 'height', default=None)), + 'url': file_url, + 'ext': ext, + 'format_id': label or ext, + 'height': int_or_none(self._search_regex( + r'(\d+)[pP]', label or '', 'height', default=None)), }) + + self._sort_formats(formats) - thumbnail = self._search_regex( - r'image:\s*"([^"]+)"', webpage, 'thumbnail', fatal=False) + thumbnail = file_list['plugins']['sabaPlayerPlugin']['thumbs']['src'] + return { 'id': video_id,