Update workflows/publish_pypi.yml
[manga-dl.git] / manga_py / providers / mangahub_io.py
blob7c87896b29def854b72f9557a42fb7609f2a8c9c
1 from manga_py.provider import Provider
2 from .helpers.std import Std
5 class MangaHubIo(Provider, Std):
6 _api = 'https://api.mghubcdn.com/graphql'
7 _cdn = 'https://img.mghubcdn.com/file/imghub/'
9 def get_chapter_index(self) -> str:
10 chapter = self.chapter
11 return self.re.search(r'/chapter/[^/]+/\w+-([^/]+)', chapter).group(1)
13 def get_content(self):
14 return self._get_content('{}/manga/{}')
16 def get_manga_name(self) -> str:
17 return self._get_name('/(?:manga|chapter)/([^/]+)')
19 def get_chapters(self):
20 return self._elements('.list-group .list-group-item > a')
22 def get_files(self):
23 query = "{chapter(x:mh01,slug:\"%(name)s\",number:%(num)d)" \
24 "{id,title,mangaID,number,slug,date,pages,noAd,manga" \
25 "{id,title,slug,mainSlug,author,isWebtoon,isYaoi,isPorn,isSoftPorn,unauthFile,isLicensed" \
26 "}}}" % {'name': self.manga_name, 'num': self.chapter_id + 1}
27 with self.http_post(self._api, data={
28 "query": query
29 }) as resp:
30 content = resp.json()
32 pages = content.get('data', {}).get('chapter', {}).get('pages', '{}')
33 pages = self.json.loads(pages)
35 images = []
36 for p in pages:
37 images.append('{}{}'.format(self._cdn, pages[p]))
38 return images
40 def get_cover(self) -> str:
41 return self._cover_from_content('.row > div > img.img-responsive')
43 def book_meta(self) -> dict:
44 # todo meta
45 pass
48 main = MangaHubIo