forked from rDrama/rDrama
Merge branch 'frost' of github.com:Aevann1/rDrama into frost
commit
c6fe563dfc
|
@ -1,4 +1,4 @@
|
||||||
from os import environ, listdir
|
from os import environ
|
||||||
import re
|
import re
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from json import loads
|
from json import loads
|
||||||
|
@ -1098,4 +1098,4 @@ forced_hats = {
|
||||||
"marsify": ("Marsified", "I can't pick my own Marseys, help!"),
|
"marsify": ("Marsified", "I can't pick my own Marseys, help!"),
|
||||||
"is_suspended": ("Behind Bars", "This user is banned and needs to do better!"),
|
"is_suspended": ("Behind Bars", "This user is banned and needs to do better!"),
|
||||||
"agendaposter": ("Egg_irl", "This user is getting in touch with xir identity!")
|
"agendaposter": ("Egg_irl", "This user is getting in touch with xir identity!")
|
||||||
}
|
}
|
|
@ -8,7 +8,7 @@ import requests
|
||||||
import time
|
import time
|
||||||
from .const import *
|
from .const import *
|
||||||
import gevent
|
import gevent
|
||||||
|
import imagehash
|
||||||
|
|
||||||
def process_files():
|
def process_files():
|
||||||
body = ''
|
body = ''
|
||||||
|
@ -103,8 +103,36 @@ def process_image(filename=None, resize=0, trim=False):
|
||||||
i = ImageOps.exif_transpose(i)
|
i = ImageOps.exif_transpose(i)
|
||||||
i.save(filename, format="WEBP", method=6, quality=88)
|
i.save(filename, format="WEBP", method=6, quality=88)
|
||||||
|
|
||||||
if resize in (400,1200) and os.stat(filename).st_size > 1 * 1024 * 1024:
|
|
||||||
os.remove(filename)
|
if resize in (300,400,1200):
|
||||||
abort(413)
|
if os.stat(filename).st_size > 1 * 1024 * 1024:
|
||||||
|
os.remove(filename)
|
||||||
|
abort(413)
|
||||||
|
|
||||||
|
if resize == 1200:
|
||||||
|
path = f'files/assets/images/{SITE_NAME}/banners'
|
||||||
|
elif resize == 400:
|
||||||
|
path = f'files/assets/images/{SITE_NAME}/sidebar'
|
||||||
|
else:
|
||||||
|
path = f'files/assets/images/badges'
|
||||||
|
|
||||||
|
hashes = {}
|
||||||
|
|
||||||
|
for img in os.listdir(path):
|
||||||
|
if resize == 400 and img in ('256.webp','585.webp'): continue
|
||||||
|
img_path = f'{path}/{img}'
|
||||||
|
if img_path == filename: continue
|
||||||
|
img = Image.open(img_path)
|
||||||
|
i_hash = str(imagehash.phash(img))
|
||||||
|
if i_hash in hashes.keys():
|
||||||
|
print(hashes[i_hash], flush=True)
|
||||||
|
print(img_path, flush=True)
|
||||||
|
else: hashes[i_hash] = img_path
|
||||||
|
|
||||||
|
i = Image.open(filename)
|
||||||
|
i_hash = str(imagehash.phash(i))
|
||||||
|
if i_hash in hashes.keys():
|
||||||
|
os.remove(filename)
|
||||||
|
abort(417)
|
||||||
|
|
||||||
return filename
|
return filename
|
|
@ -1,5 +1,5 @@
|
||||||
from shutil import move, copyfile
|
from shutil import move, copyfile
|
||||||
from os import listdir, rename, path
|
from os import rename, path
|
||||||
|
|
||||||
from files.__main__ import app, limiter
|
from files.__main__ import app, limiter
|
||||||
from files.helpers.const import *
|
from files.helpers.const import *
|
||||||
|
|
|
@ -222,7 +222,7 @@ def comment(v):
|
||||||
g.db.flush()
|
g.db.flush()
|
||||||
filename = f'files/assets/images/badges/{badge.id}.webp'
|
filename = f'files/assets/images/badges/{badge.id}.webp'
|
||||||
copyfile(oldname, filename)
|
copyfile(oldname, filename)
|
||||||
process_image(filename, resize=400)
|
process_image(filename, resize=300)
|
||||||
requests.post(f'https://api.cloudflare.com/client/v4/zones/{CF_ZONE}/purge_cache', headers=CF_HEADERS,
|
requests.post(f'https://api.cloudflare.com/client/v4/zones/{CF_ZONE}/purge_cache', headers=CF_HEADERS,
|
||||||
data=f'{{"files": ["https://{SITE}/assets/images/badges/{badge.id}.webp"]}}', timeout=5)
|
data=f'{{"files": ["https://{SITE}/assets/images/badges/{badge.id}.webp"]}}', timeout=5)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
@ -64,6 +64,10 @@ def error_415(e):
|
||||||
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": "Please upload only Image, Video, or Audio files!"}, 415
|
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": "Please upload only Image, Video, or Audio files!"}, 415
|
||||||
else: return render_template('errors/415.html', err=True), 415
|
else: return render_template('errors/415.html', err=True), 415
|
||||||
|
|
||||||
|
@app.errorhandler(417)
|
||||||
|
def error_417(e):
|
||||||
|
return {"error": "Image already exists!"}, 417
|
||||||
|
|
||||||
@app.errorhandler(418)
|
@app.errorhandler(418)
|
||||||
def error_418(e):
|
def error_418(e):
|
||||||
if request.headers.get("Authorization") or request.headers.get("xhr"):
|
if request.headers.get("Authorization") or request.headers.get("xhr"):
|
||||||
|
|
|
@ -11,6 +11,7 @@ gevent
|
||||||
gevent-websocket
|
gevent-websocket
|
||||||
greenlet
|
greenlet
|
||||||
gunicorn
|
gunicorn
|
||||||
|
imagehash
|
||||||
lxml
|
lxml
|
||||||
mistletoe
|
mistletoe
|
||||||
matplotlib
|
matplotlib
|
||||||
|
|
Loading…
Reference in New Issue