Added manga-py source
This commit is contained in:
80
manga-py-stable_1.x/manga_py/providers/mangadex_org.py
Normal file
80
manga-py-stable_1.x/manga_py/providers/mangadex_org.py
Normal file
@@ -0,0 +1,80 @@
|
||||
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
|
||||
Reference in New Issue
Block a user