]> jfr.im git - yt-dlp.git/commitdiff
[ThisOldHouseIE] Add support for premium videos (#2358)
authorAshish Gupta <redacted>
Tue, 18 Jan 2022 07:40:55 +0000 (13:10 +0530)
committerGitHub <redacted>
Tue, 18 Jan 2022 07:40:55 +0000 (13:10 +0530)
Authored by: Ashish0804
Closes: #2341
yt_dlp/extractor/thisoldhouse.py

index a3d9b4017b93b1d9381b896967fa9e68da59eaec..35c69a9885526f7c071925a778b57840a9a83f93 100644 (file)
@@ -2,6 +2,7 @@
 from __future__ import unicode_literals
 
 from .common import InfoExtractor
+from ..utils import HEADRequest
 
 
 class ThisOldHouseIE(InfoExtractor):
@@ -15,6 +16,11 @@ class ThisOldHouseIE(InfoExtractor):
             'description': 'In the workshop, Tom Silva and Kevin O\'Connor build a storage bench for an entryway.',
             'timestamp': 1442548800,
             'upload_date': '20150918',
+            'duration': 674,
+            'view_count': int,
+            'average_rating': 0,
+            'thumbnail': r're:^https?://.*\.jpg\?\d+$',
+            'display_id': 'how-to-build-a-storage-bench',
         },
         'params': {
             'skip_download': True,
@@ -41,7 +47,12 @@ class ThisOldHouseIE(InfoExtractor):
     def _real_extract(self, url):
         display_id = self._match_id(url)
         webpage = self._download_webpage(url, display_id)
-        video_id = self._search_regex(
-            r'<iframe[^>]+src=[\'"](?:https?:)?//(?:www\.)?thisoldhouse\.(?:chorus\.build|com)/videos/zype/([0-9a-f]{24})',
-            webpage, 'video id')
+        if 'To Unlock This content' in webpage:
+            self.raise_login_required(method='cookies')
+        video_url = self._search_regex(
+            r'<iframe[^>]+src=[\'"]((?:https?:)?//(?:www\.)?thisoldhouse\.(?:chorus\.build|com)/videos/zype/([0-9a-f]{24})[^\'"]*)[\'"]',
+            webpage, 'video url')
+        if 'subscription_required=true' in video_url:
+            return self.url_result(self._request_webpage(HEADRequest(video_url), display_id).geturl(), 'Zype', display_id)
+        video_id = self._search_regex(r'(?:https?:)?//(?:www\.)?thisoldhouse\.(?:chorus\.build|com)/videos/zype/([0-9a-f]{24})', video_url, 'video id')
         return self.url_result(self._ZYPE_TMPL % video_id, 'Zype', video_id)