re-implement mangadex api myself
This commit is contained in:
parent
a4c70f454f
commit
9985525576
90
manga.py
90
manga.py
|
|
@ -1,33 +1,83 @@
|
|||
import mangadex as md
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
import requests
|
||||
|
||||
load_dotenv()
|
||||
|
||||
base_url = "https://api.mangadex.org"
|
||||
|
||||
class MangaWrapper:
|
||||
|
||||
class Chapter:
|
||||
def __init__(self, id: str, _base_url=base_url):
|
||||
self.id = id
|
||||
self.base_url = _base_url
|
||||
|
||||
def _get_self(self):
|
||||
r = requests.get(
|
||||
f"{self.base_url}/chapter/{self.id}"
|
||||
)
|
||||
return r.json()["data"]
|
||||
|
||||
def get_chapter_num(self) -> str:
|
||||
return self._get_self()["attributes"]["chapter"]
|
||||
|
||||
def get_chapter_url(self) -> str:
|
||||
return self._get_self()["attributes"]["readableAt"]
|
||||
|
||||
def __str__(self):
|
||||
return str({
|
||||
"chapter_num": self.get_chapter_num(),
|
||||
})
|
||||
|
||||
|
||||
class Manga:
|
||||
def __init__(self, id: str, _base_url=base_url):
|
||||
self.id = id
|
||||
self.base_url = _base_url
|
||||
|
||||
def _get_self(self):
|
||||
r = requests.get(
|
||||
f"{self.base_url}/manga/{self.id}"
|
||||
)
|
||||
return r.json()["data"]
|
||||
|
||||
def get_title(self) -> str:
|
||||
return self._get_self()["attributes"]["title"]
|
||||
|
||||
def get_latest_chap(self) -> Chapter:
|
||||
return Chapter(self._get_self()["attributes"]["latestUploadedChapter"])
|
||||
|
||||
def __str__(self):
|
||||
return str({
|
||||
"title": self.get_title(),
|
||||
"latest_chapter": str(self.get_latest_chap())
|
||||
})
|
||||
|
||||
|
||||
class MangaHandler:
|
||||
def __init__(self):
|
||||
self.auth = md.auth.Auth()
|
||||
self.auth.login(os.environ.get("MANGADEX_USR"),
|
||||
os.environ.get("MANGADEX_PSWD"),
|
||||
os.environ.get("MANGADEX_CLIENT"),
|
||||
os.environ.get("MANGADEX_TOKEN")
|
||||
)
|
||||
self.manga = md.series.Manga(auth=self.auth)
|
||||
self.chapter = md.series.Chapter(auth=self.auth)
|
||||
self.base_url = base_url
|
||||
|
||||
def search(self, title: str, limit: int = 10) -> list[md.series.Manga]:
|
||||
return self.manga.get_manga_list(title=title)
|
||||
|
||||
def get_latest_chapter(self, manga_to_get: md.series.Manga) -> int:
|
||||
manga_feed = self.manga.manga_feed(manga_id=manga_to_get.manga_id)
|
||||
print(manga_feed[0].chapter)
|
||||
def search(self, title: str) -> list[Manga]:
|
||||
r = requests.get(
|
||||
f"{self.base_url}/manga",
|
||||
params={"title": title}
|
||||
)
|
||||
data = r.json()["data"]
|
||||
manga_list: list[Manga] = []
|
||||
for manga in data:
|
||||
manga_id = manga["id"]
|
||||
manga_list.append(Manga(manga_id))
|
||||
|
||||
return manga_list
|
||||
|
||||
def get_chapter(self, chapter_id: str):
|
||||
r = requests.get(
|
||||
f"{self.base_url}/chapter/{chapter_id}"
|
||||
)
|
||||
return r.json()["data"]
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
mw = MangaWrapper()
|
||||
manga = mw.search("Release That Witch")[0]
|
||||
print(manga.title)
|
||||
mw.get_latest_chapter(manga)
|
||||
mh = MangaHandler()
|
||||
print(mh.search("Release That Witch")[0])
|
||||
|
|
|
|||
Loading…
Reference in New Issue