73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
from manga_py.provider import Provider
|
|
from .helpers.std import Std
|
|
|
|
|
|
class MangaParkOrg(Provider, Std):
|
|
__url = None
|
|
|
|
def get_chapter_index(self) -> str:
|
|
return self.chapter[0].replace('.', '-')
|
|
|
|
def get_main_content(self):
|
|
return self.http_get(self.__url)
|
|
|
|
def get_manga_name(self) -> str:
|
|
title = self.html_fromstring(self.get_url(), 'h3 > a, h4 > a', 0)
|
|
self.__url = self.http().normalize_uri(title.get('href'))
|
|
return title.text_content().strip()
|
|
|
|
def _print_variants(self, variants):
|
|
self.log('Please, select lang. (empty for all langs)')
|
|
for n, i in enumerate(variants):
|
|
lng = i.cssselect('.card-header a')[0].text_content()
|
|
self.log('\n%d: ' % (n + 1) + lng, end='')
|
|
|
|
def _answer(self, max_digit):
|
|
while True:
|
|
answer = self.quest([], 'Answer (digit): ')
|
|
if len(answer) > 0 and (int(answer) > max_digit or int(answer) <= 0):
|
|
self.log('Wrong answer! Try one more.')
|
|
else:
|
|
return answer
|
|
|
|
def get_chapters(self):
|
|
# multi-lang!
|
|
variants = self._elements('div.card')
|
|
answer = '1'
|
|
if len(variants) > 1:
|
|
self._print_variants(variants)
|
|
answer = self._answer(len(variants))
|
|
if len(variants) > 1 and not len(answer):
|
|
parser = self.document_fromstring(self.content)
|
|
else:
|
|
parser = variants[int(answer) - 1]
|
|
items = parser.cssselect('.card-body i + a')
|
|
result = []
|
|
re = self.re.compile(r'[Cc]h\.(\d+(?:\.\d+)?)')
|
|
n = self.http().normalize_uri
|
|
for i in items:
|
|
text = i.text_content()
|
|
result.append((
|
|
re.search(text).group(1),
|
|
n(i.get('href')),
|
|
))
|
|
return result
|
|
|
|
def get_files(self):
|
|
re = self.re.compile(r'images\s*=\s*(\[.+\]);')
|
|
content = self.http_get(self.chapter[1])
|
|
items = self.json.loads(re.search(content).group(1))
|
|
return items
|
|
|
|
def get_cover(self) -> str:
|
|
return self._cover_from_content('.order-0 > img')
|
|
|
|
def book_meta(self) -> dict:
|
|
pass
|
|
|
|
def chapter_for_json(self) -> str:
|
|
return self.chapter[1]
|
|
|
|
|
|
main = MangaParkOrg
|