[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):
default = "Account credentials required"
def __init__(self, required=None, message=None):
if required and not message:
if isinstance(required, str):
message = f"{required} required"
def __init__(self, auth=None, resource="resource", message=None):
if auth:
if not isinstance(auth, str):
auth = " or ".join(auth)
if " " not in resource:
resource = "this " + resource
if message is None:
message = (f"{auth} needed to access {resource}")
else:
message = f"{' or '.join(required)} required"
message = (f"{auth} needed to access {resource} "
f"('{message}')")
AuthorizationError.__init__(self, message)

View File

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

View File

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

View File

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