72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
from time import time
|
|
|
|
from manga_py.provider import Provider
|
|
from .helpers.std import Std
|
|
|
|
|
|
class ComicoCoIdTitles(Provider, Std):
|
|
_url = None
|
|
|
|
def get_chapter_index(self) -> str:
|
|
return str(self.chapter.get('id', '0'))
|
|
|
|
def _manga_id(self):
|
|
idx = self.re.search(r'/titles/(\d+)', self.get_url())
|
|
return idx.group(1)
|
|
|
|
def get_main_content(self):
|
|
self._url = '{}/titles/{}'.format(
|
|
self.domain,
|
|
self._manga_id(),
|
|
)
|
|
return self.http_get(self._url)
|
|
|
|
def get_manga_name(self) -> str:
|
|
h2 = self.document_fromstring(self.content, '.con > h2', 0)
|
|
return '{} - {}'.format(
|
|
h2.text_content(),
|
|
self._manga_id()
|
|
)
|
|
|
|
@staticmethod
|
|
def __parse_page(content):
|
|
items = []
|
|
for i in content.get('data', {}).get('list', []):
|
|
if i.get('salePolicy', {}).get('isFree', False):
|
|
items.append(i)
|
|
return items
|
|
|
|
def get_chapters(self):
|
|
items = []
|
|
for page in range(1, 10):
|
|
content = self.http_get('{}/chapters?page={}&_={}'.format(
|
|
self._url,
|
|
page,
|
|
int(time()),
|
|
))
|
|
try:
|
|
content = self.json.loads(content)
|
|
if content.get('header', {}).get('resultCode', -1) < 0:
|
|
break
|
|
items += self.__parse_page(content)
|
|
except Exception:
|
|
break
|
|
return items
|
|
|
|
def get_files(self):
|
|
parser = self.html_fromstring('{}/chapters/{}'.format(
|
|
self._url,
|
|
self.chapter.get('id'),
|
|
), '._view', 0)
|
|
return self._images_helper(parser, '._image')
|
|
|
|
def get_cover(self) -> str:
|
|
return self._cover_from_content('.bg_img_small img')
|
|
|
|
def book_meta(self) -> dict:
|
|
# todo meta
|
|
pass
|
|
|
|
|
|
main = ComicoCoIdTitles
|