Files
2019-12-14 22:33:14 -05:00

81 lines
2.5 KiB
Python

from manga_py.provider import Provider
from .helpers.std import Std
class MangaDexOrg(Provider, Std):
__content = None
__chapters = None
def get_archive_name(self) -> str:
return self.normal_arc_name({
'vol': self.chapter['volume'],
'ch': self.chapter['chapter'],
})
def get_chapter_index(self) -> str:
return self.chapter_for_json()
def manga_idx(self):
return self.re.search(r'/manga/(\d+)', self.get_url()).group(1)
def get_main_content(self):
if self.__content is None:
content = self.http_get('https://mangadex.org/api/?id={}&type=manga'.format(self.manga_idx()))
self.__content = self.json.loads(content)
return self.__content
def get_manga_name(self) -> str:
return self.content['manga']['title']
@property
def _chapters(self):
chapters = []
for idx in self.content['chapter']:
ch = self.content['chapter'][idx] # type: dict
ch.update({
'key': idx,
})
chapters.append(ch)
return chapters
def get_chapters(self):
if self.__chapters is None:
languages = self.quest(
[],
'Available languages:\n{}\n\nPlease, select your lang (empty for all, space for delimiter lang):'.format(
'\n'.join(self.languages())
)).split(' ')
self.__chapters = self.filter_chapters(languages)
return self.__chapters
def languages(self) -> list:
languages = []
for lang in self._chapters:
if lang['lang_code'] not in languages:
languages.append(lang['lang_code'])
return languages
def filter_chapters(self, languages: list) -> list:
if len(languages) == 0 or languages[0] == '':
return self._chapters
return [chapter for chapter in self._chapters if chapter['lang_code'] in languages]
def get_files(self):
content = self.json.loads(self.http_get('{}/api/?id={}&server=null&type=chapter'.format(
self.domain,
self.chapter['key']
)))
return ['{}{}/{}'.format(content['server'], content['hash'], img) for img in content['page_array']]
def get_cover(self) -> str:
return '{}{}'.format(
self.domain,
self.content['manga']['cover_url'],
)
def chapter_for_json(self) -> str:
return '{}-{}'.format(self.chapter['volume'], self.chapter['chapter'])
main = MangaDexOrg