From ee009f610ba78c8f97d41ca8cb0981da861997ef Mon Sep 17 00:00:00 2001 From: Cary Jones Date: Fri, 13 Oct 2017 18:54:56 -0700 Subject: [PATCH 1/4] Fix Fox extractor when provider logins are required --- youtube_dl/extractor/fox.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/youtube_dl/extractor/fox.py b/youtube_dl/extractor/fox.py index 5f98d017b..8a8220605 100644 --- a/youtube_dl/extractor/fox.py +++ b/youtube_dl/extractor/fox.py @@ -11,6 +11,7 @@ from ..utils import ( parse_duration, try_get, unified_timestamp, + update_url_query, ) @@ -76,9 +77,13 @@ class FOXIE(AdobePassIE): episode_number = int_or_none(video.get('episodeNumber')) release_year = int_or_none(video.get('releaseYear')) + query = {} if data.get('authRequired'): - # TODO: AP - pass + rating = video.get('contentRating') + if rating == 'n/a': + rating = None + resource = self._get_mvpd_resource('fbc-fox', None, video['guid'], rating) + query['auth'] = self._extract_mvpd_auth(url, video_id, 'fbc-fox', resource) info = { 'id': video_id, @@ -95,17 +100,18 @@ class FOXIE(AdobePassIE): 'release_year': release_year, } - urlh = self._request_webpage(HEADRequest(release_url), video_id) - video_url = compat_str(urlh.geturl()) + if not data.get('authRequired'): + urlh = self._request_webpage(HEADRequest(release_url), video_id) + video_url = compat_str(urlh.geturl()) - if UplynkPreplayIE.suitable(video_url): + if not data.get('authRequired') and UplynkPreplayIE.suitable(video_url): info.update({ '_type': 'url_transparent', 'url': video_url, 'ie_key': UplynkPreplayIE.ie_key(), }) else: - m3u8_url = self._download_json(release_url, video_id)['playURL'] + m3u8_url = self._download_json(update_url_query(video['videoRelease']['url'], query), video_id)['playURL'] formats = self._extract_m3u8_formats( m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native', m3u8_id='hls') From ac6feaa4fa7bd7c065a065880c803199d6b9fbac Mon Sep 17 00:00:00 2001 From: Cary Jones Date: Fri, 13 Oct 2017 18:56:14 -0700 Subject: [PATCH 2/4] Revert "Fix Fox extractor when provider logins are required" This reverts commit ee009f610ba78c8f97d41ca8cb0981da861997ef. --- youtube_dl/extractor/fox.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/youtube_dl/extractor/fox.py b/youtube_dl/extractor/fox.py index 8a8220605..5f98d017b 100644 --- a/youtube_dl/extractor/fox.py +++ b/youtube_dl/extractor/fox.py @@ -11,7 +11,6 @@ from ..utils import ( parse_duration, try_get, unified_timestamp, - update_url_query, ) @@ -77,13 +76,9 @@ class FOXIE(AdobePassIE): episode_number = int_or_none(video.get('episodeNumber')) release_year = int_or_none(video.get('releaseYear')) - query = {} if data.get('authRequired'): - rating = video.get('contentRating') - if rating == 'n/a': - rating = None - resource = self._get_mvpd_resource('fbc-fox', None, video['guid'], rating) - query['auth'] = self._extract_mvpd_auth(url, video_id, 'fbc-fox', resource) + # TODO: AP + pass info = { 'id': video_id, @@ -100,18 +95,17 @@ class FOXIE(AdobePassIE): 'release_year': release_year, } - if not data.get('authRequired'): - urlh = self._request_webpage(HEADRequest(release_url), video_id) - video_url = compat_str(urlh.geturl()) + urlh = self._request_webpage(HEADRequest(release_url), video_id) + video_url = compat_str(urlh.geturl()) - if not data.get('authRequired') and UplynkPreplayIE.suitable(video_url): + if UplynkPreplayIE.suitable(video_url): info.update({ '_type': 'url_transparent', 'url': video_url, 'ie_key': UplynkPreplayIE.ie_key(), }) else: - m3u8_url = self._download_json(update_url_query(video['videoRelease']['url'], query), video_id)['playURL'] + m3u8_url = self._download_json(release_url, video_id)['playURL'] formats = self._extract_m3u8_formats( m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native', m3u8_id='hls') From be62d0777af6df64e0db72d7ea842e1f6884c922 Mon Sep 17 00:00:00 2001 From: Cary Jones Date: Fri, 13 Oct 2017 18:57:12 -0700 Subject: [PATCH 3/4] Fix Fox extractor when provider logins are required --- youtube_dl/extractor/fox.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/youtube_dl/extractor/fox.py b/youtube_dl/extractor/fox.py index 5f98d017b..8a8220605 100644 --- a/youtube_dl/extractor/fox.py +++ b/youtube_dl/extractor/fox.py @@ -11,6 +11,7 @@ from ..utils import ( parse_duration, try_get, unified_timestamp, + update_url_query, ) @@ -76,9 +77,13 @@ class FOXIE(AdobePassIE): episode_number = int_or_none(video.get('episodeNumber')) release_year = int_or_none(video.get('releaseYear')) + query = {} if data.get('authRequired'): - # TODO: AP - pass + rating = video.get('contentRating') + if rating == 'n/a': + rating = None + resource = self._get_mvpd_resource('fbc-fox', None, video['guid'], rating) + query['auth'] = self._extract_mvpd_auth(url, video_id, 'fbc-fox', resource) info = { 'id': video_id, @@ -95,17 +100,18 @@ class FOXIE(AdobePassIE): 'release_year': release_year, } - urlh = self._request_webpage(HEADRequest(release_url), video_id) - video_url = compat_str(urlh.geturl()) + if not data.get('authRequired'): + urlh = self._request_webpage(HEADRequest(release_url), video_id) + video_url = compat_str(urlh.geturl()) - if UplynkPreplayIE.suitable(video_url): + if not data.get('authRequired') and UplynkPreplayIE.suitable(video_url): info.update({ '_type': 'url_transparent', 'url': video_url, 'ie_key': UplynkPreplayIE.ie_key(), }) else: - m3u8_url = self._download_json(release_url, video_id)['playURL'] + m3u8_url = self._download_json(update_url_query(video['videoRelease']['url'], query), video_id)['playURL'] formats = self._extract_m3u8_formats( m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native', m3u8_id='hls') From 07c993fde6daf51758d26509ed6f82b73858e149 Mon Sep 17 00:00:00 2001 From: Cary Jones Date: Fri, 13 Oct 2017 20:36:47 -0700 Subject: [PATCH 4/4] Fix tests for FOX --- README.md | 19 +++++++++---------- youtube_dl/extractor/fox.py | 3 ++- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 2879aad24..672bf871a 100644 --- a/README.md +++ b/README.md @@ -75,8 +75,8 @@ Alternatively, refer to the [developer instructions](#developer-instructions) fo repairs broken URLs, but emits an error if this is not possible instead of searching. --ignore-config Do not read configuration files. When given - in the global configuration file - /etc/youtube-dl.conf: Do not read the user + in the global configuration file /etc + /youtube-dl.conf: Do not read the user configuration in ~/.config/youtube- dl/config (%APPDATA%/youtube-dl/config.txt on Windows) @@ -106,8 +106,8 @@ Alternatively, refer to the [developer instructions](#developer-instructions) fo proxy specified by --proxy (or none, if the options is not present) is used for the actual downloading. - --geo-bypass Bypass geographic restriction via faking - X-Forwarded-For HTTP header (experimental) + --geo-bypass Bypass geographic restriction via faking X + -Forwarded-For HTTP header (experimental) --no-geo-bypass Do not bypass geographic restriction via faking X-Forwarded-For HTTP header (experimental) @@ -247,12 +247,11 @@ Alternatively, refer to the [developer instructions](#developer-instructions) fo jar in --cache-dir DIR Location in the filesystem where youtube-dl can store some downloaded information - permanently. By default - $XDG_CACHE_HOME/youtube-dl or - ~/.cache/youtube-dl . At the moment, only - YouTube player files (for videos with - obfuscated signatures) are cached, but that - may change. + permanently. By default $XDG_CACHE_HOME + /youtube-dl or ~/.cache/youtube-dl . At the + moment, only YouTube player files (for + videos with obfuscated signatures) are + cached, but that may change. --no-cache-dir Disable filesystem caching --rm-cache-dir Delete all filesystem cache files diff --git a/youtube_dl/extractor/fox.py b/youtube_dl/extractor/fox.py index 8a8220605..8df7236af 100644 --- a/youtube_dl/extractor/fox.py +++ b/youtube_dl/extractor/fox.py @@ -22,7 +22,8 @@ class FOXIE(AdobePassIE): 'url': 'https://www.fox.com/watch/4b765a60490325103ea69888fb2bd4e8/', 'md5': 'ebd296fcc41dd4b19f8115d8461a3165', 'info_dict': { - 'id': '4b765a60490325103ea69888fb2bd4e8', + 'id': '61625a1525bd4655835ad8f1e2e253c5', + 'uploader_id': 'd8e6eec26bf544f084bad49a7fa2eac5', 'ext': 'mp4', 'title': 'Aftermath: Bruce Wayne Develops Into The Dark Knight', 'description': 'md5:549cd9c70d413adb32ce2a779b53b486',