Added manga-py source
This commit is contained in:
90
manga-py-stable_1.x/manga_py/providers/mangatail_com.py
Normal file
90
manga-py-stable_1.x/manga_py/providers/mangatail_com.py
Normal file
@@ -0,0 +1,90 @@
|
||||
from manga_py.provider import Provider
|
||||
from .helpers.std import Std
|
||||
|
||||
|
||||
class MangaTailCom(Provider, Std):
|
||||
__local_storage = None
|
||||
|
||||
def get_archive_name(self) -> str:
|
||||
return self.normal_arc_name([
|
||||
self.chapter_id,
|
||||
*self._parse_ch(self.chapter[0]).split('.')
|
||||
])
|
||||
|
||||
def get_chapter_index(self) -> str: # Oh ...
|
||||
pass
|
||||
|
||||
def _parse_ch(self, chapter):
|
||||
_re = r'.+?[^\d](\d+(?:\.\d+)?)'
|
||||
if ~chapter.find('-fixed'):
|
||||
_re = r'.+?[^\d](\d+(?:\.\d+)?).+fixed'
|
||||
re = self.re.search(_re, chapter, self.re.I)
|
||||
if re:
|
||||
return re.group(1)
|
||||
return chapter
|
||||
|
||||
def get_main_content(self):
|
||||
url = self.get_url()
|
||||
if self.__local_storage:
|
||||
url = self.__local_storage
|
||||
return self.http_get(url)
|
||||
|
||||
def get_manga_name(self) -> str:
|
||||
selector = '.main-content-inner .page-header'
|
||||
header = self.html_fromstring(self.get_url(), selector, 0)
|
||||
link = header.cssselect('a.active + a')
|
||||
if link:
|
||||
link = self.http().normalize_uri(link.get('href'))
|
||||
self.__local_storage = link
|
||||
header = self.html_fromstring(link, selector, 0)
|
||||
return header.text_content().strip().replace('/', '_') # http://www.mangasail.com/content/12-prince-manga
|
||||
|
||||
def _fix_chapters(self, items):
|
||||
# http://www.mangasail.com/content/go-toubun-no-hanayome-30-%E2%80%93-fixed
|
||||
# I wanted to sleep. Maybe fix it someday.
|
||||
found = []
|
||||
result = []
|
||||
n = self.http().normalize_uri
|
||||
for i in items:
|
||||
name, url = i.text_content().strip(), i.get('href')
|
||||
_name = self._parse_ch(name)
|
||||
if ~url.find('-fixed'):
|
||||
found.append(_name)
|
||||
for i in items:
|
||||
name = i.text_content().strip()
|
||||
_name = self._parse_ch(name)
|
||||
url = i.get('href')
|
||||
if _name not in found or ~url.find('-fixed'):
|
||||
result.append((name, n(url)))
|
||||
return result
|
||||
|
||||
def get_chapters(self):
|
||||
items = self.document_fromstring(self.content, '.chlist td a')
|
||||
items = self._fix_chapters(items)
|
||||
return sorted(items, key=lambda n: float(self._parse_ch(n[0])), reverse=True)
|
||||
|
||||
def prepare_cookies(self):
|
||||
self._base_cookies()
|
||||
|
||||
def get_files(self):
|
||||
url = self.chapter[1]
|
||||
items = self.html_fromstring('{}{}'.format(url, '?page=all'), '#images img')
|
||||
n = self.http().normalize_uri
|
||||
return [n(i.get('src')) for i in items]
|
||||
|
||||
def get_cover(self) -> str: # TODO
|
||||
cover = self.document_fromstring(self.content, 'iframe.authcache-esi-assembly', 0)
|
||||
cover = self.json.loads(cover.text_content().strip()).get('field')
|
||||
key = cover.keys()[0]
|
||||
cover = self.document_fromstring(cover.get(key), '.field-type-image img', 0)
|
||||
return self.http().normalize_uri(cover.get('src'))
|
||||
|
||||
def book_meta(self) -> dict:
|
||||
# todo meta
|
||||
pass
|
||||
|
||||
def chapter_for_json(self):
|
||||
return self.chapter[1]
|
||||
|
||||
|
||||
main = MangaTailCom
|
||||
Reference in New Issue
Block a user