diff options
author | 2024-08-04 18:46:56 -0400 | |
---|---|---|
committer | 2024-08-04 18:46:56 -0400 | |
commit | afedaa6326d879477ddd56ab2b542d3c8af3f5b2 (patch) | |
tree | 12d9f1e9772e1a4bce8de53cbd63ab7e9bbd4393 | |
parent | fc95a902c5c353bb003947447dd170adb3773153 (diff) | |
download | notekins-afedaa6326d879477ddd56ab2b542d3c8af3f5b2.tar.xz |
Support python version >= 3.10. Don't escape HTML.
-rw-r--r-- | utils/postutil.py | 31 |
1 files changed, 21 insertions, 10 deletions
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) |