[exception] improve AuthRequired messages

This commit is contained in:
Mike Fährmann
2025-08-08 16:01:19 +02:00
parent a70b4ab693
commit 8ada5b8eb6
5 changed files with 17 additions and 9 deletions

View File

@@ -100,12 +100,17 @@ class AuthorizationError(ExtractionError):
class AuthRequired(AuthorizationError): class AuthRequired(AuthorizationError):
default = "Account credentials required" default = "Account credentials required"
def __init__(self, required=None, message=None): def __init__(self, auth=None, resource="resource", message=None):
if required and not message: if auth:
if isinstance(required, str): if not isinstance(auth, str):
message = f"{required} required" auth = " or ".join(auth)
if " " not in resource:
resource = "this " + resource
if message is None:
message = (f"{auth} needed to access {resource}")
else: else:
message = f"{' or '.join(required)} required" message = (f"{auth} needed to access {resource} "
f"('{message}')")
AuthorizationError.__init__(self, message) AuthorizationError.__init__(self, message)

View File

@@ -200,7 +200,7 @@ class CivitaiExtractor(Extractor):
if "Authorization" not in self.api.headers and \ if "Authorization" not in self.api.headers and \
not self.cookies.get( not self.cookies.get(
"__Secure-civitai-token", domain=".civitai.com"): "__Secure-civitai-token", domain=".civitai.com"):
raise exception.AuthRequired(("'api-key'", "cookies")) raise exception.AuthRequired(("api-key", "authenticated cookies"))
def _parse_query(self, value): def _parse_query(self, value):
return text.parse_query_list( return text.parse_query_list(

View File

@@ -318,7 +318,9 @@ class FacebookExtractor(Extractor):
if ('"props":{"title":"This content isn\'t available right now"' in if ('"props":{"title":"This content isn\'t available right now"' in
profile_photos_page): profile_photos_page):
raise exception.AuthRequired("cookies") raise exception.AuthRequired(
"authenticated cookies", "profile",
"This content isn't available right now")
set_id = self._extract_profile_set_id(profile_photos_page) set_id = self._extract_profile_set_id(profile_photos_page)
avatar_page_url = text.extr( avatar_page_url = text.extr(

View File

@@ -341,7 +341,8 @@ class IwaraAPI():
def favorites(self, type): def favorites(self, type):
if not self.username: if not self.username:
raise exception.AuthRequired("'username' & 'password'") raise exception.AuthRequired(
"username & password", "your favorites")
endpoint = f"/favorites/{type}s" endpoint = f"/favorites/{type}s"
return self._pagination(endpoint) return self._pagination(endpoint)

View File

@@ -31,7 +31,7 @@ class MadokamiMangaExtractor(MadokamiExtractor):
def items(self): def items(self):
username, password = self._get_auth_info() username, password = self._get_auth_info()
if not username: if not username:
raise exception.AuthRequired("'username' & 'password'") raise exception.AuthRequired("username & password")
self.session.auth = util.HTTPBasicAuth(username, password) self.session.auth = util.HTTPBasicAuth(username, password)
url = f"{self.root}/Manga/{self.groups[0]}" url = f"{self.root}/Manga/{self.groups[0]}"