From afedaa6326d879477ddd56ab2b542d3c8af3f5b2 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sun, 4 Aug 2024 18:46:56 -0400 Subject: Support python version >= 3.10. Don't escape HTML. --- utils/postutil.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'utils/postutil.py') diff --git a/utils/postutil.py b/utils/postutil.py index f2e1a3d..7b47997 100644 --- a/utils/postutil.py +++ b/utils/postutil.py @@ -25,15 +25,25 @@ from wand.image import Image import tempfile import os +import sys import shutil +import hashlib import mimetypes from datetime import datetime, timezone -from hashlib import file_digest from mistune_emote import emote from monolith import MediaInstance, Post from config import conf +def file_digest(f, n): + if sys.version_info[:2] < (3, 11): + h = hashlib.new(n) + d = f.read() + h.update(d) + return h + else: + return hashlib.file_digest(f, n) + ''' Takes an abolute path to a static image, generate a thumbnail for it if needed Returns path to the thumbnail, relative to conf.LOCAL_DATA_ROOT @@ -51,24 +61,25 @@ def generate_thumbnail(file): i.resize(int(i.width * s), int(i.height * s), "lanczos2") i.format = "webp" i.save(filename=outf) + shas = None with open(outf, "rb") as f: d = file_digest(f, "sha256") shas = d.hexdigest() - destdirp = os.path.join(shas[0:2], shas[2:4]) - destdirp = os.path.join("media_thmb", destdirp) - destpath = os.path.join(destdirp, f"{shas}.webp") - destabsp = os.path.join(conf.LOCAL_DATA_ROOT, destpath) - os.makedirs(os.path.join(conf.LOCAL_DATA_ROOT, destdirp), 0o755, True) - if not os.path.isfile(destabsp): - shutil.move(outf, destabsp) - return destpath + destdirp = os.path.join(shas[0:2], shas[2:4]) + destdirp = os.path.join("media_thmb", destdirp) + destpath = os.path.join(destdirp, f"{shas}.webp") + destabsp = os.path.join(conf.LOCAL_DATA_ROOT, destpath) + os.makedirs(os.path.join(conf.LOCAL_DATA_ROOT, destdirp), 0o755, True) + if not os.path.isfile(destabsp): + shutil.move(outf, destabsp) + return destpath def should_generate_thumbnail(file): thumbed_types = ["image/png", "image/jpeg", "image/webp"] return mimetypes.guess_type(file)[0] in thumbed_types def process_body(text): - renderer = mistune.HTMLRenderer() + renderer = mistune.HTMLRenderer(escape=False) md = mistune.Markdown(renderer, plugins= [strikethrough, url, superscript, subscript, ruby, spoiler, emote]) return md(text) -- cgit v1.2.3