Update workflows/publish_pypi.yml
[manga-dl.git] / manga_py / providers / mangarussia_com.py
blob14b094c368e0fa24586bde41018e5a2e17e9087c
1 from urllib.parse import unquote, quote
3 from manga_py.provider import Provider
4 from .helpers.std import Std
7 class MangaRussiaCom(Provider, Std):
9 @staticmethod
10 def path_url(url):
11 return quote(unquote(url)).replace('%3A//', '://')
13 def get_chapter_index(self) -> str:
14 chapter = self.chapter
15 result = self.re.search(r'\+(\d+)\+-\+(\d+)', chapter)
16 return '-'.join(result.groups())
18 def get_content(self):
19 url = '{}/manga/{}.html'.format(self.domain, quote(self.manga_name))
20 self._storage['referer'] = self.path_url(self.get_url())
21 return self.http_get(url)
23 def __name(self, url):
24 return self.re.search(r'/manga/(.+)\.html', url).group(1)
26 def get_manga_name(self) -> str:
27 url = self.get_url()
28 if self.re.search('/manga/', url):
29 name = self.__name(url)
30 else:
31 url = self.html_fromstring(url, '.sitemaplist .red', 0).get('href')
32 name = self.__name(url)
33 return unquote(name)
35 def get_chapters(self):
36 return self._elements('.chapterlist .col1 a')
38 def _get_img(self, parser):
39 img = parser.cssselect('img#comicpic')[0]
40 urls = [img.get('src')]
41 onload = img.get('onload')
42 if ~onload and onload.find('(\''):
43 urls.append(self.re.search('\(\'(.+)\'\)', onload).group(1))
44 return urls
46 def get_files(self):
47 parser = self.html_fromstring(self.chapter)
48 result = parser.cssselect('select#page option + option')
49 images = self._get_img(parser)
50 for n, i in enumerate(result):
51 if n and n % 2:
52 parser = self.html_fromstring(i.get('value'))
53 images += self._get_img(parser)
54 return images
56 def get_cover(self):
57 self._cover_from_content('.bookfrontpage > a > img')
59 def before_download_chapter(self):
60 self._storage['referer'] = self.path_url(self.chapter)
62 def book_meta(self) -> dict:
63 # todo meta
64 pass
67 main = MangaRussiaCom