66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
from manga_py.provider import Provider
|
|
from .helpers.std import Std
|
|
|
|
|
|
class MangabbCo(Provider, Std):
|
|
|
|
def get_chapter_index(self) -> str:
|
|
chapter = self.chapter
|
|
idx = chapter.rfind('/chapter-')
|
|
return chapter[1 + idx:]
|
|
|
|
def get_main_content(self):
|
|
return self._get_content('{}/manga/{}')
|
|
|
|
def get_manga_name(self) -> str:
|
|
return self._get_name(r'\.co/(?:manga/)?([^/]+)')
|
|
|
|
def get_chapters(self):
|
|
content = self.document_fromstring(self.content, '#chapters a')
|
|
if not content:
|
|
return []
|
|
selector = '#asset_1 select.chapter_select > option'
|
|
result = self.html_fromstring(content, selector)
|
|
return [i.get('value') for i in result[::-1]]
|
|
|
|
@staticmethod
|
|
def __get_img(parser):
|
|
return parser.cssselect('#manga_viewer > a > img')[0].get('src')
|
|
|
|
@staticmethod
|
|
def _img_lifehack1(img, pages_list, images):
|
|
n = 1
|
|
for i in pages_list:
|
|
n += 1
|
|
images.append('{}{}{}'.format(img[0], n, img[1]))
|
|
|
|
def _img_lifehack2(self, pages_list, images):
|
|
for page in pages_list:
|
|
parser = self.html_fromstring(page)
|
|
images.append(self.__get_img(parser))
|
|
|
|
def get_files(self):
|
|
parser = self.html_fromstring(self.chapter, '#body', 0)
|
|
result = parser.cssselect('#asset_2 select.page_select option + option')
|
|
pages_list = [i.get('value') for i in result]
|
|
_first_image = self.__get_img(parser)
|
|
images = [_first_image]
|
|
|
|
img = self.re.search(r'(.+/)\d(\.\w+)', _first_image)
|
|
if img: # livehack
|
|
self._img_lifehack1(img.groups(), pages_list, images)
|
|
else:
|
|
self._img_lifehack2(pages_list, images)
|
|
|
|
return images
|
|
|
|
def get_cover(self):
|
|
return self._cover_from_content('#series_image')
|
|
|
|
def book_meta(self) -> dict:
|
|
# todo meta
|
|
pass
|
|
|
|
|
|
main = MangabbCo
|