Compare commits

...

2 Commits

Author SHA1 Message Date
98231879cf run removal jobs every second 2024-09-13 22:05:04 +03:00
5e749cb3a4 add stats 2024-09-13 22:04:52 +03:00
3 changed files with 21 additions and 3 deletions

21
app.py
View File

@ -4,6 +4,7 @@ import os, sys, time, hashlib
from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.schedulers.background import BackgroundScheduler
import markdown import markdown
import shutil import shutil
from pathlib import Path
app = Flask(__name__) app = Flask(__name__)
db = sqlite3.connect('wastetape.db', check_same_thread=False) db = sqlite3.connect('wastetape.db', check_same_thread=False)
@ -12,7 +13,7 @@ app.secret_key = hashlib.md5(os.urandom(32)).hexdigest()
maxFileSize = 1024 * 1024 * 128 maxFileSize = 1024 * 1024 * 128
maxExpiry = 60 * 60 * 24 * 7 maxExpiry = 60 * 60 * 24 * 7
allowedFormats = ["png", "jpg", "jpeg", "gif", "pdf", "doc", "docx", "ppt", "pptx", "xls", "xlsx", "mp4", "mpg", "wmv", "mov", "avi", "swf", "zip", "tar.gz", "tar", "rar", "7z", "mp3", "txt", "py", "php", "htm", "html", "css", "js", "ts", "cr", "c", "cpp", "rs", "rst", "md"] allowedFormats = ["png", "jpg", "jpeg", "gif", "pdf", "doc", "docx", "ppt", "pptx", "xls", "xlsx", "mp4", "mpg", "wmv", "mov", "avi", "swf", "zip", "tar.gz", "tar", "rar", "7z", "mp3", "txt", "py", "php", "htm", "html", "css", "js", "ts", "cr", "c", "cpp", "rs", "rst", "md", "webp", "webm"]
def removal(): def removal():
cs.execute("SELECT * FROM files WHERE deletion < ?;", (int(time.time()),)) cs.execute("SELECT * FROM files WHERE deletion < ?;", (int(time.time()),))
@ -30,7 +31,7 @@ def removal():
print(f"[{int(time.time())}]: DELETED #{id}") print(f"[{int(time.time())}]: DELETED #{id}")
sched = BackgroundScheduler(daemon=True) sched = BackgroundScheduler(daemon=True)
sched.add_job(removal,'interval',seconds=5) sched.add_job(removal,'interval',seconds=1)
sched.start() sched.start()
@app.template_filter('expirein') @app.template_filter('expirein')
@ -49,6 +50,20 @@ def gettxt(value):
with open(os.path.join('static/files', value), 'r') as f: with open(os.path.join('static/files', value), 'r') as f:
return f.read() return f.read()
@app.template_filter('totalfiles')
def totalfiles(value):
files = os.listdir("static/files")
return len(files)
@app.template_filter('totalfilesize')
def totalfilesize(value):
size = sum(p.stat().st_size for p in Path("static/files").rglob('*'))
print(size)
for unit in ("B", "K", "M", "G", "T"):
if size < 1024:
return f"{size:.1f}{unit}"
size /= 1024
@app.route('/') @app.route('/')
def index(): def index():
@ -87,7 +102,7 @@ def upload():
os.remove(os.path.join('tmp', filename)) os.remove(os.path.join('tmp', filename))
flash('File too large') flash('File too large')
return redirect(url_for('index')) return redirect(url_for('index'))
if filename.split('.')[-1] not in allowedFormats: if filename.lower().split('.')[-1] not in allowedFormats:
os.remove(os.path.join('tmp', filename)) os.remove(os.path.join('tmp', filename))
flash('File format not allowed') flash('File format not allowed')
return redirect(url_for('index')) return redirect(url_for('index'))

View File

@ -27,5 +27,7 @@
</select> </select>
<button class="upload-button">Upload</button><br> max file size: 134mb (temporary), 32mb (forever) <button class="upload-button">Upload</button><br> max file size: 134mb (temporary), 32mb (forever)
</form> </form>
{% include 'stats.html' %}
</div> </div>
{% endblock %} {% endblock %}

1
templates/stats.html Normal file
View File

@ -0,0 +1 @@
<p class="center">{{ ""|totalfiles }} files uploaded // {{ ""|totalfilesize }} occupied</p>