-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathdoujintoshokan.py
51 lines (39 loc) · 1.71 KB
/
doujintoshokan.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/python
import re
from manga import Manga, App
def format_fixed_float(v, length=3):
while (v.find('.') >= 0 and v.find('.') < length) or \
(v.find('.') < 0 and len(v) < length):
v = '0'+v
return v
class DoujinToshokan(Manga):
SERIES_URL = '%(baseurl)s/series/%(series)s'
CHAPTER_URL = '%(baseurl)s/read/%(series)s/%(scanlator)s/%(chapter)s'
PAGE_URL = '%(baseurl)s/read/%(series)s/%(scanlator)s/%(chapter)s/%(page)d'
CHAPTER_PATTERN = '%(series)s-%(chapter_label)s-%(scanlator)s.cbz'
PAGE_PATTERN = '%(series)s-%(chapter_label)s-%(scanlator)s-%(page)02d'
def __init__(self):
Manga.__init__(self, 'http://www.doujintoshokan.com',
{'Cookie': 'filter=0'})
def _list_chapters(self, doc):
chapters = doc.xpath("//td[@class='cont_mid']/table/tr/td[2]/a")
chapters = [{'chapter': i.attrib['href'].split('/')[-1],
'chapter_label': format_fixed_float(i.attrib['href'].split('/')[-1]),
'scanlator': i.attrib['href'].split('/')[-2]} for i in chapters]
return chapters
def _list_pages(self, doc):
pages = doc.xpath("//select[@class='headerSelect']/option")
pages = [int(i.attrib['value'].split('/')[-1]) for i in pages]
return list(set(pages))
def _download_page(self, doc):
url = doc.xpath("//img[@id='readerPage']")[0].attrib['src']
return url.replace(' ', '%20')
class DoujinToshokanApp(App):
def __init__(self):
App.__init__(self, chapter_func=str)
self.manga = DoujinToshokan()
def _parse_args(self, parser):
App._parse_args(self, parser)
if __name__ == '__main__':
app = DoujinToshokanApp()
app.run()