-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathecchimanga.py
66 lines (52 loc) · 2.06 KB
/
ecchimanga.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/python
import re
from manga import Manga, App
class EcchiManga(Manga):
SERIES_URL = '%(baseurl)s/Read/%(series)s'
CHAPTER_URL = '%(baseurl)s/Read/%(series)s/%(chapter)s'
PAGE_URL = '%(baseurl)s/Read/%(series)s/%(chapter)s/%(page)02d/'
CHAPTER_CRE = re.compile(r'/Read/[^/]+/(?P<chapter>[0-9.]+)')
PAGE_CRE = re.compile(r'/Read/[^/]+/(?P<chapter>[0-9.]+)/(?P<page>[0-9.]+)/')
CHAPTER_PATTERN = '%(series)s-%(chapter)s.cbz'
PAGE_PATTERN = '%(series)s-%(chapter)s-%(page)02d'
def __init__(self):
Manga.__init__(self, 'http://ecchi-manga.net')
self.options['urlopen_args'].update({
'ignore500': True,
})
def _list_chapters(self, doc):
chapters = []
for n in doc.xpath("//table[@id='updates']/tr/th/a"):
m = self.CHAPTER_CRE.match(n.attrib['href'])
chapters.append({'chapter': m.group('chapter'),
'chapter_label': m.group('chapter')})
chapters.reverse()
return chapters
def _list_pages(self, doc):
pages = []
for n in doc.xpath("//select[@id='pages']/option"):
m = self.PAGE_CRE.match(n.attrib['value'])
if not m:
pages.append(1)
else:
pages.append(int(m.group('page')))
return list(set(pages))
def _download_page(self, doc):
url = doc.xpath("//img[@id='bigimage']")[0].attrib['src']
return url.replace(' ', '%20')
class EcchiMangaApp(App):
def __init__(self):
App.__init__(self, extract_range=False, chapter_func=str)
self.manga = EcchiManga()
def _parse_args(self, parser):
App._parse_args(self, parser)
if __name__ == '__main__':
#import sys
#mr = EcchiManga()
#print mr.list_chapters({'series': 'kekkaishi'})
#print mr.list_pages({'series': 'kekkaishi', 'chapter': 1})
#mr.download_page({'series': 'kekkaishi', 'chapter': 1, 'page': 1})
#mr.download_chapter({'series': 'kekkaishi', 'chapter': 1})
#sys.exit(-1)
app = EcchiMangaApp()
app.run()