[batoto] raise exception if chapter is unavailable (#4)

pull/13/head
Mike Fährmann 8 years ago
parent 2418bfe91b
commit 0a3fb198f3
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -135,6 +135,9 @@ def main():
except exception.AuthenticationError:
print("Authentication failed. Please provide a valid "
"username/password pair.", file=sys.stderr)
except exception.AuthorizationError:
print("You do not have permission to access the resource ",
"at '", url, "'", sep="", file=sys.stderr)
except exception.NotFoundError as err:
res = str(err) or "resource (gallery/image/user)"
print("The ", res, " at '", url, "' does not exist",

@ -12,5 +12,8 @@ class NoExtractorError(Exception):
class AuthenticationError(Exception):
"""Invalid or missing login information"""
class AuthorizationError(Exception):
"""Insufficient privileges to access a resource"""
class NotFoundError(Exception):
"""Requested resource (gallery/image) does not exist"""

@ -42,7 +42,16 @@ class BatotoChapterExtractor(AsynchronousExtractor):
"p": 1,
"supress_webtoon": "t",
}
page = self.request(self.reader_url, params=params).text
response = self.session.get(self.reader_url, params=params)
if response.status_code == 405:
error = text.extract(response.text, "ERROR [", "]")[0]
if error == "10030":
raise exception.AuthorizationError()
elif error == "10020":
raise exception.NotFoundError("chapter")
else:
raise Exception("[batoto] unexpected error code: " + error)
page = response.text
data = self.get_job_metadata(page)
yield Message.Version, 1
yield Message.Directory, data.copy()
@ -119,7 +128,7 @@ class BatotoChapterExtractor(AsynchronousExtractor):
"anonymous": "1",
}
response = self.request(self.url + "forums/index.php",
method="POST", params=params, data=data)
method="POST", params=params, data=data)
if "Sign In - " in response.text:
raise exception.AuthenticationError()
return {c: response.cookies[c] for c in ("member_id", "pass_hash")}

Loading…
Cancel
Save