From fca92e491b7839ea82c4397c156bcfa302a8f6e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=B3nos?= Date: Wed, 20 Jan 2021 11:24:07 +0100 Subject: [PATCH] DeprecatedLibrary(Exception) e wiki MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migliorata l'eccezione DeprecatedLibrary, adesso contiene gli attributi funName (nome funzione dove è sorto l'errore) e line (line dove è sorto l'errore). Sistemata la wiki per questa aggiunta. --- animeworld/__init__.py | 12 ++++++-- documentation/example.py | 47 ++++++++++++++++++-------------- documentation/wiki/Exceptions.md | 25 +++++++++++++++++ setup.py | 2 +- 4 files changed, 62 insertions(+), 24 deletions(-) diff --git a/animeworld/__init__.py b/animeworld/__init__.py index c765182..29d815f 100644 --- a/animeworld/__init__.py +++ b/animeworld/__init__.py @@ -2,6 +2,7 @@ from bs4 import BeautifulSoup import youtube_dl import re +import inspect HDR = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'} @@ -23,7 +24,10 @@ def wrapper(*args, **kwargs): try: return fun(*args, **kwargs) except AttributeError: - raise DeprecatedLibrary() + frame = inspect.trace()[-1] + funName = frame[3] + errLine = frame[2] + raise DeprecatedLibrary(funName, errLine) return wrapper class Anime: @@ -310,6 +314,8 @@ def __init__(self, animeName=''): super().__init__(self.message) class DeprecatedLibrary(Exception): - def __init__(self): - self.message = "Il sito è cambiato, di conseguenza la libreria è DEPRECATA." + def __init__(self, funName, line): + self.funName = funName + self.line = line + self.message = f"Il sito è cambiato, di conseguenza la libreria è DEPRECATA. -> [{funName} - {line}]" super().__init__(self.message) \ No newline at end of file diff --git a/documentation/example.py b/documentation/example.py index 9a75c31..6f7ef89 100644 --- a/documentation/example.py +++ b/documentation/example.py @@ -2,32 +2,39 @@ def main(): - anime = aw.Anime(link="https://www.animeworld.tv/play/black-clover.TSAUM") - - print("Titolo", anime.getName()) # Titolo dell'anime - print("\n----------------------------------\n") + try: + anime = aw.Anime(link="https://www.animeworld.tv/play/jaku-chara-tomozaki-kun.RDPHq") + + print("Titolo", anime.getName()) # Titolo dell'anime - print("Trama:", anime.getTrama()) # Trama + print("\n----------------------------------\n") - print("\n----------------------------------\n") + print("Trama:", anime.getTrama()) # Trama - print("Info:") - info = anime.getInfo() - for x in info: print(f"{x}: {info[x]}") # Informazioni presenti su Animeworld riguardanti l'anime + print("\n----------------------------------\n") - print("\n----------------------------------\n") + print("Info:") + info = anime.getInfo() + for x in info: print(f"{x}: {info[x]}") # Informazioni presenti su Animeworld riguardanti l'anime - print("Episodi:") - try: - episodi = anime.getEpisodes() - except Exception as error: - print("Errore:", error) - else: - for x in episodi: - print(f"\n-> Ep. {x.number}") - for k in x.links: - print(f"\t{k.name} - {k.link}") + print("\n----------------------------------\n") + + print("Episodi:") + try: + episodi = anime.getEpisodes() + except (aw.ServerNotSupported, aw.AnimeNotAvailable) as error: + print("Errore:", error) + else: + for x in episodi: + print(f"\n-> Ep. {x.number}") + for k in x.links: + print(f"\t{k.name} - {k.link}") + + # if x.number == '4': + # x.download() + except aw.DeprecatedLibrary as error: + print(error) if __name__ == '__main__': main() \ No newline at end of file diff --git a/documentation/wiki/Exceptions.md b/documentation/wiki/Exceptions.md index ffbbb19..4d3a918 100644 --- a/documentation/wiki/Exceptions.md +++ b/documentation/wiki/Exceptions.md @@ -31,5 +31,30 @@ _Viene sollevata questa eccezione quando la serie non è ancora uscita, cioè no **Returns** > Il **messaggio** di errore. +**Return type** +> [`str`](https://docs.python.org/3/library/stdtypes.html#str) + +# **class** DeprecatedLibrary(_Exception_) +_Viene sollevata questa eccezione quando il sito AnimeWorld ha subito dei mutamenti nei punti dove la libreria opera._ + +## Attributes +### `funName` +**Returns** +> Il **nome** della funzione dove è sorto l'errore. + +**Return type** +> [`str`](https://docs.python.org/3/library/stdtypes.html#str) + +### `line` +**Returns** +> La **linea** dove è sorto l'errore. + +**Return type** +> [`int`](https://docs.python.org/3/library/functions.html#int) + +### `message` +**Returns** +> Il **messaggio** di errore. + **Return type** > [`str`](https://docs.python.org/3/library/stdtypes.html#str) \ No newline at end of file diff --git a/setup.py b/setup.py index 1990c25..66da049 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="animeworld", # Replace with your own username - version="1.2.1", + version="1.3.1", author="MainKronos", author_email="lorenzo.chesi@live.it", description="AnimeWorld UNOFFICIAL API",