Compare commits
No commits in common. "8c69a958def4c14a930e568692c98e30e2d6ed26" and "e239eb7159520b262392f91637c319e20d71aa0a" have entirely different histories.
8c69a958de
...
e239eb7159
123
main.py
123
main.py
@ -1,4 +1,4 @@
|
||||
from flask import Flask, redirect,url_for, render_template, send_from_directory, request
|
||||
from flask import Flask, render_template, send_from_directory, request
|
||||
from flask_httpauth import HTTPBasicAuth
|
||||
from werkzeug.security import check_password_hash
|
||||
from gevent.pywsgi import WSGIServer
|
||||
@ -13,7 +13,6 @@ import re
|
||||
import datetime
|
||||
import sys
|
||||
import time
|
||||
import numpy as np
|
||||
from pathlib import Path
|
||||
from io import BytesIO
|
||||
|
||||
@ -36,82 +35,31 @@ def verify_password(username, password):
|
||||
):
|
||||
return username
|
||||
|
||||
@app.route("/", methods=['POST','GET'])
|
||||
|
||||
@app.route("/")
|
||||
def startpage():
|
||||
#result = "Hello, World!"
|
||||
config._print(request.method)
|
||||
if request.method == 'POST':
|
||||
if request.form.get('Create') == 'Create':
|
||||
# pass
|
||||
config._print("open")
|
||||
conn = sqlite3.connect('app.db')
|
||||
cursor = conn.cursor()
|
||||
|
||||
cursor.execute("create table COMICS (CVDB,ISSUE,SERIES,VOLUME, PUBLISHER, TITLE, FILE,PATH,UPDATED,PRIMARY KEY(CVDB))")
|
||||
result = cursor.fetchall()
|
||||
conn.close()
|
||||
config._print("Encrypted")
|
||||
elif request.form.get('Import') == 'Import':
|
||||
# pass # do something else
|
||||
config._print("Decrypted")
|
||||
return redirect(url_for('import2sql'))
|
||||
elif request.form.get('Generate') == 'Generate':
|
||||
config._print("Generate Covers from Start page")
|
||||
return redirect(url_for('generate'))
|
||||
else:
|
||||
# pass # unknown
|
||||
return render_template("first.html")
|
||||
elif request.method == 'GET':
|
||||
# return render_template("index.html")
|
||||
config._print("No Post Back Call")
|
||||
conn = sqlite3.connect('app.db')
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("select * from comics LIMIT " + str(config.DEFAULT_SEARCH_NUMBER) + ";")
|
||||
result = cursor.fetchall()
|
||||
|
||||
try:
|
||||
cursor.execute("select * from comics LIMIT " + str(config.DEFAULT_SEARCH_NUMBER) + ";")
|
||||
result = cursor.fetchall()
|
||||
|
||||
pub_list = ["Marvel", "DC Comics","Dark Horse Comics","Oni Press"]
|
||||
count = []
|
||||
for i in pub_list:
|
||||
cursor.execute("select count(*) from comics where Publisher = '" + i + "';")
|
||||
count.append(cursor.fetchone()[0])
|
||||
|
||||
cursor.execute("SELECT volume, COUNT(volume) FROM comics GROUP BY volume ORDER BY volume;")
|
||||
volume = cursor.fetchall()
|
||||
|
||||
|
||||
|
||||
x = []
|
||||
y = []
|
||||
for i in volume:
|
||||
x.append(i[0])
|
||||
y.append(i[1])
|
||||
conn.close()
|
||||
|
||||
try:
|
||||
total = np.sum(np.array(volume).astype('int')[:,1],axis=0)
|
||||
dir_path = r'thumbnails'
|
||||
covers = 0
|
||||
for path in os.listdir(dir_path):
|
||||
if os.path.isfile(os.path.join(dir_path,path)):
|
||||
covers += 1
|
||||
config._print("covers: " + str(covers))
|
||||
except Exception as e:
|
||||
config._print(e)
|
||||
return render_template("start.html", first=False,result=result,pub_list=pub_list,count=count,x=x,y=y,total=total,covers=covers)
|
||||
except:
|
||||
conn.close()
|
||||
|
||||
config._print('first')
|
||||
return render_template("start.html",first=True)
|
||||
|
||||
#@app.route("/first", methods=['GET', 'POST'])
|
||||
#def first():
|
||||
# return render_template('first.html',result=result)
|
||||
|
||||
pub_list = ["Marvel", "DC Comics","Dark Horse Comics","Oni Press"]
|
||||
count = []
|
||||
for i in pub_list:
|
||||
cursor.execute("select count(*) from comics where Publisher = '" + i + "';")
|
||||
count.append(cursor.fetchone()[0])
|
||||
|
||||
cursor.execute("SELECT volume, COUNT(volume) FROM comics GROUP BY volume ORDER BY volume;")
|
||||
volume = cursor.fetchall()
|
||||
|
||||
x = []
|
||||
y = []
|
||||
for i in volume:
|
||||
x.append(i[0])
|
||||
y.append(i[1])
|
||||
conn.close()
|
||||
return render_template("start.html", result=result,pub_list=pub_list,count=count,x=x,y=y)
|
||||
|
||||
@app.route("/healthz")
|
||||
def healthz():
|
||||
@ -137,8 +85,7 @@ def generate():
|
||||
Bs_data = BeautifulSoup(s.open('ComicInfo.xml').read(), "xml")
|
||||
CVDB=extras.get_cvdb(Bs_data.select('Notes'))
|
||||
if force == 'True':
|
||||
ext = [i for i, x in enumerate(filelist) if re.search("(?i)\.jpg|png|jpeg$", x)]
|
||||
cover = s.open(filelist[ext[0]]).read()
|
||||
cover = s.open(filelist[1]).read()
|
||||
|
||||
image = Image.open(BytesIO(cover))
|
||||
image.thumbnail(config.MAXSIZE,Image.ANTIALIAS)
|
||||
@ -150,13 +97,7 @@ def generate():
|
||||
#c.close()
|
||||
generated = generated + 1
|
||||
elif Path(config.THUMBNAIL_DIR + "/" + str(CVDB) + ".jpg").exists() == False:
|
||||
ext = [i for i, x in enumerate(filelist) if re.search("(?i)\.jpg|png|jpeg$", x)]
|
||||
config._print(filelist)
|
||||
config._print(ext)
|
||||
config._print(filelist[ext[0]])
|
||||
cover = s.open(filelist[ext[0]]).read()
|
||||
#xyz = [i for i, x in enumerate(filelist) if re.match('*\.py$',x)]
|
||||
#config._print(xyz)
|
||||
cover = s.open(filelist[1]).read()
|
||||
image = Image.open(BytesIO(cover))
|
||||
image.thumbnail(config.MAXSIZE,Image.ANTIALIAS)
|
||||
image.save(config.THUMBNAIL_DIR + "/" + str(CVDB) + ".jpg")
|
||||
@ -245,7 +186,7 @@ def import2sql():
|
||||
@app.route("/content/<path:path>")
|
||||
@auth.login_required
|
||||
def send_content(path):
|
||||
#print('content')
|
||||
print('content')
|
||||
return send_from_directory(config.CONTENT_BASE_DIR, path)
|
||||
|
||||
@app.route("/image/<path:path>")
|
||||
@ -257,20 +198,20 @@ def image(path):
|
||||
@app.route("/catalog/<path:path>")
|
||||
@auth.login_required
|
||||
def catalog(path=""):
|
||||
#config._print("path: " + path)
|
||||
#config._print("root_url: " + request.root_url)
|
||||
#config._print("url: " + request.url)
|
||||
#config._print("CONTENT_BASE_DIR: " + config.CONTENT_BASE_DIR)
|
||||
config._print("path: " + path)
|
||||
config._print("root_url: " + request.root_url)
|
||||
config._print("url: " + request.url)
|
||||
config._print("CONTENT_BASE_DIR: " + config.CONTENT_BASE_DIR)
|
||||
#print("PRESSED ON")
|
||||
start_time = timeit.default_timer()
|
||||
#print(request.root_url)
|
||||
c = fromdir(request.root_url, request.url, config.CONTENT_BASE_DIR, path)
|
||||
#print("c: ")
|
||||
#pprint(vars(c))
|
||||
#for x in c.entries:
|
||||
# for y in x.links:
|
||||
# pprint(y.href)
|
||||
#print("------")
|
||||
print("c: ")
|
||||
pprint(vars(c))
|
||||
for x in c.entries:
|
||||
for y in x.links:
|
||||
pprint(y.href)
|
||||
print("------")
|
||||
elapsed = timeit.default_timer() - start_time
|
||||
print("-----------------------------------------------------------------------------------------------------------------------")
|
||||
print("RENDERED IN: " + str(round(elapsed,2))+"s")
|
||||
|
@ -55,47 +55,45 @@ class Entry(object):
|
||||
#print(kwargs)
|
||||
#print(kwargs["links"][0].get("rpath"))
|
||||
#print("--end entry.py")
|
||||
try:
|
||||
if kwargs["links"][0].get("type") == 'application/x-cbz':
|
||||
f=self.links[0].get("rpath")+"/"+self.title+".cbz"
|
||||
if os.path.exists(f):
|
||||
s = zipfile.ZipFile(f)
|
||||
#self.size = extras.get_size(f, 'mb')
|
||||
data=BeautifulSoup(s.open('ComicInfo.xml').read(), "xml")
|
||||
#self.cover=s.open('P00001.jpg').read()
|
||||
|
||||
if data.select('Writer') != []:
|
||||
self.authors = data.select('Writer')[0].text.split(",")
|
||||
else:
|
||||
config._print("No Writer found: " + str(data.select('Writer')))
|
||||
if kwargs["links"][0].get("type") == 'application/x-cbz':
|
||||
f=self.links[0].get("rpath")+"/"+self.title+".cbz"
|
||||
if os.path.exists(f):
|
||||
s = zipfile.ZipFile(f)
|
||||
self.size = extras.get_size(f, 'mb')
|
||||
data=BeautifulSoup(s.open('ComicInfo.xml').read(), "xml")
|
||||
#self.cover=s.open('P00001.jpg').read()
|
||||
|
||||
#self.cover = "/image/" + extras.get_cvdb(data.select('Notes')) + ".jpg"
|
||||
if data.select('Writer') != []:
|
||||
self.authors = data.select('Writer')[0].text.split(",")
|
||||
else:
|
||||
config._print("No Writer found: " + str(data.select('Writer')))
|
||||
|
||||
if data.select('Summary') != []:
|
||||
self.summary = data.select('Summary')[0].text
|
||||
else:
|
||||
config._print("No Summary found: " + str(data.select('Summary')))
|
||||
self.cover = "/image/" + extras.get_cvdb(data.select('Notes')) + ".jpg"
|
||||
|
||||
if data.select('Summary') != []:
|
||||
self.summary = data.select('Summary')[0].text
|
||||
else:
|
||||
config._print("No Summary found: " + str(data.select('Summary')))
|
||||
|
||||
|
||||
#print(data)
|
||||
#print(kwargs["links"][0])
|
||||
#print(data.select('Series')[0].text)
|
||||
#print(kwargs["links"][0].get("rpath"))
|
||||
if data.select('Series')[0].text in kwargs["links"][0].get("rpath"):
|
||||
releasedate=data.select('Year')[0].text+"-"+data.select('Month')[0].text.zfill(2)+"-"+data.select('Day')[0].text.zfill(2)
|
||||
try:
|
||||
self.title = "#"+data.select('Number')[0].text.zfill(2) + ": " + data.select('Title')[0].text + " (" + releasedate + ") [" + str(self.size) + "MB]"
|
||||
except:
|
||||
self.title = "#"+data.select('Number')[0].text.zfill(2) + " (" + releasedate + ") [" + str(self.size) + "MB]"
|
||||
#print(self.title)
|
||||
else:
|
||||
self.title = kwargs["title"]
|
||||
|
||||
#print(data)
|
||||
#print(kwargs["links"][0])
|
||||
#print(data.select('Series')[0].text)
|
||||
#print(kwargs["links"][0].get("rpath"))
|
||||
if data.select('Series')[0].text in kwargs["links"][0].get("rpath"):
|
||||
releasedate=data.select('Year')[0].text+"-"+data.select('Month')[0].text.zfill(2)+"-"+data.select('Day')[0].text.zfill(2)
|
||||
try:
|
||||
self.title = "#"+data.select('Number')[0].text.zfill(2) + ": " + data.select('Title')[0].text + " (" + releasedate + ") [" + str(self.size) + "MB]"
|
||||
except:
|
||||
self.title = "#"+data.select('Number')[0].text.zfill(2) + " (" + releasedate + ") [" + str(self.size) + "MB]"
|
||||
#print(self.title)
|
||||
else:
|
||||
self.title = kwargs["title"]
|
||||
#self.title = data.select('Title')[0].text
|
||||
except Exception as e:
|
||||
config._print(e)
|
||||
|
||||
else:
|
||||
self.title = kwargs["title"]
|
||||
#self.title = data.select('Title')[0].text
|
||||
def get(self, key):
|
||||
return self._data.get(key, None)
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
<entry>
|
||||
<title>{{ entry.title }}</title>
|
||||
<id>{{ entry.id }}</id>
|
||||
m!-- <summary type="text">{{ entry.summary }}</summary> -->
|
||||
<summary type="text">{{ entry.summary }}</summary>
|
||||
{% for author in entry.authors %}
|
||||
<author>
|
||||
<name>{{ author }}</name>
|
||||
|
@ -1,14 +0,0 @@
|
||||
<html>
|
||||
<body>
|
||||
|
||||
<form method="post" action="/">
|
||||
|
||||
<input type="submit" value="Encrypt" name="Encrypt"/>
|
||||
<input type="submit" value="Decrypt" name="Decrypt" />
|
||||
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
<p>{{ result }}</p>
|
@ -2,27 +2,6 @@
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
|
||||
<body>
|
||||
|
||||
{% if first and request.args.get('first') == None %}
|
||||
<form method="post">
|
||||
<p>DB is missing table. <input type="submit" value="Create" name="Create"/>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
{% if result == [] %}
|
||||
|
||||
<form method="post">
|
||||
<p>No comics imported. <input type="submit" value="Import" name="Import"/>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
{% if total != covers %}
|
||||
<form method="post">
|
||||
<p>Some covers missing <input type="submit" value="Generate" name="Generate"/>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
<h1>Total Comics: {{ total }}</h1>
|
||||
|
||||
<canvas id="myChart" style="width:100%;max-width:600px"></canvas>
|
||||
|
||||
<script>
|
||||
|
Loading…
Reference in New Issue
Block a user