Added manga-py source
This commit is contained in:
94
manga-py-stable_1.x/manga_py/providers/manhuagui_com.py
Normal file
94
manga-py-stable_1.x/manga_py/providers/manhuagui_com.py
Normal file
@@ -0,0 +1,94 @@
|
||||
import random
|
||||
|
||||
from manga_py.crypt import ManhuaGuiComCrypt
|
||||
from manga_py.provider import Provider
|
||||
from .helpers.std import Std
|
||||
|
||||
|
||||
class ManhuaGuiCom(Provider, Std):
|
||||
servers = [
|
||||
'i.hamreus.com:8080',
|
||||
'us.hamreus.com:8080',
|
||||
'dx.hamreus.com:8080',
|
||||
'eu.hamreus.com:8080',
|
||||
'lt.hamreus.com:8080',
|
||||
]
|
||||
|
||||
def _get_ch_idx(self):
|
||||
chapter = self.chapter
|
||||
return self.re.search(r'/comic/[^/]+/(\d+)', chapter.get('href')).group(1)
|
||||
|
||||
def get_archive_name(self) -> str:
|
||||
return super().get_archive_name() + '-' + self._get_ch_idx()
|
||||
|
||||
def get_chapter_index(self) -> str:
|
||||
chapter = self.chapter
|
||||
span = chapter.cssselect('span')
|
||||
idx = self._get_ch_idx()
|
||||
if span:
|
||||
span = span[0].text_content()
|
||||
i = self.re.search(r'(\d+)', span).group(1)
|
||||
return '{}-{}'.format(i, idx)
|
||||
return '0-{}'.format(idx)
|
||||
|
||||
def get_main_content(self):
|
||||
_ = self._get_name(r'/comic/(\d+)')
|
||||
return self.http_get('{}/comic/{}/'.format(self.domain, _))
|
||||
|
||||
def get_manga_name(self) -> str:
|
||||
url = self.get_url()
|
||||
selector = 'h1'
|
||||
if self.re.search(r'/comic/\d+/\d+\.html', url):
|
||||
selector = 'h1 > a'
|
||||
return self.html_fromstring(url, selector, 0).text_content()
|
||||
|
||||
def get_chapters(self):
|
||||
parser = self.document_fromstring(self.content)
|
||||
chapters = parser.cssselect('.chapter-list li > a')
|
||||
if not len(chapters):
|
||||
code = parser.cssselect('#__VIEWSTATE')[0].get('value')
|
||||
manhuagui = ManhuaGuiComCrypt()
|
||||
js = manhuagui.decrypt('LZString.decompressFromBase64("' + code + '")', '<a></a>')
|
||||
chapters = self.document_fromstring(js, '.chapter-list li > a')
|
||||
return chapters
|
||||
|
||||
def parse_files_data(self, data):
|
||||
images = []
|
||||
md5 = data.get('sl', {}).get('md5', '')
|
||||
cid = data.get('cid', '')
|
||||
for i in data.get('files', []):
|
||||
prior = 3
|
||||
ln = len(self.servers)
|
||||
server = int(random.random() * (ln + prior))
|
||||
server = 0 if server < prior else server - prior
|
||||
images.append('http://{}{}{}?cid={}&md5={}'.format(
|
||||
self.servers[server],
|
||||
data.get('path', ''),
|
||||
i, cid, md5
|
||||
))
|
||||
return images
|
||||
|
||||
def get_files(self):
|
||||
url = self.chapter
|
||||
self._storage['referer'] = url
|
||||
content = self.http_get(url)
|
||||
js = self.re.search(r'\](\(function\(.+\))\s?<', content)
|
||||
if not js:
|
||||
return []
|
||||
manhuagui = ManhuaGuiComCrypt()
|
||||
data = manhuagui.decrypt(js.group(1), '')
|
||||
data = self.re.search(r'\(({.+})\)', data)
|
||||
if not data:
|
||||
return []
|
||||
data = self.json.loads(data.group(1))
|
||||
return self.parse_files_data(data)
|
||||
|
||||
def get_cover(self):
|
||||
return self._cover_from_content('.hcover img')
|
||||
|
||||
def book_meta(self) -> dict:
|
||||
# todo meta
|
||||
pass
|
||||
|
||||
|
||||
main = ManhuaGuiCom
|
||||
Reference in New Issue
Block a user