diff --git a/files/classes/submission.py b/files/classes/submission.py index 5ab7afaeb..4cb9fb630 100644 --- a/files/classes/submission.py +++ b/files/classes/submission.py @@ -209,11 +209,11 @@ class Submission(Base, Stndrd, Age_times, Scores, Fuzzing): @property @lazy def thumb_url(self): - if self.over_18: return f"https://{site}/assets/images/nsfw.gif" - elif not self.url: return f"https://{site}/assets/images/{site_name}/default_thumb_text.gif" + if self.over_18: return f"https://{site}/assets/images/nsfw.webp" + elif not self.url: return f"https://{site}/assets/images/{site_name}/default_thumb_text.webp" elif self.thumburl: return self.thumburl - elif "youtu.be" in self.domain or "youtube.com" in self.domain: return f"https://{site}/assets/images/default_thumb_yt.gif" - else: return f"https://{site}/assets/images/default_thumb_link.gif" + elif "youtu.be" in self.domain or "youtube.com" in self.domain: return f"https://{site}/assets/images/default_thumb_yt.webp" + else: return f"https://{site}/assets/images/default_thumb_link.webp" @property @@ -411,7 +411,7 @@ class Submission(Base, Stndrd, Age_times, Scores, Fuzzing): @property def is_image(self): - if self.url: return self.url.lower().endswith('.jpg') or self.url.lower().endswith('.png') or self.url.lower().endswith('.gif') or self.url.lower().endswith('.jpeg') or self.url.lower().endswith('?maxwidth=9999') + if self.url: return self.url.lower().endswith('.webp') or self.url.lower().endswith('.jpg') or self.url.lower().endswith('.png') or self.url.lower().endswith('.gif') or self.url.lower().endswith('.jpeg') or self.url.lower().endswith('?maxwidth=9999') else: return False @property diff --git a/files/classes/user.py b/files/classes/user.py index 18a5e0c1d..cb9e054bd 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -448,18 +448,18 @@ class User(Base, Stndrd, Age_times): @property def banner_url(self): if self.bannerurl: return self.bannerurl - else: return f"https://{site}/assets/images/{site_name}/preview.gif" + else: return f"https://{site}/assets/images/{site_name}/preview.webp" @cache.memoize(timeout=86400) def defaultpicture(self): pic = random.randint(1, 150) - return f"https://{site}/assets/images/defaultpictures/{pic}.gif" + return f"https://{site}/assets/images/defaultpictures/{pic}.webp" @property def profile_url(self): if self.profileurl: return self.profileurl elif "rdrama" in site: return self.defaultpicture() - else: return f"https://{site}/assets/images/default-profile-pic.gif" + else: return f"https://{site}/assets/images/default-profile-pic.webp" @property def json_raw(self): diff --git a/files/helpers/images.py b/files/helpers/images.py index f7a9f3c45..3af5f6ad8 100644 --- a/files/helpers/images.py +++ b/files/helpers/images.py @@ -11,7 +11,7 @@ CF_ZONE = environ.get("CLOUDFLARE_ZONE", "").strip() IMGUR_KEY = environ.get("IMGUR_KEY", "").strip() IBB_KEY = environ.get("IBB_KEY", "").strip() -def upload_ibb(filepath=None, file=None, resize=False): +def upload(ibb=False, filepath=None, file=None, resize=False): if file: format = file.filename.split('.')[-1].lower().replace('jpg','png').replace('jpeg','png') @@ -47,66 +47,20 @@ def upload_ibb(filepath=None, file=None, resize=False): try: with open(filepath, 'rb') as f: data={'image': base64.b64encode(f.read())} - req = requests.post(f'https://api.imgbb.com/1/upload?key={IBB_KEY}', data=data) + if ibb: req = requests.post(f'https://api.imgbb.com/1/upload?key={IBB_KEY}', data=data) + else: req = requests.post('https://api.imgur.com/3/upload.json', headers = {"Authorization": f"Client-ID {IMGUR_KEY}"}, data=data) resp = req.json()['data'] - url = resp['url'] + if ibb: url = resp['url'] + else: url = resp['link'] + url = url.replace(".png", ".webp").replace(".jpg", ".webp").replace(".jpeg", ".webp") except Exception as e: print(e) print(req.text) return - return url - - -def upload_imgur(filepath=None, file=None, resize=False): - - if file: - format = file.filename.split('.')[-1].lower().replace('jpg','png').replace('jpeg','png') - filepath = f"image.{format}" - file.save(filepath) - else: format = filepath.split('.')[-1].lower().replace('jpg','png').replace('jpeg','png') - - if resize: - i = IImage.open(filepath) - size = 100, 100 - frames = ImageSequence.Iterator(i) - - def thumbnails(frames): - for frame in frames: - thumbnail = frame.copy() - thumbnail.thumbnail(size, IImage.ANTIALIAS) - yield thumbnail - - frames = thumbnails(frames) - - om = next(frames) - om.info = i.info - filepath = f"image.{i.format}".lower().replace('jpg','png').replace('jpeg','png') - try: om.save(filepath, save_all=True, append_images=list(frames), loop=0, optimize=True, quality=30) - except Exception as e: - print(e) - return - elif format != "gif": - i = IImage.open(filepath) - filepath = f"image.{i.format}".lower().replace('jpg','png').replace('jpeg','png') - i.save(filepath, optimize=True, quality=30) - - try: - with open(filepath, 'rb') as f: - data={'image': base64.b64encode(f.read())} - req = requests.post('https://api.imgur.com/3/upload.json', headers = {"Authorization": f"Client-ID {IMGUR_KEY}"}, data=data) - resp = req.json()['data'] - url = resp['link'] - if not "_d." in url: - url = url.replace(".png", "_d.png").replace(".jpg", "_d.jpg").replace(".jpeg", "_d.jpeg") - if "_d." in url: url += "?maxwidth=9999" - except Exception as e: - print(e) - print(req.text) - return - - new_image = Image(text=url, deletehash=resp["deletehash"]) - g.db.add(new_image) + if not ibb: + new_image = Image(text=url, deletehash=resp["deletehash"]) + g.db.add(new_image) return url diff --git a/files/helpers/jinja2.py b/files/helpers/jinja2.py index 414c091e1..1194a84e9 100644 --- a/files/helpers/jinja2.py +++ b/files/helpers/jinja2.py @@ -27,7 +27,7 @@ def favorite_emojis(x): str = "" emojis = sorted(x.items(), key=lambda x: x[1], reverse=True)[:25] for k, v in emojis: - str += f'' + str += f'' return str @app.context_processor diff --git a/files/helpers/sanitize.py b/files/helpers/sanitize.py index 3044f4e1e..e1503f83c 100644 --- a/files/helpers/sanitize.py +++ b/files/helpers/sanitize.py @@ -219,8 +219,8 @@ def sanitize(sanitized, noimages=False): for i in re.finditer('
:([^ ]{1,30}?):
', sanitized): emoji = i.group(1).lower() - if path.isfile(f'./files/assets/images/emojis/{emoji}.gif'): - sanitized = sanitized.replace(f':{emoji}:
', f'')
+ if path.isfile(f'./files/assets/images/emojis/{emoji}.webp'):
+ sanitized = sanitized.replace(f'
:{emoji}:
', f'')
try:
if emoji in session["favorite_emojis"]: session["favorite_emojis"][emoji] += 1
@@ -230,8 +230,8 @@ def sanitize(sanitized, noimages=False):
for i in re.finditer(':([^ ]{1,30}?):', sanitized):
emoji = i.group(1).lower()
- if path.isfile(f'./files/assets/images/emojis/{emoji}.gif'):
- sanitized = sanitized.replace(f':{emoji}:', f'
')
+ if path.isfile(f'./files/assets/images/emojis/{emoji}.webp'):
+ sanitized = sanitized.replace(f':{emoji}:', f'
')
try:
if emoji in session["favorite_emojis"]: session["favorite_emojis"][emoji] += 1
diff --git a/files/routes/comments.py b/files/routes/comments.py
index 52d0ac47d..cb12993ab 100644
--- a/files/routes/comments.py
+++ b/files/routes/comments.py
@@ -289,7 +289,7 @@ def api_comment(v):
abort(413)
if 'pcmemes.net' in request.host: url = upload_ibb(file=file)
- else: url = upload_imgur(file=file)
+ else: url = upload(file=file)
body = request.form.get("body") + f"\n![]({url})"
body = body.replace("\n", "\n\n").replace("\n\n\n\n\n\n", "\n\n").replace("\n\n\n\n", "\n\n").replace("\n\n\n", "\n\n")
@@ -703,7 +703,7 @@ def edit_comment(cid, v):
abort(413)
if 'pcmemes.net' in request.host: url = upload_ibb(file=file)
- else: url = upload_imgur(file=file)
+ else: url = upload(file=file)
body += f"\n![]({url})"
body_md = CustomRenderer().render(mistletoe.Document(body))
diff --git a/files/routes/posts.py b/files/routes/posts.py
index 7ab5d1a5c..8a62fded6 100644
--- a/files/routes/posts.py
+++ b/files/routes/posts.py
@@ -528,7 +528,7 @@ def thumbs(new_post):
file.write(chunk)
if 'pcmemes.net' in request.host: post.thumburl = upload_ibb(filepath="image.png", resize=True)
- else: post.thumburl = upload_imgur(filepath="image.png", resize=True)
+ else: post.thumburl = upload(filepath="image.png", resize=True)
g.db.add(post)
@@ -546,8 +546,8 @@ def filter_title(title):
title = bleach.clean(title, tags=[])
for i in re.finditer(':(.{1,30}?):', title):
- if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.gif'):
- title = title.replace(f':{i.group(1)}:', f'
')
+ if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.webp'):
+ title = title.replace(f':{i.group(1)}:', f'
')
return title
@@ -915,7 +915,7 @@ def submit_post(v):
if file.content_type.startswith('image/'):
if 'pcmemes.net' in request.host: new_post.url = upload_ibb(file=file)
- else: new_post.url = upload_imgur(file=file)
+ else: new_post.url = upload(file=file)
else:
try:
post_url = upload_video(file)
diff --git a/files/routes/reporting.py b/files/routes/reporting.py
index 95349aa18..efdb6918a 100644
--- a/files/routes/reporting.py
+++ b/files/routes/reporting.py
@@ -20,8 +20,8 @@ def api_flag_post(pid, v):
if "<" in reason: return {"error": f"Reasons can't contain <"}
for i in re.finditer(':(.{1,30}?):', reason):
- if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.gif'):
- reason = reason.replace(f':{i.group(1)}:', f'
')
+ if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.webp'):
+ reason = reason.replace(f':{i.group(1)}:', f'
')
flag = Flag(post_id=post.id,
user_id=v.id,
@@ -49,8 +49,8 @@ def api_flag_comment(cid, v):
if "<" in reason: return {"error": f"Reasons can't contain <"}
for i in re.finditer(':(.{1,30}?):', reason):
- if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.gif'):
- reason = reason.replace(f':{i.group(1)}:', f'
')
+ if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.webp'):
+ reason = reason.replace(f':{i.group(1)}:', f'
')
flag = CommentFlag(comment_id=comment.id,
user_id=v.id,
diff --git a/files/routes/settings.py b/files/routes/settings.py
index 08d262cf4..65e01e2ee 100644
--- a/files/routes/settings.py
+++ b/files/routes/settings.py
@@ -118,7 +118,7 @@ def settings_profile_post(v):
else: return render_template("settings_profile.html", v=v, error=f"Image files only."), 400
if 'pcmemes.net' in request.host: url = upload_ibb(file=file)
- else: url = upload_imgur(file=file)
+ else: url = upload(file=file)
bio += f"\n\n![]({url})"
@@ -506,11 +506,11 @@ def settings_images_profile(v):
file.save(filepath)
if 'pcmemes.net' in request.host: highres = upload_ibb(filepath=filepath)
- else: highres = upload_imgur(filepath=filepath)
+ else: highres = upload(filepath=filepath)
if not highres: abort(400)
if 'pcmemes.net' in request.host: imageurl = upload_ibb(filepath=filepath, resize=True)
- else: imageurl = upload_imgur(filepath=filepath, resize=True)
+ else: imageurl = upload(filepath=filepath, resize=True)
if not imageurl: abort(400)
v.highres = highres
@@ -532,7 +532,7 @@ def settings_images_banner(v):
file = request.files["banner"]
if 'pcmemes.net' in request.host: imageurl = upload_ibb(file=file)
- else: imageurl = upload_imgur(file=file)
+ else: imageurl = upload(file=file)
if imageurl:
v.bannerurl = imageurl
diff --git a/files/routes/static.py b/files/routes/static.py
index 1d448394e..fdf3bf4e1 100644
--- a/files/routes/static.py
+++ b/files/routes/static.py
@@ -137,7 +137,7 @@ def index():
@app.get("/assets/favicon.ico")
def favicon():
- return send_file(f"./assets/images/{site_name}/icon.gif")
+ return send_file(f"./assets/images/{site_name}/icon.webp")
@app.get("/api")
@auth_desired
@@ -173,7 +173,7 @@ def archives(path):
@limiter.exempt
def static_service(path):
resp = make_response(send_from_directory('./assets', path))
- if request.path.endswith('.gif') or request.path.endswith('.ttf') or request.path.endswith('.woff') or request.path.endswith('.woff2'):
+ if request.path.endswith('.webp') or request.path.endswith('.gif') or request.path.endswith('.ttf') or request.path.endswith('.woff') or request.path.endswith('.woff2'):
resp.headers.remove("Cache-Control")
resp.headers.add("Cache-Control", "public, max-age=2628000")
diff --git a/files/templates/authforms.html b/files/templates/authforms.html
index a013cf446..325104376 100644
--- a/files/templates/authforms.html
+++ b/files/templates/authforms.html
@@ -102,7 +102,7 @@
Don't go this way, stranger. The gate is closed, and the guards are saying:
diff --git a/files/templates/errors/503.html b/files/templates/errors/503.html index ab72df5ee..77bceeaf7 100644 --- a/files/templates/errors/503.html +++ b/files/templates/errors/503.html @@ -7,7 +7,7 @@ - +This post is rated +18 (Adult-Only). You must be 18 or older to continue. Are you sure you want to proceed?