From b71693ffde7ff172dada7cd720a6c3646711c37f Mon Sep 17 00:00:00 2001 From: Johns Mathew Date: Sun, 12 Feb 2017 17:14:58 +0530 Subject: [PATCH 1/4] 1080p Support Added support for 1080p video download --- youtube_dl/extractor/hotstar.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/youtube_dl/extractor/hotstar.py b/youtube_dl/extractor/hotstar.py index f05d765d6..b6b9ad8dc 100644 --- a/youtube_dl/extractor/hotstar.py +++ b/youtube_dl/extractor/hotstar.py @@ -1,6 +1,8 @@ # coding: utf-8 from __future__ import unicode_literals +import re + from .common import InfoExtractor from ..utils import ( ExtractorError, @@ -59,6 +61,9 @@ class HotStarIE(InfoExtractor): video_id, 'Downloading %s JSON metadata' % f, fatal=False) if format_data: format_url = format_data['src'] + format_url_1080p = re.sub(r'(_STAR.mp4)', r'3000,4500,\1', format_url) + if self._is_valid_url(format_url_1080p, video_id, '1080p video'): + format_url = format_url_1080p ext = determine_ext(format_url) if ext == 'm3u8': formats.extend(self._extract_m3u8_formats(format_url, video_id, 'mp4', m3u8_id='hls', fatal=False)) From 451d7917fd6edfa127d207901ce76ddee9a7606f Mon Sep 17 00:00:00 2001 From: Johns Mathew Date: Sun, 12 Feb 2017 18:23:35 +0530 Subject: [PATCH 2/4] Updated available platforms Better extract 1080p links --- youtube_dl/extractor/hotstar.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/youtube_dl/extractor/hotstar.py b/youtube_dl/extractor/hotstar.py index b6b9ad8dc..f1e83a08e 100644 --- a/youtube_dl/extractor/hotstar.py +++ b/youtube_dl/extractor/hotstar.py @@ -1,8 +1,6 @@ # coding: utf-8 from __future__ import unicode_literals -import re - from .common import InfoExtractor from ..utils import ( ExtractorError, @@ -54,16 +52,14 @@ class HotStarIE(InfoExtractor): video_id)['contentInfo'][0] formats = [] + platforms = video_data['availableAlso'].split('|') # PCTV for extracting f4m manifest - for f in ('TABLET',): + for f in platforms: format_data = self._download_json( self._GET_CDN_TEMPLATE % (f, video_id, 'VOD'), video_id, 'Downloading %s JSON metadata' % f, fatal=False) if format_data: format_url = format_data['src'] - format_url_1080p = re.sub(r'(_STAR.mp4)', r'3000,4500,\1', format_url) - if self._is_valid_url(format_url_1080p, video_id, '1080p video'): - format_url = format_url_1080p ext = determine_ext(format_url) if ext == 'm3u8': formats.extend(self._extract_m3u8_formats(format_url, video_id, 'mp4', m3u8_id='hls', fatal=False)) @@ -76,6 +72,7 @@ class HotStarIE(InfoExtractor): 'width': int_or_none(format_data.get('width')), 'height': int_or_none(format_data.get('height')), }) + self._remove_duplicate_formats(formats) self._sort_formats(formats) return { From a0b875578c522af66acf21830f9d3b810a94571f Mon Sep 17 00:00:00 2001 From: Johns Mathew Date: Sun, 12 Feb 2017 19:02:50 +0530 Subject: [PATCH 3/4] Added _remove_duplicate_formats_by_id --- youtube_dl/extractor/common.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 9681453ca..252390e45 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -1025,6 +1025,16 @@ class InfoExtractor(object): unique_formats.append(f) formats[:] = unique_formats + @staticmethod + def _remove_duplicate_formats_by_id(formats): + format_ids = set() + unique_formats = [] + for f in formats: + if f['format_id'] not in format_ids: + format_ids.add(f['format_id']) + unique_formats.append(f) + formats[:] = unique_formats + def _is_valid_url(self, url, video_id, item='video', headers={}): url = self._proto_relative_url(url, scheme='http:') # For now assume non HTTP(S) URLs always valid From f69607eeacdb666a4f9901d3c7e8dd8f13d426dc Mon Sep 17 00:00:00 2001 From: Johns Mathew Date: Sun, 12 Feb 2017 19:04:20 +0530 Subject: [PATCH 4/4] Remove Duplicate Formats Remove duplicate formats from various platforms (filtered using format_id) --- youtube_dl/extractor/hotstar.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/hotstar.py b/youtube_dl/extractor/hotstar.py index f1e83a08e..e0194feb4 100644 --- a/youtube_dl/extractor/hotstar.py +++ b/youtube_dl/extractor/hotstar.py @@ -72,7 +72,7 @@ class HotStarIE(InfoExtractor): 'width': int_or_none(format_data.get('width')), 'height': int_or_none(format_data.get('height')), }) - self._remove_duplicate_formats(formats) + self._remove_duplicate_formats_by_id(formats) self._sort_formats(formats) return {