1
0
mirror of https://github.com/mikf/gallery-dl.git synced 2024-11-25 04:02:32 +01:00
gallery-dl/gallery_dl/exception.py

140 lines
3.7 KiB
Python
Raw Normal View History

2015-12-12 00:11:05 +01:00
# -*- coding: utf-8 -*-
# Copyright 2015-2023 Mike Fährmann
2015-12-12 00:11:05 +01:00
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
"""Exception classes used by gallery-dl
2017-01-30 19:40:15 +01:00
Class Hierarchy:
Exception
+-- GalleryDLException
+-- ExtractionError
| +-- AuthenticationError
| +-- AuthorizationError
| +-- NotFoundError
| +-- HttpError
+-- FormatError
2019-10-27 23:05:00 +01:00
| +-- FilenameFormatError
| +-- DirectoryFormatError
+-- FilterError
+-- InputFileError
2019-10-27 23:05:00 +01:00
+-- NoExtractorError
+-- StopExtraction
+-- TerminateExtraction
+-- RestartExtraction
"""
class GalleryDLException(Exception):
"""Base class for GalleryDL exceptions"""
2019-10-27 23:05:00 +01:00
default = None
msgfmt = None
code = 1
def __init__(self, message=None, fmt=True):
2019-10-27 23:05:00 +01:00
if not message:
message = self.default
elif isinstance(message, Exception):
message = "{}: {}".format(message.__class__.__name__, message)
if self.msgfmt and fmt:
2019-10-27 23:05:00 +01:00
message = self.msgfmt.format(message)
Exception.__init__(self, message)
class ExtractionError(GalleryDLException):
"""Base class for exceptions during information extraction"""
2016-07-14 14:57:42 +02:00
2017-01-30 19:40:15 +01:00
2019-10-27 23:05:00 +01:00
class HttpError(ExtractionError):
"""HTTP request during data extraction failed"""
default = "HTTP request failed"
code = 4
def __init__(self, message="", response=None):
2020-07-30 18:23:26 +02:00
self.response = response
if response is None:
self.status = 0
else:
self.status = response.status_code
if not message:
message = "'{} {}' for '{}'".format(
response.status_code, response.reason, response.url)
ExtractionError.__init__(self, message)
2020-07-30 18:23:26 +02:00
2017-01-30 19:40:15 +01:00
class NotFoundError(ExtractionError):
2019-10-27 23:05:00 +01:00
"""Requested resource (gallery/image) could not be found"""
msgfmt = "Requested {} could not be found"
default = "resource (gallery/image)"
code = 8
2019-10-27 23:05:00 +01:00
class AuthenticationError(ExtractionError):
"""Invalid or missing login credentials"""
default = "Invalid or missing login credentials"
code = 16
2018-09-05 18:15:33 +02:00
2019-10-27 23:05:00 +01:00
class AuthorizationError(ExtractionError):
"""Insufficient privileges to access a resource"""
2019-11-08 20:58:53 +01:00
default = "Insufficient privileges to access the specified resource"
2019-10-27 23:05:00 +01:00
code = 16
2019-10-27 23:05:00 +01:00
class FormatError(GalleryDLException):
"""Error while building output paths"""
code = 32
2019-10-27 23:05:00 +01:00
class FilenameFormatError(FormatError):
"""Error while building output filenames"""
msgfmt = "Applying filename format string failed ({})"
2019-10-27 23:05:00 +01:00
class DirectoryFormatError(FormatError):
"""Error while building output directory paths"""
msgfmt = "Applying directory format string failed ({})"
class FilterError(GalleryDLException):
"""Error while evaluating a filter expression"""
2019-10-27 23:05:00 +01:00
msgfmt = "Evaluating filter expression failed ({})"
code = 32
class InputFileError(GalleryDLException):
"""Error when parsing input file"""
code = 32
def __init__(self, message, *args):
GalleryDLException.__init__(
self, message % args if args else message)
2019-10-27 23:05:00 +01:00
class NoExtractorError(GalleryDLException):
"""No extractor can handle the given URL"""
code = 64
class StopExtraction(GalleryDLException):
2019-10-27 23:05:00 +01:00
"""Stop data extraction"""
def __init__(self, message=None, *args):
2019-10-27 23:05:00 +01:00
GalleryDLException.__init__(self)
self.message = message % args if args else message
2019-10-27 23:05:00 +01:00
self.code = 1 if message else 0
class TerminateExtraction(GalleryDLException):
"""Terminate data extraction"""
code = 0
class RestartExtraction(GalleryDLException):
"""Restart data extraction"""
code = 0