", '
', dataContent)
dataContent = re.sub(r"(.*),(.*)", '', dataContent)
pageContent += "\n"
pageContent += dataContent
return pageContent
def getManganeloTV(url):
debug("Downloading: "+url)
#if "manganelo.com" in url:
# url=url.replace("manganelo.com","manganelo.tv")
# say("Replace URL:"+url)
r = requests.get(url, allow_redirects=True)
content = r.text
isMangakakalot = 0
if "mangakakalot.com" in url:
isMangakakalot = 1
#print(r.text)
lineNextChapter = None
linePreviousChapter = None
lineTitle = None
linkNext = None
linkPrev = None
listImages = []
for line in content.split("\n"):
if "navi-change-chapter-btn-prev a-h" in line and linePreviousChapter is None:
linePreviousChapter = line
elif "navi-change-chapter-btn-next a-h" in line and lineNextChapter is None:
print("Found at"+str(line))
lineNextChapter = line
elif "
" in line and lineNextChapter is None and linkNext is None:
for subLine in line.split("><"):
if "NEXT CHAPTER" in subLine:
linkNext=subLine.split("'")[1]
elif isMangakakalot == 1 and "
" in line and linePreviousChapter is None and linkPrev is None:
for subLine in line.split("><"):
if "PREV CHAPTER" in subLine:
linkPrev=subLine.split("'")[1]
elif "
![]()
<"):
if "https://" in subLine:
if ".jpg" in subLine.split("\"")[1]:
listImages.append(subLine.split("\"")[1])
if None is not linePreviousChapter:
say("Prev :"+str(len(linePreviousChapter)))
#i.e First chapter is opened
if 200 < len(linePreviousChapter):
tempLine = linePreviousChapter
linePreviousChapter = None
for line in tempLine.split("><"):
if "navi-change-chapter-btn-prev a-h" in line and linePreviousChapter is None:
linePreviousChapter = line
linkPrev=linePreviousChapter.split("\"")[5]
else:
linkPrev="https://manganelo.tv"+linePreviousChapter.split("\"")[5]
if None is not lineNextChapter:
#i.e Last chapter is opened
say("Next :"+str(len(lineNextChapter)))
if 200 < len(lineNextChapter):
tempLine = lineNextChapter
lineNextChapter = None
for line in tempLine.split("><"):
if "navi-change-chapter-btn-next a-h" in line and lineNextChapter is None:
lineNextChapter = line
linkNext=lineNextChapter.split("\"")[5]
else:
linkNext="https://manganelo.tv"+lineNextChapter.split("\"")[5]
mangaImagesNum = len(listImages)
if not isMangakakalot:
mangaTitle=lineTitle.split("\"")[3].split(" - Manganelo")[0]
else:
mangaTitle=lineTitle.split("\"")[3].split(" - Mangakakalot.com")[0]
say("Manga :"+mangaTitle)
pageContent = ""
pageContent += "
\n"
pageContent += "
"+mangaTitle+"
\n"
if linkPrev is not None:
pageContent += "
\n"
if linkNext is not None:
pageContent += "
\n"
pageContent += "
\n"
pageContent += "
/ "+str(mangaImagesNum)+"\n"
pageContent += "
0\n"
pageContent += "
\n"
opacityValue=2;
if 7 <= datetime.datetime.now().hour and 20 >= datetime.datetime.now().hour:
opacityValue=10;
pageContent += "
☼"
pageContent += "
"+str(opacityValue)+""
pageContent += "
☀\n"
pageContent += "
\n"
pageContent += "
\n"
pageContent += "
\n"
pageContent += "
\n\n"
cpt = 0
for pageImage in listImages:
#debug(pageImage)
pageContent += "
\n"
pageContent += "
\n"
pageContent += "
\n"
pageContent += "
\n"
pageContent += "
\n\n"
pageContent += "
\n"
pageContent += "
\n"
pageContent += "
\n"
pageContent += "
\n"
pageContent += "\n"
cpt += 1
pageContent += "
\n"
return pageContent
class MyServer(BaseHTTPRequestHandler):
def log_message(self, format, *args):
# To silence the default output of server (too verbose)
return
def do_GET(self):
global csvFilename
global csvFilenameTemp
global connectionResults
rootdir = 'pages/static/'
csvFilename = rootdir + server['csv']
csvFilenameTemp = rootdir + server['csvTemp']
if '/list.html' in self.path:
page=[]
data_begin = ""
with open(configuration.get_pageBegin(),'r') as fStart:
data_begin += fStart.read().replace( 'CSTAPPNAME', server['name'] )
data_end = ""
with open(configuration.get_pageEnd(),'r') as fEnd:
data_end += fEnd.read().replace( 'CSTAPPNAME', server['name'] ).replace( 'CSTAPPVERSION', server['version'] )
data_page = ""
with open("list.html", "rt") as f:
lines=f.readlines()
for line in lines:
data_page += "
"+line.split("@")[1]+""
f.close()
page.append(data_begin)
page.append(data_page)
page.append(data_end)
content = ''.join(page)
self.send_response(200)
self.send_header("Content-type", "text/html")
self.send_header('Server',server['name']+" v"+server['version'])
self.end_headers()
self.wfile.write(content.encode('utf-8'))
elif not os.path.exists(rootdir + self.path) or self.path == '/index.html' or self.path == '/':
if self.headers['X-Real-IP'] is None:
say("From: "+self.client_address[0]+" GET Received : "+self.path)
else:
say("From: "+self.headers['X-Real-IP']+" GET Received : "+self.path)
page=[]
data_begin = ""
with open(configuration.get_pageBegin(),'r') as fStart:
data_begin += fStart.read().replace( 'CSTAPPNAME', server['name'] )
data_end = ""
with open(configuration.get_pageEnd(),'r') as fEnd:
data_end += fEnd.read().replace( 'CSTAPPNAME', server['name'] ).replace( 'CSTAPPVERSION', server['version'] )
s = self.path
urlArgs = urllib.parse.parse_qs(s[2:])
url = None
if "url" in urlArgs:
url = urlArgs['url'][0]
data_page = ""
#Forging response
if configuration.get_debug() != 0:
data_page += "
Request: "+self.path+"
\n"
data_page += "
"+json.dumps(urlArgs)+"\n"
if not url is None:
if "manganelo" in url:
data_page += getManganeloTV(url)
elif "readmanganato.com" in url:
data_page += getManganeloTV(url)
elif "mangakakalot.com" in url:
data_page += getManganeloTV(url)
else:
warn("Unsupported Hoster at "+url)
data_page += "
Unsupported hoster at "+url+""
data_page += "
"
else:
try:
with open(server['favorite'], "rt") as f:
lines=f.readlines()
for line in lines:
data_page += "
"+line+""
f.close()
except:
pass
data_form = "
\n"
data_page += data_form
page.append(data_begin)
page.append(data_page)
page.append(data_end)
content = ''.join(page)
self.send_response(200)
self.send_header("Content-type", "text/html")
self.send_header('Server',server['name']+" v"+server['version'])
self.end_headers()
self.wfile.write(content.encode('utf-8'))
elif not os.path.exists(rootdir + self.path):
self.send_header('Server',server['name']+" v"+server['version'])
self.send_error(404, 'file not found')
else:
try:
#say(self.path)
f = open(rootdir + self.path,'rb') #open requested file
self.send_response(200)
if self.path.endswith('.css'):
self.send_header('Content-type','text/css')
elif self.path.endswith('.bmp'):
self.send_header('Content-type','image/x-ms-bmp')
elif self.path.endswith('.png'):
self.send_header('Content-type','image/png')
elif self.path.endswith('.jpg'):
self.send_header('Content-type','image/jpeg')
else:
self.send_header('Content-type','text/html')
self.send_header('Server',server['name']+" v"+server['version'])
self.end_headers()
self.wfile.write(f.read())
f.close()
return
except IOError:
self.send_header('Server',server['name']+" v"+server['version'])
self.send_error(404, 'file not found')
if __name__ == "__main__":
#global server
server = configuration.get_server()
say(server['name']+" v"+server['version'])
webServer = HTTPServer((server['address'], server['port']), MyServer)
say("Server started http://%s:%s" % (server['address'], server['port']))
try:
webServer.serve_forever()
except KeyboardInterrupt:
pass
webServer.server_close()
print("Server stopped.")