1 contributor
#!/usr/bin/env python3
import requests
import userio
import mangaParser
import zipfile
import os
import hashlib
from pathlib import Path
from os import listdir
from os.path import isfile, join
import shutil
import tempfile
import urllib.request
def read(url,opacity=10,page=1):
mangaParser.say("Downloading: "+url)
file_name = url.split('/')[-1]
urlHash=hashlib.md5(str.encode(url))
urlHashStr=str(urlHash.hexdigest())
cacheFilename="pages/static/cache/"+urlHashStr
cacheFile = Path(cacheFilename)
if cacheFile.is_dir():
mangaParser.ok("Using cached version")
else:
mangaParser.say("Caching...")
with urllib.request.urlopen(url) as response:
with tempfile.NamedTemporaryFile(delete=False) as tmp_file:
shutil.copyfileobj(response, tmp_file)
mangaParser.say("Downloaded: "+tmp_file.name)
os.mkdir(cacheFilename)
with zipfile.ZipFile(tmp_file.name) as zip:
for zip_info in zip.infolist():
if zip_info.filename[-1] == '/':
continue
zip_info.filename = os.path.basename(zip_info.filename)
zip.extract(zip_info, cacheFilename)
os.remove(tmp_file.name)
mangaParser.ok("Caching done")
mangaTitle = file_name
listImages = [f for f in listdir(cacheFilename) if isfile(join(cacheFilename, f))]
listImages.sort()
mangaImagesNum = len(listImages)
mangaParser.say("Manga :"+mangaTitle)
pageContent = mangaParser.addHeader(mangaTitle, None, None, mangaImagesNum, opacity, page)
#pageContent += mangaParser.addImageList(listImages)
pageContent += "<a name=\"article-top\"></a><div id=\"article-current\"></div>\n"
pageContent += "<div class=\"row\">\n\n"
cpt = 0
mangaParser.say("Building page")
for pageImage in listImages:
pageContent += "<div class=\"article\" id=\"article-"+str(cpt)+"\" style=\"display: none;\">\n"
pageContent += " <div class=\"column\" id=\"colLeft\" onclick=\"onArticle("+str(cpt-1)+")\">\n"
pageContent += " <div class=\"arrow-left\"></div>\n"
pageContent += " </div><!-- /column colLeft -->\n"
pageContent += " <div class=\"column\" id=\"colMiddle\">\n"
pageContent += " <a name=\"article-"+str(cpt)+"\">\n"
pageContent += " <img src=\"defer.png\" data-src=\"cache/"+urlHashStr+"/"+pageImage+"\" class=\"center\">\n"
pageContent += " </div><!-- /column colMiddle -->\n\n"
pageContent += " <div class=\"column\" id=\"colRight\" onclick=\"onArticle("+str(cpt+1)+")\">\n"
pageContent += " <div class=\"arrow-right\"></div>\n"
pageContent += " </div><!-- /column colRight -->\n"
pageContent += "</div>\n"
pageContent += "\n"
cpt += 1
pageContent += "</div><!-- /row -->\n"
return pageContent