yt-dlp 2025.11.16.232923.dev0__py3-none-any.whl → 2025.11.18.232918.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- yt_dlp/extractor/thisoldhouse.py +33 -37
- yt_dlp/version.py +3 -3
- {yt_dlp-2025.11.16.232923.dev0.dist-info → yt_dlp-2025.11.18.232918.dev0.dist-info}/METADATA +1 -1
- {yt_dlp-2025.11.16.232923.dev0.dist-info → yt_dlp-2025.11.18.232918.dev0.dist-info}/RECORD +12 -12
- {yt_dlp-2025.11.16.232923.dev0.data → yt_dlp-2025.11.18.232918.dev0.data}/data/share/bash-completion/completions/yt-dlp +0 -0
- {yt_dlp-2025.11.16.232923.dev0.data → yt_dlp-2025.11.18.232918.dev0.data}/data/share/doc/yt_dlp/README.txt +0 -0
- {yt_dlp-2025.11.16.232923.dev0.data → yt_dlp-2025.11.18.232918.dev0.data}/data/share/fish/vendor_completions.d/yt-dlp.fish +0 -0
- {yt_dlp-2025.11.16.232923.dev0.data → yt_dlp-2025.11.18.232918.dev0.data}/data/share/man/man1/yt-dlp.1 +0 -0
- {yt_dlp-2025.11.16.232923.dev0.data → yt_dlp-2025.11.18.232918.dev0.data}/data/share/zsh/site-functions/_yt-dlp +0 -0
- {yt_dlp-2025.11.16.232923.dev0.dist-info → yt_dlp-2025.11.18.232918.dev0.dist-info}/WHEEL +0 -0
- {yt_dlp-2025.11.16.232923.dev0.dist-info → yt_dlp-2025.11.18.232918.dev0.dist-info}/entry_points.txt +0 -0
- {yt_dlp-2025.11.16.232923.dev0.dist-info → yt_dlp-2025.11.18.232918.dev0.dist-info}/licenses/LICENSE +0 -0
yt_dlp/extractor/thisoldhouse.py
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import urllib.parse
|
|
2
2
|
|
|
3
3
|
from .brightcove import BrightcoveNewIE
|
|
4
4
|
from .common import InfoExtractor
|
|
5
5
|
from .zype import ZypeIE
|
|
6
6
|
from ..networking import HEADRequest
|
|
7
|
-
from ..networking.exceptions import HTTPError
|
|
8
7
|
from ..utils import (
|
|
9
8
|
ExtractorError,
|
|
10
9
|
filter_dict,
|
|
11
10
|
parse_qs,
|
|
12
11
|
smuggle_url,
|
|
13
|
-
try_call,
|
|
14
12
|
urlencode_postdata,
|
|
15
13
|
)
|
|
14
|
+
from ..utils.traversal import traverse_obj
|
|
16
15
|
|
|
17
16
|
|
|
18
17
|
class ThisOldHouseIE(InfoExtractor):
|
|
@@ -77,46 +76,43 @@ class ThisOldHouseIE(InfoExtractor):
|
|
|
77
76
|
'only_matching': True,
|
|
78
77
|
}]
|
|
79
78
|
|
|
80
|
-
_LOGIN_URL = 'https://login.thisoldhouse.com/usernamepassword/login'
|
|
81
|
-
|
|
82
79
|
def _perform_login(self, username, password):
|
|
83
|
-
self.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
login_page = self._download_webpage(
|
|
81
|
+
'https://www.thisoldhouse.com/insider-login', None, 'Downloading login page')
|
|
82
|
+
hidden_inputs = self._hidden_inputs(login_page)
|
|
83
|
+
response = self._download_json(
|
|
84
|
+
'https://www.thisoldhouse.com/wp-admin/admin-ajax.php', None, 'Logging in',
|
|
85
|
+
headers={
|
|
86
|
+
'Accept': 'application/json',
|
|
87
|
+
'X-Requested-With': 'XMLHttpRequest',
|
|
88
|
+
}, data=urlencode_postdata(filter_dict({
|
|
89
|
+
'action': 'onebill_subscriber_login',
|
|
90
|
+
'email': username,
|
|
91
|
+
'password': password,
|
|
92
|
+
'pricingPlanTerm': hidden_inputs['pricing_plan_term'],
|
|
93
|
+
'utm_parameters': hidden_inputs.get('utm_parameters'),
|
|
94
|
+
'nonce': hidden_inputs['mdcr_onebill_login_nonce'],
|
|
95
|
+
})))
|
|
88
96
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
'Content-Type': 'application/json',
|
|
93
|
-
'Referer': urlh.url,
|
|
94
|
-
}, data=json.dumps(filter_dict({
|
|
95
|
-
**{('client_id' if k == 'client' else k): v[0] for k, v in parse_qs(urlh.url).items()},
|
|
96
|
-
'tenant': 'thisoldhouse',
|
|
97
|
-
'username': username,
|
|
98
|
-
'password': password,
|
|
99
|
-
'popup_options': {},
|
|
100
|
-
'sso': True,
|
|
101
|
-
'_csrf': try_call(lambda: self._get_cookies(self._LOGIN_URL)['_csrf'].value),
|
|
102
|
-
'_intstate': 'deprecated',
|
|
103
|
-
}), separators=(',', ':')).encode())
|
|
104
|
-
except ExtractorError as e:
|
|
105
|
-
if isinstance(e.cause, HTTPError) and e.cause.status == 401:
|
|
97
|
+
message = traverse_obj(response, ('data', 'message', {str}))
|
|
98
|
+
if not response['success']:
|
|
99
|
+
if message and 'Something went wrong' in message:
|
|
106
100
|
raise ExtractorError('Invalid username or password', expected=True)
|
|
107
|
-
raise
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
101
|
+
raise ExtractorError(message or 'Login was unsuccessful')
|
|
102
|
+
if message and 'Your subscription is not active' in message:
|
|
103
|
+
self.report_warning(
|
|
104
|
+
f'{self.IE_NAME} said your subscription is not active. '
|
|
105
|
+
f'If your subscription is active, this could be caused by too many sign-ins, '
|
|
106
|
+
f'and you should instead try using {self._login_hint(method="cookies")[4:]}')
|
|
107
|
+
else:
|
|
108
|
+
self.write_debug(f'{self.IE_NAME} said: {message}')
|
|
112
109
|
|
|
113
110
|
def _real_extract(self, url):
|
|
114
111
|
display_id = self._match_id(url)
|
|
115
|
-
webpage = self.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
'Note that --cookies-from-browser may not work due to this site using session cookies')
|
|
112
|
+
webpage, urlh = self._download_webpage_handle(url, display_id)
|
|
113
|
+
# If login response says inactive subscription, site redirects to frontpage for Insider content
|
|
114
|
+
if 'To Unlock This content' in webpage or urllib.parse.urlparse(urlh.url).path in ('', '/'):
|
|
115
|
+
self.raise_login_required('This video is only available for subscribers')
|
|
120
116
|
|
|
121
117
|
video_url, video_id = self._search_regex(
|
|
122
118
|
r'<iframe[^>]+src=[\'"]((?:https?:)?//(?:www\.)?thisoldhouse\.(?:chorus\.build|com)/videos/zype/([0-9a-f]{24})[^\'"]*)[\'"]',
|
yt_dlp/version.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Autogenerated by devscripts/update-version.py
|
|
2
2
|
|
|
3
|
-
__version__ = '2025.11.
|
|
3
|
+
__version__ = '2025.11.18.232918'
|
|
4
4
|
|
|
5
|
-
RELEASE_GIT_HEAD = '
|
|
5
|
+
RELEASE_GIT_HEAD = '9daba4f442139ee2537746398afc5ac30b51c28c'
|
|
6
6
|
|
|
7
7
|
VARIANT = 'pip'
|
|
8
8
|
|
|
@@ -12,4 +12,4 @@ CHANNEL = 'nightly'
|
|
|
12
12
|
|
|
13
13
|
ORIGIN = 'yt-dlp/yt-dlp-nightly-builds'
|
|
14
14
|
|
|
15
|
-
_pkg_version = '2025.11.
|
|
15
|
+
_pkg_version = '2025.11.18.232918dev'
|
{yt_dlp-2025.11.16.232923.dev0.dist-info → yt_dlp-2025.11.18.232918.dev0.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: yt-dlp
|
|
3
|
-
Version: 2025.11.
|
|
3
|
+
Version: 2025.11.18.232918.dev0
|
|
4
4
|
Summary: A feature-rich command-line audio/video downloader
|
|
5
5
|
Project-URL: Documentation, https://github.com/yt-dlp/yt-dlp#readme
|
|
6
6
|
Project-URL: Repository, https://github.com/yt-dlp/yt-dlp
|
|
@@ -11,7 +11,7 @@ yt_dlp/options.py,sha256=Icc0JRiKOzITWoMujE_ihEmkCS-uCcie42XhIh8LvS4,100388
|
|
|
11
11
|
yt_dlp/plugins.py,sha256=EGmR0ydaahNspGrgszTNX4-YjHe93WOOhcw1gf6PZSs,8215
|
|
12
12
|
yt_dlp/socks.py,sha256=oAuAfWM6jxI8A5hHDLEKq2U2-k9NyMB_z6nrKzNE9fg,8936
|
|
13
13
|
yt_dlp/update.py,sha256=sY7gNFBQorzs7sEjRrqL5QOsTBNmGGa_FnpTtbxY1vA,25280
|
|
14
|
-
yt_dlp/version.py,sha256=
|
|
14
|
+
yt_dlp/version.py,sha256=9zKKbcKfkkFu5Ey3XWP2vxqwd3C_QP2zv6qMENNJ1dk,360
|
|
15
15
|
yt_dlp/webvtt.py,sha256=ONkXaaNCZcX8pQhJn3iwIKyaQ34BtVDrMEdG6wRNZwM,11451
|
|
16
16
|
yt_dlp/__pyinstaller/__init__.py,sha256=-c4Zo8nQGKAm8wc_LDscxMtK7zr_YhZwRnC9CMruUBE,72
|
|
17
17
|
yt_dlp/__pyinstaller/hook-yt_dlp.py,sha256=5Rd0zV2pDskjY1KtT0wsjxv4hStx67sLCjUexsFvFus,1339
|
|
@@ -882,7 +882,7 @@ yt_dlp/extractor/thestar.py,sha256=LsMx9W2P3Qsf8NxA9Nth4MCh4RMMsacgafJm67OeD9Q,1
|
|
|
882
882
|
yt_dlp/extractor/thesun.py,sha256=RrZwJO75EGhqMZLTAlxDfSO6lRs3Oql_ukVkpFZROBI,1656
|
|
883
883
|
yt_dlp/extractor/theweatherchannel.py,sha256=MVQOtlNcPX8YB0X8lF-rNJHIMCYQ7DjSuuStfaA7aq8,4110
|
|
884
884
|
yt_dlp/extractor/thisamericanlife.py,sha256=_2ijnZ3aXYYXosa_GcCysx5qE0lonHJYZVwpD93dmQU,1505
|
|
885
|
-
yt_dlp/extractor/thisoldhouse.py,sha256=
|
|
885
|
+
yt_dlp/extractor/thisoldhouse.py,sha256=YLnhWuuA0xMbY766tVDVKi-iaRwwmgOs8sdD-ydBFMs,5980
|
|
886
886
|
yt_dlp/extractor/thisvid.py,sha256=dxN-I56UieWt92iS2VSXK7IckobVNQ6BYPgvOJ9vWJI,8628
|
|
887
887
|
yt_dlp/extractor/threeqsdn.py,sha256=zNHqF2ELqulYpoUCp1YYPlf0tyPS2krsrEUkS0Cw8YQ,6219
|
|
888
888
|
yt_dlp/extractor/threespeak.py,sha256=agG3Ue0h19dAknJHwrK9a3RBQB4aja-5cx1crkOCIUc,4025
|
|
@@ -1120,13 +1120,13 @@ yt_dlp/utils/progress.py,sha256=t9kVvJ0oWuEqRzo9fdFbIhHUBtO_8mg348QwZ1faqLo,3261
|
|
|
1120
1120
|
yt_dlp/utils/traversal.py,sha256=64E3RcZ56iSX50RI_HbKdDNftkETMLBaEPX791_b7yQ,18265
|
|
1121
1121
|
yt_dlp/utils/jslib/__init__.py,sha256=CbdJiRA7Eh5PnjF2V4lDTcg0J0XjBMaaq0H4pCfq9Tk,87
|
|
1122
1122
|
yt_dlp/utils/jslib/devalue.py,sha256=7DCGK_zUN0ZeV5hwPT06zaRMUxX_hyUyFWqs79rxw24,5621
|
|
1123
|
-
yt_dlp-2025.11.
|
|
1124
|
-
yt_dlp-2025.11.
|
|
1125
|
-
yt_dlp-2025.11.
|
|
1126
|
-
yt_dlp-2025.11.
|
|
1127
|
-
yt_dlp-2025.11.
|
|
1128
|
-
yt_dlp-2025.11.
|
|
1129
|
-
yt_dlp-2025.11.
|
|
1130
|
-
yt_dlp-2025.11.
|
|
1131
|
-
yt_dlp-2025.11.
|
|
1132
|
-
yt_dlp-2025.11.
|
|
1123
|
+
yt_dlp-2025.11.18.232918.dev0.data/data/share/bash-completion/completions/yt-dlp,sha256=b0pb9GLseKD27CjnLE6LlhVxhfmQjmyqV6r_CRbd6ko,5989
|
|
1124
|
+
yt_dlp-2025.11.18.232918.dev0.data/data/share/doc/yt_dlp/README.txt,sha256=1p-zv2tZPh1gscLG3ceL7GGCzC4TQU8mS9wiqPS-oXE,164662
|
|
1125
|
+
yt_dlp-2025.11.18.232918.dev0.data/data/share/fish/vendor_completions.d/yt-dlp.fish,sha256=hLa6lZnm7keENpNCjml9A88hbvefdsdoOpAiaNCVyHo,51488
|
|
1126
|
+
yt_dlp-2025.11.18.232918.dev0.data/data/share/man/man1/yt-dlp.1,sha256=C33_xKvu5DD5SScnivPeV2EJEYSeJ1tPXYZnlJBDayc,159125
|
|
1127
|
+
yt_dlp-2025.11.18.232918.dev0.data/data/share/zsh/site-functions/_yt-dlp,sha256=pNhu8tT4ZKrksLRI2mXLqarzGGhnOlm_hkCBVhSxLzg,5985
|
|
1128
|
+
yt_dlp-2025.11.18.232918.dev0.dist-info/METADATA,sha256=k5AcRj2FZrpYxAxpcJ3NA3B9A60XYUuD08TXDRPqX24,180054
|
|
1129
|
+
yt_dlp-2025.11.18.232918.dev0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
1130
|
+
yt_dlp-2025.11.18.232918.dev0.dist-info/entry_points.txt,sha256=vWfetvzYgZIwDfMW6BjCe0Cy4pmTZEXRNzxAkfYlRJA,103
|
|
1131
|
+
yt_dlp-2025.11.18.232918.dev0.dist-info/licenses/LICENSE,sha256=fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM-U6Fw,1211
|
|
1132
|
+
yt_dlp-2025.11.18.232918.dev0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{yt_dlp-2025.11.16.232923.dev0.dist-info → yt_dlp-2025.11.18.232918.dev0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{yt_dlp-2025.11.16.232923.dev0.dist-info → yt_dlp-2025.11.18.232918.dev0.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|