67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
from math import ceil
|
|
|
|
from manga_py.provider import Provider
|
|
from .helpers.std import Std
|
|
|
|
|
|
class KuMangaCom(Provider, Std):
|
|
def get_chapter_index(self) -> str:
|
|
return str(self.chapter_id)
|
|
|
|
def get_main_content(self):
|
|
url = self.re.search(r'(.+\.com/manga/\d+)', self.get_url())
|
|
return self.http_get('%s/' % url.group(1))
|
|
|
|
def get_manga_name(self) -> str:
|
|
selector = r'pagination\(\d+,\'(.+)\',\'pagination\''
|
|
parser = self.re.search(selector, self.content)
|
|
return parser.group(1).strip()
|
|
|
|
def _chapters(self, parser):
|
|
items = parser.cssselect('.table h4.title > a')
|
|
chapters = []
|
|
for i in items:
|
|
c = '{}/{}'.format(self.domain, i.get('href'))
|
|
chapters.append(c.replace('/c/', '/leer/'))
|
|
return chapters
|
|
|
|
def _url_helper(self):
|
|
idx = self.re.search(r'\.com/manga/(\d+)', self.get_url())
|
|
return '{}/manga/{}/p/%d/{}'.format(
|
|
self.domain,
|
|
idx.group(1),
|
|
self.manga_name
|
|
)
|
|
|
|
def get_chapters(self):
|
|
selector = r'\'pagination\',\d+,(\d+),(\d+)'
|
|
pages = self.re.search(selector, self.content).groups()
|
|
pages = ceil(float(pages[0]) / float(pages[1]))
|
|
chapters = []
|
|
url_path = self._url_helper()
|
|
for i in range(int(pages) - 1):
|
|
parser = self.html_fromstring(url_path % (i + 1))
|
|
chapters += self._chapters(parser)
|
|
return chapters
|
|
|
|
def _get_real_url(self, url):
|
|
location = self.http().requests(url=url, method='head')
|
|
return location.headers.get('Location', url)
|
|
|
|
def get_files(self):
|
|
r = self.http().get_redirect_url
|
|
selector = r'(\[\{"npage".+\}\])'
|
|
content = self.http_get(self.chapter)
|
|
items = self.json.loads(self.re.search(selector, content))
|
|
return [r(i.get('imgURL')) for i in items.group(1)]
|
|
|
|
def get_cover(self) -> str:
|
|
return self._cover_from_content('.container img.img-responsive')
|
|
|
|
def book_meta(self) -> dict:
|
|
# todo meta
|
|
pass
|
|
|
|
|
|
main = KuMangaCom
|