remove sys.exit
Some checks failed
ci/woodpecker/push/tests Pipeline failed

This commit is contained in:
Ivan Schaller 2023-02-12 01:27:13 +01:00
parent 059aca80ef
commit 5eb333f1ca
Signed by: olofvndrhr
GPG key ID: 2A6BE07D99C8C205
3 changed files with 39 additions and 37 deletions

View file

@ -1,6 +1,5 @@
import re import re
import shutil import shutil
import sys
from pathlib import Path from pathlib import Path
from typing import Any, Union from typing import Any, Union
@ -78,9 +77,9 @@ class MangaDLP:
try: try:
log.debug("Initializing api") log.debug("Initializing api")
self.api = self.api_used(self.url_uuid, self.language, self.forcevol) self.api = self.api_used(self.url_uuid, self.language, self.forcevol)
except Exception: except Exception as exc:
log.error("Can't initialize api. Exiting") log.error("Can't initialize api. Exiting")
sys.exit(1) raise exc
# get manga title and uuid # get manga title and uuid
self.manga_uuid = self.api.manga_uuid self.manga_uuid = self.api.manga_uuid
self.manga_title = self.api.manga_title self.manga_title = self.api.manga_title
@ -96,7 +95,7 @@ class MangaDLP:
log.error( log.error(
'You need to specify a manga url/uuid with "-u" or a list with "--read"' 'You need to specify a manga url/uuid with "-u" or a list with "--read"'
) )
sys.exit(1) raise ValueError
# checks if --list is not used # checks if --list is not used
if not self.list_chapters: if not self.list_chapters:
if not self.chapters: if not self.chapters:
@ -104,15 +103,15 @@ class MangaDLP:
log.error( log.error(
'You need to specify one or more chapters to download. To see all chapters use "--list"' 'You need to specify one or more chapters to download. To see all chapters use "--list"'
) )
sys.exit(1) raise ValueError
# if forcevol is used, but didn't specify a volume in the chapters selected # if forcevol is used, but didn't specify a volume in the chapters selected
if self.forcevol and ":" not in self.chapters: if self.forcevol and ":" not in self.chapters:
log.error("You need to specify the volume if you use --forcevol") log.error("You need to specify the volume if you use --forcevol")
sys.exit(1) raise ValueError
# if forcevol is not used, but a volume is specified # if forcevol is not used, but a volume is specified
if not self.forcevol and ":" in self.chapters: if not self.forcevol and ":" in self.chapters:
log.error("Don't specify the volume without --forcevol") log.error("Don't specify the volume without --forcevol")
sys.exit(1) raise ValueError
# check the api which needs to be used # check the api which needs to be used
def check_api(self, url_uuid: str) -> type: def check_api(self, url_uuid: str) -> type:
@ -129,11 +128,11 @@ class MangaDLP:
# this is only for testing multiple apis # this is only for testing multiple apis
if api_test.search(url_uuid): if api_test.search(url_uuid):
log.critical("Not supported yet") log.critical("Not supported yet")
sys.exit(1) raise ValueError
# no supported api found # no supported api found
log.error(f"No supported api in link/uuid found: {url_uuid}") log.error(f"No supported api in link/uuid found: {url_uuid}")
sys.exit(1) raise ValueError
# once called per manga # once called per manga
def get_manga(self) -> None: def get_manga(self) -> None:
@ -206,6 +205,8 @@ class MangaDLP:
try: try:
chapter_path = self.get_chapter(chapter) chapter_path = self.get_chapter(chapter)
except KeyboardInterrupt as exc:
raise exc
except FileExistsError: except FileExistsError:
skipped_chapters.append(chapter) skipped_chapters.append(chapter)
# update cache # update cache
@ -273,9 +274,9 @@ class MangaDLP:
chapter_image_urls = self.api.get_chapter_images( chapter_image_urls = self.api.get_chapter_images(
chapter, self.download_wait chapter, self.download_wait
) )
except KeyboardInterrupt: except KeyboardInterrupt as exc:
log.critical("Stopping") log.critical("Keyboard interrupt. Stopping")
sys.exit(1) raise exc
# check if the image urls are empty. if yes skip this chapter (for mass downloads) # check if the image urls are empty. if yes skip this chapter (for mass downloads)
if not chapter_image_urls: if not chapter_image_urls:
@ -364,9 +365,9 @@ class MangaDLP:
downloader.download_chapter( downloader.download_chapter(
chapter_image_urls, chapter_path, self.download_wait chapter_image_urls, chapter_path, self.download_wait
) )
except KeyboardInterrupt: except KeyboardInterrupt as exc:
log.critical("Stopping") log.critical("Keyboard interrupt. Stopping")
sys.exit(1) raise exc
except Exception as exc: except Exception as exc:
log.error(f"Cant download: '{chapter_filename}'. Skipping") log.error(f"Cant download: '{chapter_filename}'. Skipping")

View file

@ -256,24 +256,27 @@ def main(
requested_mangas = [url_uuid] if url_uuid else read_mangas requested_mangas = [url_uuid] if url_uuid else read_mangas
for manga in requested_mangas: for manga in requested_mangas:
mdlp = app.MangaDLP( try:
url_uuid=manga, mdlp = app.MangaDLP(
language=lang, url_uuid=manga,
chapters=chapters, language=lang,
list_chapters=list_chapters, chapters=chapters,
file_format=chapter_format, list_chapters=list_chapters,
name_format=name_format, file_format=chapter_format,
name_format_none=name_format_none, name_format=name_format,
forcevol=forcevol, name_format_none=name_format_none,
download_path=path, forcevol=forcevol,
download_wait=wait_time, download_path=path,
manga_pre_hook_cmd=hook_manga_pre, download_wait=wait_time,
manga_post_hook_cmd=hook_manga_post, manga_pre_hook_cmd=hook_manga_pre,
chapter_pre_hook_cmd=hook_chapter_pre, manga_post_hook_cmd=hook_manga_post,
chapter_post_hook_cmd=hook_chapter_post, chapter_pre_hook_cmd=hook_chapter_pre,
cache_path=cache_path, chapter_post_hook_cmd=hook_chapter_post,
) cache_path=cache_path,
mdlp.get_manga() )
mdlp.get_manga()
except (KeyboardInterrupt, Exception) as exc:
log.error(f"Skipping: {manga}. Reason={exc}")
if __name__ == "__main__": if __name__ == "__main__":

View file

@ -1,6 +1,5 @@
import logging import logging
import shutil import shutil
import sys
from pathlib import Path from pathlib import Path
from time import sleep from time import sleep
from typing import Union from typing import Union
@ -35,9 +34,8 @@ def download_chapter(
if r.status_code != 200: if r.status_code != 200:
log.error(f"Request for image {image} failed, retrying") log.error(f"Request for image {image} failed, retrying")
raise ConnectionError raise ConnectionError
except KeyboardInterrupt: except KeyboardInterrupt as exc:
log.critical("Stopping") raise exc
sys.exit(1)
except Exception as exc: except Exception as exc:
if counter >= 3: if counter >= 3:
log.error("Maybe the MangaDex Servers are down?") log.error("Maybe the MangaDex Servers are down?")