Compare commits

..

No commits in common. "2d285b543e65c757332db544fb679677bb8cc9a0" and "41617271501a856e3021349f12e220bda30dd39c" have entirely different histories.

View File

@ -31,6 +31,7 @@ from ..utils.traversal import require, traverse_obj
class WeverseBaseIE(InfoExtractor): class WeverseBaseIE(InfoExtractor):
_NETRC_MACHINE = 'weverse' _NETRC_MACHINE = 'weverse'
_ACCOUNT_API_BASE = 'https://accountapi.weverse.io' _ACCOUNT_API_BASE = 'https://accountapi.weverse.io'
_CLIENT_ID = 'weverse'
_CLIENT_PLATFORM = 'WEB' _CLIENT_PLATFORM = 'WEB'
_SIGNING_KEY = b'1b9cb6378d959b45714bec49971ade22e6e24e42' _SIGNING_KEY = b'1b9cb6378d959b45714bec49971ade22e6e24e42'
_ACCESS_TOKEN_KEY = 'we2_access_token' _ACCESS_TOKEN_KEY = 'we2_access_token'
@ -68,7 +69,7 @@ class WeverseBaseIE(InfoExtractor):
return { return {
**self._API_HEADERS, **self._API_HEADERS,
'X-ACC-APP-SECRET': '5419526f1c624b38b10787e5c10b2a7a', 'X-ACC-APP-SECRET': '5419526f1c624b38b10787e5c10b2a7a',
'X-ACC-SERVICE-ID': 'weverse', 'X-ACC-SERVICE-ID': self._CLIENT_ID,
'X-ACC-TRACE-ID': str(uuid.uuid4()), 'X-ACC-TRACE-ID': str(uuid.uuid4()),
} }
@ -109,24 +110,13 @@ class WeverseBaseIE(InfoExtractor):
if self._is_logged_in: if self._is_logged_in:
headers['Authorization'] = f'Bearer {self._oauth_tokens[self._ACCESS_TOKEN_KEY]}' headers['Authorization'] = f'Bearer {self._oauth_tokens[self._ACCESS_TOKEN_KEY]}'
try: response = self._download_json(
response = self._download_json( f'{self._ACCOUNT_API_BASE}/api/v1/token/refresh', None,
f'{self._ACCOUNT_API_BASE}/api/v1/token/refresh', None, 'Refreshing access token', 'Unable to refresh access token',
'Refreshing access token', 'Unable to refresh access token', headers={**self._oauth_headers, **headers},
headers={**self._oauth_headers, **headers}, data=json.dumps({
data=json.dumps({ 'refreshToken': self._oauth_tokens[self._REFRESH_TOKEN_KEY],
'refreshToken': self._oauth_tokens[self._REFRESH_TOKEN_KEY], }, separators=(',', ':')).encode())
}, separators=(',', ':')).encode())
except ExtractorError as e:
if isinstance(e.cause, HTTPError) and e.cause.status == 401:
self._oauth_tokens.clear()
if self._oauth_cache_key == 'cookies':
self.cookiejar.clear(domain='.weverse.io', path='/', name=self._ACCESS_TOKEN_KEY)
self.cookiejar.clear(domain='.weverse.io', path='/', name=self._REFRESH_TOKEN_KEY)
else:
self.cache.store(self._NETRC_MACHINE, self._oauth_cache_key, self._oauth_tokens)
self._report_login_error('expired_refresh_token')
raise
self._oauth_tokens.update(traverse_obj(response, { self._oauth_tokens.update(traverse_obj(response, {
self._ACCESS_TOKEN_KEY: ('accessToken', {str}, {require('access token')}), self._ACCESS_TOKEN_KEY: ('accessToken', {str}, {require('access token')}),
@ -206,7 +196,7 @@ class WeverseBaseIE(InfoExtractor):
'platform': self._CLIENT_PLATFORM, 'platform': self._CLIENT_PLATFORM,
'wpf': 'pc', 'wpf': 'pc',
}) })
for is_retry in (False, True): for retry in (False, True):
wmsgpad = int(time.time() * 1000) wmsgpad = int(time.time() * 1000)
wmd = base64.b64encode(hmac.HMAC( wmd = base64.b64encode(hmac.HMAC(
self._SIGNING_KEY, f'{api_path[:255]}{wmsgpad}'.encode(), self._SIGNING_KEY, f'{api_path[:255]}{wmsgpad}'.encode(),
@ -225,7 +215,7 @@ class WeverseBaseIE(InfoExtractor):
'wmd': wmd, 'wmd': wmd,
}) })
except ExtractorError as e: except ExtractorError as e:
if is_retry or not isinstance(e.cause, HTTPError): if retry or not isinstance(e.cause, HTTPError):
raise raise
elif self._is_logged_in and e.cause.status == 401: elif self._is_logged_in and e.cause.status == 401:
self._refresh_access_token() self._refresh_access_token()