Update workflows/publish_pypi.yml
[manga-dl.git] / manga_py / providers / comico_co_id_titles.py
bloba64587bac8be39aedb23967dd6275cd5c4edafb5
1 from time import time
3 from manga_py.provider import Provider
4 from .helpers.std import Std
7 class ComicoCoIdTitles(Provider, Std):
8 _url = None
10 def get_chapter_index(self) -> str:
11 return str(self.chapter.get('id', '0'))
13 def _manga_id(self):
14 idx = self.re.search(r'/titles/(\d+)', self.get_url())
15 return idx.group(1)
17 def get_content(self):
18 self._url = '{}/titles/{}'.format(
19 self.domain,
20 self._manga_id(),
22 return self.http_get(self._url)
24 def get_manga_name(self) -> str:
25 h2 = self.document_fromstring(self.content, '.con > h2', 0)
26 return '{} - {}'.format(
27 h2.text_content_full(),
28 self._manga_id()
31 @staticmethod
32 def __parse_page(content):
33 items = []
34 for i in content.get('data', {}).get('list', []):
35 if i.get('salePolicy', {}).get('isFree', False):
36 items.append(i)
37 return items
39 def get_chapters(self):
40 items = []
41 for page in range(1, 10):
42 try:
43 with self.http().get('{}/chapters?page={}&_={}'.format(
44 self._url,
45 page,
46 int(time()),
47 )) as req:
48 content = req.json()
49 if content.get('header', {}).get('resultCode', -1) < 0:
50 break
51 items += self.__parse_page(content)
52 except Exception:
53 break
54 return items
56 def get_files(self):
57 parser = self.html_fromstring('{}/chapters/{}'.format(
58 self._url,
59 self.chapter.get('id'),
60 ), '._view', 0)
61 return self._images_helper(parser, '._image')
63 def get_cover(self) -> str:
64 return self._cover_from_content('.bg_img_small img')
66 def book_meta(self) -> dict:
67 # todo meta
68 pass
71 main = ComicoCoIdTitles