...
|
...
|
@@ -8,6 +8,7 @@ import urllib.parse
|
8
|
8
|
import configuration
|
9
|
9
|
import socket
|
10
|
10
|
import requests
|
|
11
|
+import re
|
11
|
12
|
from userio import *
|
12
|
13
|
|
13
|
14
|
# Random Example URL: https://manganelo.tv/chapter/dy925032/chapter_21
|
...
|
...
|
@@ -17,6 +18,46 @@ server = None
|
17
|
18
|
csvFilename = None
|
18
|
19
|
connectionResults = None
|
19
|
20
|
|
|
21
|
+def completedManganeloTV(genre):
|
|
22
|
+ if genre is None:
|
|
23
|
+ genre=""
|
|
24
|
+ url = "https://manganelo.tv/genre/"+genre+"?state=completed"
|
|
25
|
+ say("display by genre: ["+genre+"]")
|
|
26
|
+ say(url)
|
|
27
|
+ pageContent = ""
|
|
28
|
+ pageContent += "<div class=\"mangaChapNavig\">\n"
|
|
29
|
+ pageContent += " <div class=\"mangaChapNavigHome\"><a href=\".\"><div class=\"arrow-up\"></div><a></div>\n"
|
|
30
|
+ pageContent += "</div>\n"
|
|
31
|
+ pageContent += "<div class=\"row\">\n"
|
|
32
|
+ if configuration.get_debug() != 0:
|
|
33
|
+ pageContent += "<p>Request: "+url+"</p>\n"
|
|
34
|
+ r = requests.get(url, allow_redirects=True)
|
|
35
|
+ content = r.text
|
|
36
|
+ #pageContent += content
|
|
37
|
+ articleCstBegin="<div class=\"panel-content-genres\">"
|
|
38
|
+ articleCstEnd="<div class=\"panel-page-number\">"
|
|
39
|
+ indexBegin = content.index(articleCstBegin)
|
|
40
|
+ indexEnd = content.index(articleCstEnd)
|
|
41
|
+ dataContent = content[indexBegin+len(articleCstBegin):indexEnd]
|
|
42
|
+ dataContent = re.sub(r"<span class=\"genres-item-time\">(.*?)</span>", '', dataContent)
|
|
43
|
+ dataContent = re.sub(r"<span class=\"genres-item-view\">(.*?)", '<span>', dataContent)
|
|
44
|
+ dataContent = re.sub(r"onerror=\"javascript:this.src='/res/img/404_not_found.webp';\" ", '', dataContent)
|
|
45
|
+ dataContent = re.sub(r"href=\"\/", 'href=\"//manganelo.tv/', dataContent)
|
|
46
|
+ dataContent = re.sub(r"src=\"\/", 'src=\"//manganelo.tv/', dataContent)
|
|
47
|
+ dataContent = re.sub(r"<a rel=\"nofollow\" class=\"genres-item-img\" href=\"", '<a target="new" href="', dataContent)
|
|
48
|
+ dataContent = re.sub(r"<a rel=\"nofollow\" class=\"genres-item-chap text-nowrap a-h\" href=\"", '<a target="new" href="./?url=https:', dataContent)
|
|
49
|
+ dataContent = re.sub(r"<a rel=\"nofollow\" class=\"genres-item-readmore\" href=\"(.*)\">Read more</a>", '', dataContent)
|
|
50
|
+ dataContent = re.sub(r"<i class=\"genres-item-description-linear\"></i>", '', dataContent)
|
|
51
|
+ dataContent = re.sub(r"<em class=\"genres-item-rate\">(.*)</em>", '', dataContent)
|
|
52
|
+ dataContent = re.sub(r"<span class=\"genres-item-author\">(.*?)</span>", '<p class="genres-item-description">\g<1></p>', dataContent)
|
|
53
|
+ dataContent = re.sub(r"<div class=\"genres-item-info\">", '<div>', dataContent)
|
|
54
|
+ dataContent = re.sub(r"<div class=\"content-genres-item\">", '<div class="content-genres-item"><hr>', dataContent)
|
|
55
|
+ dataContent = re.sub(r"<span>(.*),(.*)", '<span>', dataContent)
|
|
56
|
+ pageContent += "</div>\n"
|
|
57
|
+ pageContent += dataContent
|
|
58
|
+
|
|
59
|
+ return pageContent
|
|
60
|
+
|
20
|
61
|
def getManganeloTV(url):
|
21
|
62
|
debug("Downloading: "+url)
|
22
|
63
|
if "manganelo.com" in url:
|
...
|
...
|
@@ -35,7 +76,7 @@ def getManganeloTV(url):
|
35
|
76
|
if "navi-change-chapter-btn-prev a-h" in line and linePreviousChapter is None:
|
36
|
77
|
linePreviousChapter = line
|
37
|
78
|
elif "navi-change-chapter-btn-next a-h" in line and lineNextChapter is None:
|
38
|
|
- print("Found at"+str(line))
|
|
79
|
+ # ~ print("Found at"+str(line))
|
39
|
80
|
lineNextChapter = line
|
40
|
81
|
elif "<meta property=\"og:title\" content=\"" in line and lineTitle is None:
|
41
|
82
|
lineTitle = line
|
...
|
...
|
@@ -138,7 +179,37 @@ class MyServer(BaseHTTPRequestHandler):
|
138
|
179
|
rootdir = 'pages/static/'
|
139
|
180
|
csvFilename = rootdir + server['csv']
|
140
|
181
|
csvFilenameTemp = rootdir + server['csvTemp']
|
141
|
|
- if not os.path.exists(rootdir + self.path) or self.path == '/index.html' or self.path == '/':
|
|
182
|
+
|
|
183
|
+ if '/genre.html' in self.path:
|
|
184
|
+ page=[]
|
|
185
|
+ data_begin = ""
|
|
186
|
+
|
|
187
|
+ s = self.path
|
|
188
|
+ genre = None
|
|
189
|
+ if "genre" in s:
|
|
190
|
+ strGenre = "genre="
|
|
191
|
+ indexGenre = s.index(strGenre)
|
|
192
|
+ genre = s[indexGenre+len(strGenre):len(s)]
|
|
193
|
+ say(genre)
|
|
194
|
+
|
|
195
|
+ with open(configuration.get_pageBegin(),'r') as fStart:
|
|
196
|
+ data_begin += fStart.read().replace( 'CSTAPPNAME', server['name'] )
|
|
197
|
+
|
|
198
|
+ data_end = ""
|
|
199
|
+ with open(configuration.get_pageEnd(),'r') as fEnd:
|
|
200
|
+ data_end += fEnd.read().replace( 'CSTAPPNAME', server['name'] ).replace( 'CSTAPPVERSION', server['version'] )
|
|
201
|
+ data_page = completedManganeloTV(genre)
|
|
202
|
+ page.append(data_begin)
|
|
203
|
+ page.append(data_page)
|
|
204
|
+ page.append(data_end)
|
|
205
|
+ content = ''.join(page)
|
|
206
|
+ self.send_response(200)
|
|
207
|
+ self.send_header("Content-type", "text/html")
|
|
208
|
+ self.send_header('Server',server['name']+" v"+server['version'])
|
|
209
|
+ self.end_headers()
|
|
210
|
+ self.wfile.write(content.encode('utf-8'))
|
|
211
|
+
|
|
212
|
+ elif not os.path.exists(rootdir + self.path) or self.path == '/index.html' or self.path == '/':
|
142
|
213
|
if self.headers['X-Real-IP'] is None:
|
143
|
214
|
say("From: "+self.client_address[0]+" GET Received : "+self.path)
|
144
|
215
|
else:
|
...
|
...
|
@@ -170,6 +241,8 @@ class MyServer(BaseHTTPRequestHandler):
|
170
|
241
|
if not url is None:
|
171
|
242
|
if "manganelo" in url:
|
172
|
243
|
data_page += getManganeloTV(url)
|
|
244
|
+ elif "readmanganato.com" in url:
|
|
245
|
+ data_page += getManganeloTV(url)
|
173
|
246
|
else:
|
174
|
247
|
date_page += "Unsupported hoster at "+url
|
175
|
248
|
|
...
|
...
|
@@ -190,6 +263,7 @@ class MyServer(BaseHTTPRequestHandler):
|
190
|
263
|
self.send_header('Server',server['name']+" v"+server['version'])
|
191
|
264
|
self.end_headers()
|
192
|
265
|
self.wfile.write(content.encode('utf-8'))
|
|
266
|
+
|
193
|
267
|
elif not os.path.exists(rootdir + self.path):
|
194
|
268
|
self.send_header('Server',server['name']+" v"+server['version'])
|
195
|
269
|
self.send_error(404, 'file not found')
|