forked from rDrama/rDrama
1
0
Fork 0
master
Aevann1 2021-09-13 17:58:52 +02:00
parent de84dd910f
commit 4e18f2ead3
46 changed files with 193 additions and 239 deletions

View File

@ -209,11 +209,11 @@ class Submission(Base, Stndrd, Age_times, Scores, Fuzzing):
@property @property
@lazy @lazy
def thumb_url(self): def thumb_url(self):
if self.over_18: return f"https://{site}/assets/images/nsfw.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.gif" elif not self.url: return f"https://{site}/assets/images/{site_name}/default_thumb_text.webp"
elif self.thumburl: return self.thumburl 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" 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.gif" else: return f"https://{site}/assets/images/default_thumb_link.webp"
@property @property
@ -411,7 +411,7 @@ class Submission(Base, Stndrd, Age_times, Scores, Fuzzing):
@property @property
def is_image(self): 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 else: return False
@property @property

View File

@ -448,18 +448,18 @@ class User(Base, Stndrd, Age_times):
@property @property
def banner_url(self): def banner_url(self):
if self.bannerurl: return self.bannerurl 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) @cache.memoize(timeout=86400)
def defaultpicture(self): def defaultpicture(self):
pic = random.randint(1, 150) pic = random.randint(1, 150)
return f"https://{site}/assets/images/defaultpictures/{pic}.gif" return f"https://{site}/assets/images/defaultpictures/{pic}.webp"
@property @property
def profile_url(self): def profile_url(self):
if self.profileurl: return self.profileurl if self.profileurl: return self.profileurl
elif "rdrama" in site: return self.defaultpicture() 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 @property
def json_raw(self): def json_raw(self):

View File

@ -11,7 +11,7 @@ CF_ZONE = environ.get("CLOUDFLARE_ZONE", "").strip()
IMGUR_KEY = environ.get("IMGUR_KEY", "").strip() IMGUR_KEY = environ.get("IMGUR_KEY", "").strip()
IBB_KEY = environ.get("IBB_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: if file:
format = file.filename.split('.')[-1].lower().replace('jpg','png').replace('jpeg','png') 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: try:
with open(filepath, 'rb') as f: with open(filepath, 'rb') as f:
data={'image': base64.b64encode(f.read())} 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'] 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: except Exception as e:
print(e) print(e)
print(req.text) print(req.text)
return return
return url if not ibb:
new_image = Image(text=url, deletehash=resp["deletehash"])
g.db.add(new_image)
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)
return url return url

View File

@ -27,7 +27,7 @@ def favorite_emojis(x):
str = "" str = ""
emojis = sorted(x.items(), key=lambda x: x[1], reverse=True)[:25] emojis = sorted(x.items(), key=lambda x: x[1], reverse=True)[:25]
for k, v in emojis: for k, v in emojis:
str += f'<button class="btn m-1 px-0" onclick="getEmoji(\'{k}\', \'@form@\')" style="background: None!important; width:60px; overflow: hidden; border: none;" data-toggle="tooltip" title=":{k}:" delay:="0"><img loading="lazy" width=50 src="/assets/images/emojis/{k}.gif" alt="{k}-emoji"/></button>' str += f'<button class="btn m-1 px-0" onclick="getEmoji(\'{k}\', \'@form@\')" style="background: None!important; width:60px; overflow: hidden; border: none;" data-toggle="tooltip" title=":{k}:" delay:="0"><img loading="lazy" width=50 src="/assets/images/emojis/{k}.webp" alt="{k}-emoji"/></button>'
return str return str
@app.context_processor @app.context_processor

View File

@ -219,8 +219,8 @@ def sanitize(sanitized, noimages=False):
for i in re.finditer('<p>:([^ ]{1,30}?):</p>', sanitized): for i in re.finditer('<p>:([^ ]{1,30}?):</p>', sanitized):
emoji = i.group(1).lower() emoji = i.group(1).lower()
if path.isfile(f'./files/assets/images/emojis/{emoji}.gif'): if path.isfile(f'./files/assets/images/emojis/{emoji}.webp'):
sanitized = sanitized.replace(f'<p>:{emoji}:</p>', f'<p style="margin-bottom:0;"><img loading="lazy" data-toggle="tooltip" title="{emoji}" delay="0" height=60 src="https://{site}/assets/images/emojis/{emoji}.gif"</p>') sanitized = sanitized.replace(f'<p>:{emoji}:</p>', f'<p style="margin-bottom:0;"><img loading="lazy" data-toggle="tooltip" title="{emoji}" delay="0" height=60 src="https://{site}/assets/images/emojis/{emoji}.webp"</p>')
try: try:
if emoji in session["favorite_emojis"]: session["favorite_emojis"][emoji] += 1 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): for i in re.finditer(':([^ ]{1,30}?):', sanitized):
emoji = i.group(1).lower() emoji = i.group(1).lower()
if path.isfile(f'./files/assets/images/emojis/{emoji}.gif'): if path.isfile(f'./files/assets/images/emojis/{emoji}.webp'):
sanitized = sanitized.replace(f':{emoji}:', f'<img loading="lazy" data-toggle="tooltip" title="{emoji}" delay="0" height=30 src="https://{site}/assets/images/emojis/{emoji}.gif"<span>') sanitized = sanitized.replace(f':{emoji}:', f'<img loading="lazy" data-toggle="tooltip" title="{emoji}" delay="0" height=30 src="https://{site}/assets/images/emojis/{emoji}.webp"<span>')
try: try:
if emoji in session["favorite_emojis"]: session["favorite_emojis"][emoji] += 1 if emoji in session["favorite_emojis"]: session["favorite_emojis"][emoji] += 1

View File

@ -289,7 +289,7 @@ def api_comment(v):
abort(413) abort(413)
if 'pcmemes.net' in request.host: url = upload_ibb(file=file) 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 = 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") 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) abort(413)
if 'pcmemes.net' in request.host: url = upload_ibb(file=file) 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 += f"\n![]({url})"
body_md = CustomRenderer().render(mistletoe.Document(body)) body_md = CustomRenderer().render(mistletoe.Document(body))

View File

@ -528,7 +528,7 @@ def thumbs(new_post):
file.write(chunk) file.write(chunk)
if 'pcmemes.net' in request.host: post.thumburl = upload_ibb(filepath="image.png", resize=True) 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) g.db.add(post)
@ -546,8 +546,8 @@ def filter_title(title):
title = bleach.clean(title, tags=[]) title = bleach.clean(title, tags=[])
for i in re.finditer(':(.{1,30}?):', title): for i in re.finditer(':(.{1,30}?):', title):
if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.gif'): if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.webp'):
title = title.replace(f':{i.group(1)}:', f'<img loading="lazy" data-toggle="tooltip" title="{i.group(1)}" delay="0" height=20 src="https://{site}/assets/images/emojis/{i.group(1)}.gif"<span>') title = title.replace(f':{i.group(1)}:', f'<img loading="lazy" data-toggle="tooltip" title="{i.group(1)}" delay="0" height=20 src="https://{site}/assets/images/emojis/{i.group(1)}.webp"<span>')
return title return title
@ -915,7 +915,7 @@ def submit_post(v):
if file.content_type.startswith('image/'): if file.content_type.startswith('image/'):
if 'pcmemes.net' in request.host: new_post.url = upload_ibb(file=file) 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: else:
try: try:
post_url = upload_video(file) post_url = upload_video(file)

View File

@ -20,8 +20,8 @@ def api_flag_post(pid, v):
if "<" in reason: return {"error": f"Reasons can't contain <"} if "<" in reason: return {"error": f"Reasons can't contain <"}
for i in re.finditer(':(.{1,30}?):', reason): for i in re.finditer(':(.{1,30}?):', reason):
if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.gif'): if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.webp'):
reason = reason.replace(f':{i.group(1)}:', f'<img loading="lazy" data-toggle="tooltip" title="{i.group(1)}" delay="0" height=20 src="https://{site}/assets/images/emojis/{i.group(1)}.gif"<span>') reason = reason.replace(f':{i.group(1)}:', f'<img loading="lazy" data-toggle="tooltip" title="{i.group(1)}" delay="0" height=20 src="https://{site}/assets/images/emojis/{i.group(1)}.webp"<span>')
flag = Flag(post_id=post.id, flag = Flag(post_id=post.id,
user_id=v.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 <"} if "<" in reason: return {"error": f"Reasons can't contain <"}
for i in re.finditer(':(.{1,30}?):', reason): for i in re.finditer(':(.{1,30}?):', reason):
if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.gif'): if path.isfile(f'./files/assets/images/emojis/{i.group(1)}.webp'):
reason = reason.replace(f':{i.group(1)}:', f'<img loading="lazy" data-toggle="tooltip" title="{i.group(1)}" delay="0" height=20 src="https://{site}/assets/images/emojis/{i.group(1)}.gif"<span>') reason = reason.replace(f':{i.group(1)}:', f'<img loading="lazy" data-toggle="tooltip" title="{i.group(1)}" delay="0" height=20 src="https://{site}/assets/images/emojis/{i.group(1)}.webp"<span>')
flag = CommentFlag(comment_id=comment.id, flag = CommentFlag(comment_id=comment.id,
user_id=v.id, user_id=v.id,

View File

@ -118,7 +118,7 @@ def settings_profile_post(v):
else: return render_template("settings_profile.html", v=v, error=f"Image files only."), 400 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) 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})" bio += f"\n\n![]({url})"
@ -506,11 +506,11 @@ def settings_images_profile(v):
file.save(filepath) file.save(filepath)
if 'pcmemes.net' in request.host: highres = upload_ibb(filepath=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 not highres: abort(400)
if 'pcmemes.net' in request.host: imageurl = upload_ibb(filepath=filepath, resize=True) 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) if not imageurl: abort(400)
v.highres = highres v.highres = highres
@ -532,7 +532,7 @@ def settings_images_banner(v):
file = request.files["banner"] file = request.files["banner"]
if 'pcmemes.net' in request.host: imageurl = upload_ibb(file=file) if 'pcmemes.net' in request.host: imageurl = upload_ibb(file=file)
else: imageurl = upload_imgur(file=file) else: imageurl = upload(file=file)
if imageurl: if imageurl:
v.bannerurl = imageurl v.bannerurl = imageurl

View File

@ -137,7 +137,7 @@ def index():
@app.get("/assets/favicon.ico") @app.get("/assets/favicon.ico")
def favicon(): 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") @app.get("/api")
@auth_desired @auth_desired
@ -173,7 +173,7 @@ def archives(path):
@limiter.exempt @limiter.exempt
def static_service(path): def static_service(path):
resp = make_response(send_from_directory('./assets', 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.remove("Cache-Control")
resp.headers.add("Cache-Control", "public, max-age=2628000") resp.headers.add("Cache-Control", "public, max-age=2628000")

View File

@ -102,7 +102,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img loading="lazy" class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.gif"></img> <img loading="lazy" class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.webp"></img>
</div> </div>
</div> </div>

View File

@ -141,7 +141,7 @@
{% if c.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:#1DA1F2" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="{{c.author.verified}}"></i> {% if c.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:#1DA1F2" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="{{c.author.verified}}"></i>
{% endif %} {% endif %}
<a {% if v %}href="{{c.author.url}}"{% else %}href="/logged_out{{c.author.url}}"{% endif %} style="color:#{{c.author.namecolor}}; font-size:12px; font-weight:bold;"><img loading="lazy" src="{{c.author.profile_url}}" class="profile-pic-25 mr-2"/><span {% if c.author.patron and not c.distinguish_level %}class="patron" style="background-color:#{{c.author.namecolor}};"{% elif c.distinguish_level and 'rdrama' in request.host %}class="mod"{% endif %}>{{c.author.username}}</span></a>{% if c.author.customtitle %}&nbsp;<bdi style="color: #{{c.author.titlecolor}}">&nbsp;{% if c.author.quadrant %}<img loading="lazy" height="20" src="/assets/images/PCM/quadrants/{{c.author.quadrant}}.gif">{% endif %}{{c.author.customtitle | safe}}</bdi>{% endif %} <a {% if v %}href="{{c.author.url}}"{% else %}href="/logged_out{{c.author.url}}"{% endif %} style="color:#{{c.author.namecolor}}; font-size:12px; font-weight:bold;"><img loading="lazy" src="{{c.author.profile_url}}" class="profile-pic-25 mr-2"/><span {% if c.author.patron and not c.distinguish_level %}class="patron" style="background-color:#{{c.author.namecolor}};"{% elif c.distinguish_level and 'rdrama' in request.host %}class="mod"{% endif %}>{{c.author.username}}</span></a>{% if c.author.customtitle %}&nbsp;<bdi style="color: #{{c.author.titlecolor}}">&nbsp;{% if c.author.quadrant %}<img loading="lazy" height="20" src="/assets/images/PCM/quadrants/{{c.author.quadrant}}.webp">{% endif %}{{c.author.customtitle | safe}}</bdi>{% endif %}
<span id="timestamp-{{c.id}}" data-toggle="tooltip" data-placement="bottom" title="" class="time-stamp">&nbsp;{{c.age_string}}</span> <span id="timestamp-{{c.id}}" data-toggle="tooltip" data-placement="bottom" title="" class="time-stamp">&nbsp;{{c.age_string}}</span>
{% if c.edited_utc %} {% if c.edited_utc %}

View File

@ -11,7 +11,7 @@
Released under MIT-style license. Released under MIT-style license.
Original Screen Bug http://screen-bug.googlecode.com/git/index.html Original Screen Bug http://screen-bug.googlecode.com/git/index.html
*/ */
var BugDispatch={options:{minDelay:500,maxDelay:1E4,minBugs:2,maxBugs:20,minSpeed:5,maxSpeed:10,maxLargeTurnDeg:150,maxSmallTurnDeg:10,maxWiggleDeg:5,imageSprite:"fly-sprite.gif",bugWidth:13,bugHeight:14,num_frames:5,zoom:10,canFly:!0,canDie:!0,numDeathTypes:3,monitorMouseMovement:!1,eventDistanceToBug:40,minTimeBetweenMultipy:1E3,mouseOver:"random"},initialize:function(a){this.options=mergeOptions(this.options,a);this.options.minBugs>this.options.maxBugs&&(this.options.minBugs=this.options.maxBugs); var BugDispatch={options:{minDelay:500,maxDelay:1E4,minBugs:2,maxBugs:20,minSpeed:5,maxSpeed:10,maxLargeTurnDeg:150,maxSmallTurnDeg:10,maxWiggleDeg:5,imageSprite:"fly-sprite.webp",bugWidth:13,bugHeight:14,num_frames:5,zoom:10,canFly:!0,canDie:!0,numDeathTypes:3,monitorMouseMovement:!1,eventDistanceToBug:40,minTimeBetweenMultipy:1E3,mouseOver:"random"},initialize:function(a){this.options=mergeOptions(this.options,a);this.options.minBugs>this.options.maxBugs&&(this.options.minBugs=this.options.maxBugs);
this.modes=["multiply","nothing"];this.options.canFly&&this.modes.push("fly","flyoff");this.options.canDie&&this.modes.push("die");-1==this.modes.indexOf(this.options.mouseOver)&&(this.options.mouseOver="random");this.transform=null;this.transforms={Moz:function(a){this.bug.style.MozTransform=a},webkit:function(a){this.bug.style.webkitTransform=a},O:function(a){this.bug.style.OTransform=a},ms:function(a){this.bug.style.msTransform=a},Khtml:function(a){this.bug.style.KhtmlTransform=a},w3c:function(a){this.bug.style.transform= this.modes=["multiply","nothing"];this.options.canFly&&this.modes.push("fly","flyoff");this.options.canDie&&this.modes.push("die");-1==this.modes.indexOf(this.options.mouseOver)&&(this.options.mouseOver="random");this.transform=null;this.transforms={Moz:function(a){this.bug.style.MozTransform=a},webkit:function(a){this.bug.style.webkitTransform=a},O:function(a){this.bug.style.OTransform=a},ms:function(a){this.bug.style.msTransform=a},Khtml:function(a){this.bug.style.KhtmlTransform=a},w3c:function(a){this.bug.style.transform=
a}};if("transform"in document.documentElement.style)this.transform=this.transforms.w3c;else{var b=["Moz","webkit","O","ms","Khtml"],c=0;for(c=0;c<b.length;c++)if(b[c]+"Transform"in document.documentElement.style){this.transform=this.transforms[b[c]];break}}if(this.transform){this.bugs=[];b="multiply"===this.options.mouseOver?this.options.minBugs:this.random(this.options.minBugs,this.options.maxBugs,!0);c=0;var d=this;for(c=0;c<b;c++){a=JSON.parse(JSON.stringify(this.options));var e=SpawnBug();a.wingsOpen= a}};if("transform"in document.documentElement.style)this.transform=this.transforms.w3c;else{var b=["Moz","webkit","O","ms","Khtml"],c=0;for(c=0;c<b.length;c++)if(b[c]+"Transform"in document.documentElement.style){this.transform=this.transforms[b[c]];break}}if(this.transform){this.bugs=[];b="multiply"===this.options.mouseOver?this.options.minBugs:this.random(this.options.minBugs,this.options.maxBugs,!0);c=0;var d=this;for(c=0;c<b;c++){a=JSON.parse(JSON.stringify(this.options));var e=SpawnBug();a.wingsOpen=
this.options.canFly?.5<Math.random()?!0:!1:!0;a.walkSpeed=this.random(this.options.minSpeed,this.options.maxSpeed);e.initialize(this.transform,a);this.bugs.push(e)}this.spawnDelay=[];for(c=0;c<b;c++)a=this.random(this.options.minDelay,this.options.maxDelay,!0),e=this.bugs[c],this.spawnDelay[c]=setTimeout(function(a){return function(){d.options.canFly?a.flyIn():a.walkIn()}}(e),a),d.add_events_to_bug(e);this.options.monitorMouseMovement&&(window.onmousemove=function(){d.check_if_mouse_close_to_bug()})}}, this.options.canFly?.5<Math.random()?!0:!1:!0;a.walkSpeed=this.random(this.options.minSpeed,this.options.maxSpeed);e.initialize(this.transform,a);this.bugs.push(e)}this.spawnDelay=[];for(c=0;c<b;c++)a=this.random(this.options.minDelay,this.options.maxDelay,!0),e=this.bugs[c],this.spawnDelay[c]=setTimeout(function(a){return function(){d.options.canFly?a.flyIn():a.walkIn()}}(e),a),d.add_events_to_bug(e);this.options.monitorMouseMovement&&(window.onmousemove=function(){d.check_if_mouse_close_to_bug()})}},
@ -20,7 +20,7 @@
a.pageX&&(b=a.pageX-(document.body.scrollLeft+document.documentElement.scrollLeft),c=a.pageY-(document.body.scrollTop+document.documentElement.scrollTop));a=this.bugs.length;var d;for(d=0;d<a;d++){var e=this.bugs[d].getPos();e&&Math.abs(e.top-c)+Math.abs(e.left-b)<this.options.eventDistanceToBug&&!this.bugs[d].flyperiodical&&this.near_bug(this.bugs[d])}}},near_bug:function(a){this.on_bug(a)},on_bug:function(a){if(a.alive){var b=this.options.mouseOver;"random"===b&&(b=this.modes[this.random(0,this.modes.length- a.pageX&&(b=a.pageX-(document.body.scrollLeft+document.documentElement.scrollLeft),c=a.pageY-(document.body.scrollTop+document.documentElement.scrollTop));a=this.bugs.length;var d;for(d=0;d<a;d++){var e=this.bugs[d].getPos();e&&Math.abs(e.top-c)+Math.abs(e.left-b)<this.options.eventDistanceToBug&&!this.bugs[d].flyperiodical&&this.near_bug(this.bugs[d])}}},near_bug:function(a){this.on_bug(a)},on_bug:function(a){if(a.alive){var b=this.options.mouseOver;"random"===b&&(b=this.modes[this.random(0,this.modes.length-
1,!0)]);if("fly"===b)a.stop(),a.flyRand();else if("nothing"!==b)if("flyoff"===b)a.stop(),a.flyOff();else if("die"===b)a.die();else if("multiply"===b&&!this.multiplyDelay&&this.bugs.length<this.options.maxBugs){var c=SpawnBug();b=JSON.parse(JSON.stringify(this.options));var d=a.getPos(),e=this;b.wingsOpen=this.options.canFly?.5<Math.random()?!0:!1:!0;b.walkSpeed=this.random(this.options.minSpeed,this.options.maxSpeed);c.initialize(this.transform,b);c.drawBug(d.top,d.left);b.canFly?(c.flyRand(),a.flyRand()): 1,!0)]);if("fly"===b)a.stop(),a.flyRand();else if("nothing"!==b)if("flyoff"===b)a.stop(),a.flyOff();else if("die"===b)a.die();else if("multiply"===b&&!this.multiplyDelay&&this.bugs.length<this.options.maxBugs){var c=SpawnBug();b=JSON.parse(JSON.stringify(this.options));var d=a.getPos(),e=this;b.wingsOpen=this.options.canFly?.5<Math.random()?!0:!1:!0;b.walkSpeed=this.random(this.options.minSpeed,this.options.maxSpeed);c.initialize(this.transform,b);c.drawBug(d.top,d.left);b.canFly?(c.flyRand(),a.flyRand()):
(c.go(),a.go());this.bugs.push(c);this.multiplyDelay=!0;setTimeout(function(){e.add_events_to_bug(c);e.multiplyDelay=!1},this.options.minTimeBetweenMultipy)}}},random:function(a,b,c){if(a==b)return c?Math.round(a):a;var d=a-.5+Math.random()*(b-a+1);d>b?d=b:d<a&&(d=a);return c?Math.round(d):d}},BugController=function(){this.initialize.apply(this,arguments)};BugController.prototype=BugDispatch; (c.go(),a.go());this.bugs.push(c);this.multiplyDelay=!0;setTimeout(function(){e.add_events_to_bug(c);e.multiplyDelay=!1},this.options.minTimeBetweenMultipy)}}},random:function(a,b,c){if(a==b)return c?Math.round(a):a;var d=a-.5+Math.random()*(b-a+1);d>b?d=b:d<a&&(d=a);return c?Math.round(d):d}},BugController=function(){this.initialize.apply(this,arguments)};BugController.prototype=BugDispatch;
var SpiderController=function(){this.options=mergeOptions(this.options,{imageSprite:"spider-sprite.gif",bugWidth:69,bugHeight:90,num_frames:7,canFly:!1,canDie:!0,numDeathTypes:2,zoom:6,minDelay:200,maxDelay:3E3,minSpeed:6,maxSpeed:13,minBugs:3,maxBugs:10});this.initialize.apply(this,arguments)};SpiderController.prototype=BugDispatch; var SpiderController=function(){this.options=mergeOptions(this.options,{imageSprite:"spider-sprite.webp",bugWidth:69,bugHeight:90,num_frames:7,canFly:!1,canDie:!0,numDeathTypes:2,zoom:6,minDelay:200,maxDelay:3E3,minSpeed:6,maxSpeed:13,minBugs:3,maxBugs:10});this.initialize.apply(this,arguments)};SpiderController.prototype=BugDispatch;
var Bug={options:{wingsOpen:!1,walkSpeed:2,flySpeed:40,edge_resistance:50,zoom:10},initialize:function(a,b){this.options=mergeOptions(this.options,b);this.NEAR_TOP_EDGE=1;this.NEAR_BOTTOM_EDGE=2;this.NEAR_LEFT_EDGE=4;this.NEAR_RIGHT_EDGE=8;this.directions={};this.directions[this.NEAR_TOP_EDGE]=270;this.directions[this.NEAR_BOTTOM_EDGE]=90;this.directions[this.NEAR_LEFT_EDGE]=0;this.directions[this.NEAR_RIGHT_EDGE]=180;this.directions[this.NEAR_TOP_EDGE+this.NEAR_LEFT_EDGE]=315;this.directions[this.NEAR_TOP_EDGE+ var Bug={options:{wingsOpen:!1,walkSpeed:2,flySpeed:40,edge_resistance:50,zoom:10},initialize:function(a,b){this.options=mergeOptions(this.options,b);this.NEAR_TOP_EDGE=1;this.NEAR_BOTTOM_EDGE=2;this.NEAR_LEFT_EDGE=4;this.NEAR_RIGHT_EDGE=8;this.directions={};this.directions[this.NEAR_TOP_EDGE]=270;this.directions[this.NEAR_BOTTOM_EDGE]=90;this.directions[this.NEAR_LEFT_EDGE]=0;this.directions[this.NEAR_RIGHT_EDGE]=180;this.directions[this.NEAR_TOP_EDGE+this.NEAR_LEFT_EDGE]=315;this.directions[this.NEAR_TOP_EDGE+
this.NEAR_RIGHT_EDGE]=225;this.directions[this.NEAR_BOTTOM_EDGE+this.NEAR_LEFT_EDGE]=45;this.directions[this.NEAR_BOTTOM_EDGE+this.NEAR_RIGHT_EDGE]=135;this.large_turn_angle_deg=this.angle_rad=this.angle_deg=0;this.near_edge=!1;this.edge_test_counter=10;this.fly_counter=this.large_turn_counter=this.small_turn_counter=0;this.toggle_stationary_counter=50*Math.random();this.zoom=this.random(this.options.zoom,10)/10;this.stationary=!1;this.bug=null;this.active=!0;this.wingsOpen=this.options.wingsOpen; this.NEAR_RIGHT_EDGE]=225;this.directions[this.NEAR_BOTTOM_EDGE+this.NEAR_LEFT_EDGE]=45;this.directions[this.NEAR_BOTTOM_EDGE+this.NEAR_RIGHT_EDGE]=135;this.large_turn_angle_deg=this.angle_rad=this.angle_deg=0;this.near_edge=!1;this.edge_test_counter=10;this.fly_counter=this.large_turn_counter=this.small_turn_counter=0;this.toggle_stationary_counter=50*Math.random();this.zoom=this.random(this.options.zoom,10)/10;this.stationary=!1;this.bug=null;this.active=!0;this.wingsOpen=this.options.wingsOpen;
this.transform=a;this.flyIndex=this.walkIndex=0;this.alive=!0;this.twitchTimer=null;this.rad2deg_k=180/Math.PI;this.deg2rad_k=Math.PI/180;this.makeBug();this.angle_rad=this.deg2rad(this.angle_deg);this.angle_deg=this.random(0,360,!0)},go:function(){if(this.transform){this.drawBug();var a=this;this.animating=!0;this.going=requestAnimFrame(function(b){a.animate(b)})}},stop:function(){this.animating=!1;this.going&&(clearTimeout(this.going),this.going=null);this.flyperiodical&&(clearTimeout(this.flyperiodical), this.transform=a;this.flyIndex=this.walkIndex=0;this.alive=!0;this.twitchTimer=null;this.rad2deg_k=180/Math.PI;this.deg2rad_k=Math.PI/180;this.makeBug();this.angle_rad=this.deg2rad(this.angle_deg);this.angle_deg=this.random(0,360,!0)},go:function(){if(this.transform){this.drawBug();var a=this;this.animating=!0;this.going=requestAnimFrame(function(b){a.animate(b)})}},stop:function(){this.animating=!1;this.going&&(clearTimeout(this.going),this.going=null);this.flyperiodical&&(clearTimeout(this.flyperiodical),
@ -47,14 +47,14 @@
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
new BugController({ new BugController({
imageSprite: "/assets/images/fly-sprite.gif", imageSprite: "/assets/images/fly-sprite.webp",
canDie: false, canDie: false,
minBugs: 5, minBugs: 5,
maxBugs: 30, maxBugs: 30,
mouseOver: "fly" mouseOver: "fly"
}); });
new SpiderController({ new SpiderController({
imageSprite: "/assets/images/spider-sprite.gif", imageSprite: "/assets/images/spider-sprite.webp",
canDie: false, canDie: false,
minBugs: 2, minBugs: 2,
maxBugs: 20, maxBugs: 20,
@ -644,7 +644,7 @@
var inlineImage = document.getElementById("desktop-expanded-image"); var inlineImage = document.getElementById("desktop-expanded-image");
inlineImage.src = image.replace("100w.gif", "giphy.gif"); inlineImage.src = image.replace("100w.webp", "giphy.webp");
linkText.href = image; linkText.href = image;
imgLink.href=image; imgLink.href=image;
@ -1026,9 +1026,9 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="thumbnail" content="/assets/images/{{'SITE_NAME' | app_config}}/preview.gif"> <meta name="thumbnail" content="/assets/images/{{'SITE_NAME' | app_config}}/preview.webp">
<link rel="icon" type="image/png" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif"> <link rel="icon" type="image/png" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp">
{% block title %} {% block title %}
<title>{{'SITE_NAME' | app_config}}</title> <title>{{'SITE_NAME' | app_config}}</title>
@ -1036,7 +1036,7 @@
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="og:title" content="{{'SITE_NAME' | app_config}}" /> <meta property="og:title" content="{{'SITE_NAME' | app_config}}" />
<meta property="og:site_name" content="{{request.host}}" /> <meta property="og:site_name" content="{{request.host}}" />
<meta property="og:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif" /> <meta property="og:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" />
<meta property="og:url" content="{{request.path | full_link}}"> <meta property="og:url" content="{{request.path | full_link}}">
<meta property="og:description" name="description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}"> <meta property="og:description" name="description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}">
<meta property="og:author" name="author" content="@{{request.host_url}}" /> <meta property="og:author" name="author" content="@{{request.host_url}}" />
@ -1047,7 +1047,7 @@
<meta name="twitter:title" content="{{'SITE_NAME' | app_config}}" /> <meta name="twitter:title" content="{{'SITE_NAME' | app_config}}" />
<meta name="twitter:creator" content="@{{request.host_url}}"> <meta name="twitter:creator" content="@{{request.host_url}}">
<meta name="twitter:description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" /> <meta name="twitter:description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" />
<meta name="twitter:image" content="/assets/images/{{'SITE_NAME' | app_config}}/preview.gif" /> <meta name="twitter:image" content="/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" />
<meta name="twitter:url" content="{{request.path | full_link}}" /> <meta name="twitter:url" content="{{request.path | full_link}}" />
{% endblock %} {% endblock %}
@ -1061,12 +1061,12 @@
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"> <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif"> <link rel="apple-touch-icon" sizes="180x180" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp">
<!---<link rel="icon" type="image/png" sizes="32x32" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif"> <!---<link rel="icon" type="image/png" sizes="32x32" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp">
<link rel="icon" type="image/png" sizes="16x16" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif">---> <link rel="icon" type="image/png" sizes="16x16" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp">--->
<link rel="manifest" href="/assets/manifest.json"> <link rel="manifest" href="/assets/manifest.json">
<link rel="mask-icon" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" color="#{{'DEFAULT_COLOR' | app_config}}"> <link rel="mask-icon" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp" color="#{{'DEFAULT_COLOR' | app_config}}">
<link rel="shortcut icon" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif"> <link rel="shortcut icon" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp">
<meta name="apple-mobile-web-app-title" content="{{'SITE_NAME' | app_config}}"> <meta name="apple-mobile-web-app-title" content="{{'SITE_NAME' | app_config}}">
<meta name="application-name" content="{{'SITE_NAME' | app_config}}"> <meta name="application-name" content="{{'SITE_NAME' | app_config}}">
<meta name="msapplication-TileColor" content="#{{'DEFAULT_COLOR' | app_config}}"> <meta name="msapplication-TileColor" content="#{{'DEFAULT_COLOR' | app_config}}">
@ -1078,127 +1078,127 @@
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="320x480" sizes="320x480"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="640x960" sizes="640x960"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-icon" rel="apple-touch-icon"
sizes="640x1136" sizes="640x1136"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-icon" rel="apple-touch-icon"
sizes="750x1334" sizes="750x1334"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="768x1004" sizes="768x1004"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="768x1024" sizes="768x1024"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="828x1792" sizes="828x1792"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1024x748" sizes="1024x748"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1024x768" sizes="1024x768"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1125x2436" sizes="1125x2436"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1242x2208" sizes="1242x2208"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1242x2688" sizes="1242x2688"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1334x750" sizes="1334x750"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1536x2008" sizes="1536x2008"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1536x2048" sizes="1536x2048"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1668x2224" sizes="1668x2224"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="1792x828" sizes="1792x828"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2048x1496" sizes="2048x1496"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2048x1536" sizes="2048x1536"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2048x2732" sizes="2048x2732"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2208x1242" sizes="2208x1242"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2224x1668" sizes="2224x1668"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2436x1125" sizes="2436x1125"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2668x1242" sizes="2668x1242"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
<link <link
rel="apple-touch-startup-image" rel="apple-touch-startup-image"
sizes="2737x2048" sizes="2737x2048"
href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp"
/> />
@ -1233,7 +1233,7 @@
<body id="{% if request.path != '/comments' %}{% block pagetype %}frontpage{% endblock %}{% endif %}" style="overflow-x: hidden; {% if v and v.background %} background:url(/assets/images/backgrounds/{{v.background}}) no-repeat center center fixed !important; background-size: cover!important; background-color: #000!important;{% endif %} {% if 'rdrama' in request.host %}margin-top: 29px!important;{% endif %}"> <body id="{% if request.path != '/comments' %}{% block pagetype %}frontpage{% endblock %}{% endif %}" style="overflow-x: hidden; {% if v and v.background %} background:url(/assets/images/backgrounds/{{v.background}}) no-repeat center center fixed !important; background-size: cover!important; background-color: #000!important;{% endif %} {% if 'rdrama' in request.host %}margin-top: 29px!important;{% endif %}">
{% if "marsey.tech" not in request.host %}<a rel="nofollow noopener noreferrer" href="{% if 'rdrama' in request.host %}https://secure.transequality.org/site/Donation2?df_id=1480{% else %}/{% endif %}"><img loading="lazy" src="/assets/images/{{'SITE_NAME' | app_config}}/{% if v %}banner.gif{% else %}cached.gif{% endif %}" width="100%"></a>{% endif %} {% if "marsey.tech" not in request.host %}<a rel="nofollow noopener noreferrer" href="{% if 'rdrama' in request.host %}https://secure.transequality.org/site/Donation2?df_id=1480{% else %}/{% endif %}"><img loading="lazy" src="/assets/images/{{'SITE_NAME' | app_config}}/{% if v %}banner.webp{% else %}cached.webp{% endif %}" width="100%"></a>{% endif %}
{% include "header.html" %} {% include "header.html" %}

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseybrainlet.gif"> <img loading="lazy" src="/assets/images/emojis/marseybrainlet.webp">
<pre></pre> <pre></pre>
<h1 class="h5">400 Bad Request</h1> <h1 class="h5">400 Bad Request</h1>
<p class="text-muted mb-5">That request was bad and you should feel bad.</p> <p class="text-muted mb-5">That request was bad and you should feel bad.</p>

View File

@ -11,7 +11,7 @@
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseydead.gif"> <img loading="lazy" src="/assets/images/emojis/marseydead.webp">
<pre></pre> <pre></pre>
<h1 class="h5">401 Not Authorized</h1> <h1 class="h5">401 Not Authorized</h1>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseytroll.gif"> <img loading="lazy" src="/assets/images/emojis/marseytroll.webp">
<pre></pre> <pre></pre>
<h1 class="h5">403 Forbidden</h1> <h1 class="h5">403 Forbidden</h1>
<p class="text-muted mb-5">YOU AREN'T WELCOME HERE GO AWAY</p> <p class="text-muted mb-5">YOU AREN'T WELCOME HERE GO AWAY</p>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseyconfused.gif"> <img loading="lazy" src="/assets/images/emojis/marseyconfused.webp">
<pre></pre> <pre></pre>
<h1 class="h5">404 Page Not Found</h1> <h1 class="h5">404 Page Not Found</h1>
<p class="text-muted mb-5">Someone typed something wrong and it was probably you, please do better.</p> <p class="text-muted mb-5">Someone typed something wrong and it was probably you, please do better.</p>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseyretard.gif"> <img loading="lazy" src="/assets/images/emojis/marseyretard.webp">
<pre></pre> <pre></pre>
<h1 class="h5">405 Method Not Allowed</h1> <h1 class="h5">405 Method Not Allowed</h1>
<p class="text-muted mb-5">idk how anyone gets this error but if you see this, remember to follow @carpathianflorist<BR>the original error text here talked about internet gremlins and wtf</p> <p class="text-muted mb-5">idk how anyone gets this error but if you see this, remember to follow @carpathianflorist<BR>the original error text here talked about internet gremlins and wtf</p>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseymad.gif"> <img loading="lazy" src="/assets/images/emojis/marseymad.webp">
<pre></pre> <pre></pre>
<h1 class="h5">409 Conflict</h1> <h1 class="h5">409 Conflict</h1>
<p class="text-muted mb-5">There were no survivors.</p> <p class="text-muted mb-5">There were no survivors.</p>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseythonk.gif"> <img loading="lazy" src="/assets/images/emojis/marseythonk.webp">
<pre></pre> <pre></pre>
<h1 class="h5">410 Gone</h1> <h1 class="h5">410 Gone</h1>
<p class="text-muted mb-5">There's nothing left here but a giant smouldering crater.</p> <p class="text-muted mb-5">There's nothing left here but a giant smouldering crater.</p>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseychonker.gif"> <img loading="lazy" src="/assets/images/emojis/marseychonker.webp">
<pre></pre> <pre></pre>
<h1 class="h5">413 Image Size Too Large</h1> <h1 class="h5">413 Image Size Too Large</h1>
<p class="text-muted mb-5">There's a 1 MB limit to profile picture uploads, and a 16 MB limit to all other image uploads.</p> <p class="text-muted mb-5">There's a 1 MB limit to profile picture uploads, and a 16 MB limit to all other image uploads.</p>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseytea.gif"> <img loading="lazy" src="/assets/images/emojis/marseytea.webp">
<pre></pre> <pre></pre>
<h1 class="h5">418 I'm A Teapot</h1> <h1 class="h5">418 I'm A Teapot</h1>
<p class="text-muted mb-5">You're on a new level of retardation if you somehow get this error. Do better.</p> <p class="text-muted mb-5">You're on a new level of retardation if you somehow get this error. Do better.</p>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseylawlz.gif"> <img loading="lazy" src="/assets/images/emojis/marseylawlz.webp">
<pre></pre> <pre></pre>
<h1 class="h5">422 Unprocessable Entity</h1> <h1 class="h5">422 Unprocessable Entity</h1>
<p class="text-muted mb-5">STOP BREAKING THINGS PLEASE WHY DO WE HAVE SO MANY ERROR CODES</p> <p class="text-muted mb-5">STOP BREAKING THINGS PLEASE WHY DO WE HAVE SO MANY ERROR CODES</p>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseyrentfree.gif"> <img loading="lazy" src="/assets/images/emojis/marseyrentfree.webp">
<pre></pre> <pre></pre>
<h1 class="h5">429 Too Many Requests</h1> <h1 class="h5">429 Too Many Requests</h1>
<p class="text-muted mb-5">go spam somewhere else nerd</p> <p class="text-muted mb-5">go spam somewhere else nerd</p>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseyglow.gif"> <img loading="lazy" src="/assets/images/emojis/marseyglow.webp">
<pre></pre> <pre></pre>
<h1 class="h5">451 Unavailable For Legal Reasons</h1> <h1 class="h5">451 Unavailable For Legal Reasons</h1>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" src="/assets/images/emojis/marseydead.gif"> <img loading="lazy" src="/assets/images/emojis/marseydead.webp">
<pre></pre> <pre></pre>
<h1 class="h5">500 Internal Server Error</h1> <h1 class="h5">500 Internal Server Error</h1>
<p class="text-muted mb-5">Hiiiii it's carp! I think this error means that there's a timeout error. And I think that means something took too long to load so it decided not to work at all. If you keep seeing this on the same page <I>but not other pages</I>, then something is probably wrong with that specific function. It may not be called a function, but that sounds right to me. Anyway, ping me and I'll whine to someone smarter to fix it. Don't bother them. Thanks ily <3</p> <p class="text-muted mb-5">Hiiiii it's carp! I think this error means that there's a timeout error. And I think that means something took too long to load so it decided not to work at all. If you keep seeing this on the same page <I>but not other pages</I>, then something is probably wrong with that specific function. It may not be called a function, but that sounds right to me. Anyway, ping me and I'll whine to someone smarter to fix it. Don't bother them. Thanks ily <3</p>

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content=""> <meta name="author" content="">
<link rel="icon" type="image/png" href="/assets/{{'SITE_NAME' | app_config}}/icon.gif"> <link rel="icon" type="image/png" href="/assets/{{'SITE_NAME' | app_config}}/icon.webp">
<title>503 Service Unavailable</title> <title>503 Service Unavailable</title>
@ -18,7 +18,7 @@
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<!-- iOS webapp --> <!-- iOS webapp -->
<link rel="apple-touch-icon" href="/assets/{{'SITE_NAME' | app_config}}/icon.gif"> <link rel="apple-touch-icon" href="/assets/{{'SITE_NAME' | app_config}}/icon.webp">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<meta name="apple-mobile-web-app-title" content="{{'SITE_NAME' | app_config}}"> <meta name="apple-mobile-web-app-title" content="{{'SITE_NAME' | app_config}}">
@ -69,7 +69,7 @@
<div class="col-10"> <div class="col-10">
<div class="text-center px-3 py-8"> <div class="text-center px-3 py-8">
<span class="fa-stack text-muted mb-5" style="font-size: 2.5rem;"> <span class="fa-stack text-muted mb-5" style="font-size: 2.5rem;">
<img loading="lazy" src="/assets/images/emojis/marseydead.gif"> <img loading="lazy" src="/assets/images/emojis/marseydead.webp">
<pre></pre> <pre></pre>
</span> </span>
<h1 class="h5">503 Service Unavailable</h1> <h1 class="h5">503 Service Unavailable</h1>

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col col-md-5"> <div class="col col-md-5">
<div class="text-center px-3 mt-5"> <div class="text-center px-3 mt-5">
<img loading="lazy" src="/assets/images/emojis/marseytwerking.gif"> <img loading="lazy" src="/assets/images/emojis/marseytwerking.webp">
<h1 class="h5">Are you over 18?</h1> <h1 class="h5">Are you over 18?</h1>
<p class="mb-5">This post is rated +18 (Adult-Only). You must be 18 or older to continue. Are you sure you want to proceed?</p> <p class="mb-5">This post is rated +18 (Adult-Only). You must be 18 or older to continue. Are you sure you want to proceed?</p>
<div class="btn-toolbar justify-content-center mb-4"> <div class="btn-toolbar justify-content-center mb-4">

View File

@ -10,7 +10,7 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-10 col-md-5"> <div class="col-10 col-md-5">
<div class="text-center px-3 my-8"> <div class="text-center px-3 my-8">
<img loading="lazy" class="mb-2" src="/assets/images/emojis/marseymerchant.gif"> <img loading="lazy" class="mb-2" src="/assets/images/emojis/marseymerchant.webp">
<h1 class="h5">401 Not Authorized</h1> <h1 class="h5">401 Not Authorized</h1>
<p class="text-muted">This page is only available to {% if "rdrama" in request.host %}paypigs{% else %}patrons{% endif %}:</p> <p class="text-muted">This page is only available to {% if "rdrama" in request.host %}paypigs{% else %}patrons{% endif %}:</p>
<a rel="nofollow noopener noreferrer" href="{{'GUMROAD_LINK' | app_config}}">{{'GUMROAD_LINK' | app_config}}</a> <a rel="nofollow noopener noreferrer" href="{{'GUMROAD_LINK' | app_config}}">{{'GUMROAD_LINK' | app_config}}</a>

View File

@ -55,7 +55,7 @@ On {{'SITE_NAME' | app_config}}, you can use Markdown formatting.
<tr> <tr>
<td>Emojis</td> <td>Emojis</td>
<td>:marseylove:</td> <td>:marseylove:</td>
<td><img loading="lazy" data-toggle="tooltip" title="marseylove" delay="0" height="20" src="/assets/images/emojis/marseylove.gif"></td> <td><img loading="lazy" data-toggle="tooltip" title="marseylove" delay="0" height="20" src="/assets/images/emojis/marseylove.webp"></td>
</tr> </tr>
</table> </table>

View File

@ -10,13 +10,13 @@
<div class="container-fluid" style="padding:0;"> <div class="container-fluid" style="padding:0;">
<div class="flex-grow-1"> <div class="flex-grow-1">
<a {% if v %}href="/"{% else %}href="/logged_out"{% endif %} class="navbar-brand"> <a {% if v %}href="/"{% else %}href="/logged_out"{% endif %} class="navbar-brand">
<img loading="lazy" height="30" src="/assets/images/{{'SITE_NAME' | app_config}}/headericon.gif"> <img loading="lazy" height="30" src="/assets/images/{{'SITE_NAME' | app_config}}/headericon.webp">
{% if "marsey.tech" in request.host %} {% if "marsey.tech" in request.host %}
<span style="font-weight: bold; font-size: 20px;">marsey.tech</span> <span style="font-weight: bold; font-size: 20px;">marsey.tech</span>
{% elif "gigachadlife" in request.host %} {% elif "gigachadlife" in request.host %}
<span style="font-weight: bold; font-size: 20px;">GigaChadLife</span> <span style="font-weight: bold; font-size: 20px;">GigaChadLife</span>
{% else %} {% else %}
<img loading="lazy" src="/assets/images/{{'SITE_NAME' | app_config}}/logo.gif" height="20"> <img loading="lazy" src="/assets/images/{{'SITE_NAME' | app_config}}/logo.webp" height="20">
{% endif %} {% endif %}
</a> </a>
</div> </div>

View File

@ -120,7 +120,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img loading="lazy" class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.gif"></img> <img loading="lazy" class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.webp"></img>
</div> </div>
</div> </div>

View File

@ -106,7 +106,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img loading="lazy" class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.gif"></img> <img loading="lazy" class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.webp"></img>
</div> </div>
</div> </div>

View File

@ -9,7 +9,7 @@
{% block content %} {% block content %}
<div class="text-center py-7 py-md-8"> <div class="text-center py-7 py-md-8">
<img loading="lazy" src="/assets/images/ruckus.gif" class="empty-state-img mb-3" alt="success state"> <img loading="lazy" src="/assets/images/ruckus.webp" class="empty-state-img mb-3" alt="success state">
<div class="font-weight-bold text-muted mb-4">{{title}}</div> <div class="font-weight-bold text-muted mb-4">{{title}}</div>
<p class="text-muted">{{text}}</p> <p class="text-muted">{{text}}</p>

View File

@ -15,7 +15,7 @@
<td style="font-weight:bold;">{{loop.index}}</td> <td style="font-weight:bold;">{{loop.index}}</td>
<td><a style="color:#{{row['namecolor']}}; font-weight:bold;" href="/@{{row['username']}}"><img loading="lazy" src="/uid/{{uid}}/pic/profile" class="profile-pic-20 mr-1"><span {% if row['patron'] %}class="patron" style="background-color:#{{row['namecolor']}};"{% endif %}>{{row['username']}}</span></a></td> <td><a style="color:#{{row['namecolor']}}; font-weight:bold;" href="/@{{row['username']}}"><img loading="lazy" src="/uid/{{uid}}/pic/profile" class="profile-pic-20 mr-1"><span {% if row['patron'] %}class="patron" style="background-color:#{{row['namecolor']}};"{% endif %}>{{row['username']}}</span></a></td>
<td><img loading="lazy" style="width: 32px; height: 32px" src="/assets/images/{{'SITE_NAME' | app_config}}/badges/patron-{{row['patron']}}.gif"></td> <td><img loading="lazy" style="width: 32px; height: 32px" src="/assets/images/{{'SITE_NAME' | app_config}}/badges/patron-{{row['patron']}}.webp"></td>
<td style="font-weight:bold;"> <td style="font-weight:bold;">
{% for (a,count) in row['awards'].values() %} {% for (a,count) in row['awards'].values() %}

View File

@ -47,13 +47,13 @@
<meta name="description" content=""> <meta name="description" content="">
<meta name="author" content=""> <meta name="author" content="">
<link rel="icon" type="image/png" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif"> <link rel="icon" type="image/png" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp">
<title>{% block pagetitle %}Settings - {{'SITE_NAME' | app_config}}{% endblock %}</title> <title>{% block pagetitle %}Settings - {{'SITE_NAME' | app_config}}{% endblock %}</title>
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="og:title" content="{{'SITE_NAME' | app_config}}" /> <meta property="og:title" content="{{'SITE_NAME' | app_config}}" />
<meta property="og:site_name" content="{{request.host}}" /> <meta property="og:site_name" content="{{request.host}}" />
<meta property="og:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif" /> <meta property="og:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" />
<meta property="og:url" content="{{request.host}}"> <meta property="og:url" content="{{request.host}}">
<meta property="og:description" name="description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}"> <meta property="og:description" name="description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}">
<meta property="og:author" name="author" content="@{{request.host_url}}" /> <meta property="og:author" name="author" content="@{{request.host_url}}" />
@ -64,7 +64,7 @@
<meta name="twitter:title" content="{{'SITE_NAME' | app_config}}" /> <meta name="twitter:title" content="{{'SITE_NAME' | app_config}}" />
<meta name="twitter:creator" content="@{{request.host_url}}"> <meta name="twitter:creator" content="@{{request.host_url}}">
<meta name="twitter:description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" /> <meta name="twitter:description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" />
<meta name="twitter:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif" /> <meta name="twitter:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" />
<meta name="twitter:url" content="{{request.host}}" /> <meta name="twitter:url" content="{{request.host}}" />
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600&display=swap" rel="stylesheet">

View File

@ -8,13 +8,13 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content=""> <meta name="description" content="">
<meta name="author" content=""> <meta name="author" content="">
<meta name="thumbnail" content="/assets/images/{{'SITE_NAME' | app_config}}/preview.gif"> <meta name="thumbnail" content="/assets/images/{{'SITE_NAME' | app_config}}/preview.webp">
<link rel="icon" type="image/png" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif"> <link rel="icon" type="image/png" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp">
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="og:title" content="{{'SITE_NAME' | app_config}}" /> <meta property="og:title" content="{{'SITE_NAME' | app_config}}" />
<meta property="og:site_name" content="{{request.host}}" /> <meta property="og:site_name" content="{{request.host}}" />
<meta property="og:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif" /> <meta property="og:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" />
<meta property="og:url" content="{{request.path | full_link}}"> <meta property="og:url" content="{{request.path | full_link}}">
<meta property="og:description" name="description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}"> <meta property="og:description" name="description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}">
<meta property="og:author" name="author" content="{{request.host_url}}" /> <meta property="og:author" name="author" content="{{request.host_url}}" />
@ -25,7 +25,7 @@
<meta name="twitter:title" content="{{'SITE_NAME' | app_config}}" /> <meta name="twitter:title" content="{{'SITE_NAME' | app_config}}" />
<meta name="twitter:creator" content="{{request.host_url}}"> <meta name="twitter:creator" content="{{request.host_url}}">
<meta name="twitter:description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" /> <meta name="twitter:description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" />
<meta name="twitter:image" content="/assets/images/{{'SITE_NAME' | app_config}}/preview.gif" /> <meta name="twitter:image" content="/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" />
<meta name="twitter:url" content="{{request.path | full_link}}" /> <meta name="twitter:url" content="{{request.path | full_link}}" />

View File

@ -169,48 +169,48 @@
folder: "fantasy", folder: "fantasy",
backgrounds: backgrounds:
[ [
"1.gif", "1.webp",
"2.gif", "2.webp",
"3.gif", "3.webp",
"4.gif", "4.webp",
"5.gif", "5.webp",
"6.gif", "6.webp",
] ]
}, },
{ {
folder: "solarpunk", folder: "solarpunk",
backgrounds: backgrounds:
[ [
"1.gif", "1.webp",
"2.gif", "2.webp",
"3.gif", "3.webp",
"4.gif", "4.webp",
"5.gif", "5.webp",
"6.gif", "6.webp",
"7.gif", "7.webp",
"8.gif", "8.webp",
"9.gif", "9.webp",
"10.gif", "10.webp",
"11.gif", "11.webp",
"12.gif", "12.webp",
"13.gif", "13.webp",
"14.gif", "14.webp",
"15.gif", "15.webp",
"16.gif", "16.webp",
"17.gif", "17.webp",
"18.gif", "18.webp",
"19.gif", "19.webp",
] ]
}, },
{ {
folder: "pixelart", folder: "pixelart",
backgrounds: backgrounds:
[ [
"1.gif", "1.webp",
"2.gif", "2.webp",
"3.gif", "3.webp",
"4.gif", "4.webp",
"5.gif", "5.webp",
] ]
} }
] ]

View File

@ -71,7 +71,7 @@
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="og:title" content="{{'SITE_NAME' | app_config}}" /> <meta property="og:title" content="{{'SITE_NAME' | app_config}}" />
<meta property="og:site_name" content="{{request.host}}" /> <meta property="og:site_name" content="{{request.host}}" />
<meta property="og:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif" /> <meta property="og:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" />
<meta property="og:url" content="{{request.host}}"> <meta property="og:url" content="{{request.host}}">
<meta property="og:description" name="description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}"> <meta property="og:description" name="description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}">
<meta property="og:author" name="author" content="{{request.host_url}}" /> <meta property="og:author" name="author" content="{{request.host_url}}" />
@ -82,7 +82,7 @@
<meta name="twitter:title" content="{{'SITE_NAME' | app_config}}" /> <meta name="twitter:title" content="{{'SITE_NAME' | app_config}}" />
<meta name="twitter:creator" content="{{request.host_url}}"> <meta name="twitter:creator" content="{{request.host_url}}">
<meta name="twitter:description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" /> <meta name="twitter:description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" />
<meta name="twitter:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif" /> <meta name="twitter:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" />
<meta name="twitter:url" content="{{request.host}}" /> <meta name="twitter:url" content="{{request.host}}" />
<title>{% if ref_user %}{{ref_user.username}} invites you to {{'SITE_NAME' | app_config}}{% else %}Sign up - {{'SITE_NAME' | app_config}}{% endif %}</title> <title>{% if ref_user %}{{ref_user.username}} invites you to {{'SITE_NAME' | app_config}}{% else %}Sign up - {{'SITE_NAME' | app_config}}{% endif %}</title>
@ -223,7 +223,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img loading="lazy" class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.gif"></img> <img loading="lazy" class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.webp"></img>
</div> </div>
</div> </div>

View File

@ -11,7 +11,7 @@
<meta property="og:type" content="article" /> <meta property="og:type" content="article" />
<meta property="og:title" content="{{'SITE_NAME' | app_config}}" /> <meta property="og:title" content="{{'SITE_NAME' | app_config}}" />
<meta property="og:site_name" content="{{request.host}}" /> <meta property="og:site_name" content="{{request.host}}" />
<meta property="og:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif" /> <meta property="og:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" />
<meta property="og:url" content="{{request.host}}"> <meta property="og:url" content="{{request.host}}">
<meta property="og:description" name="description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}"> <meta property="og:description" name="description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}">
<meta property="og:author" name="author" content="{{request.host_url}}" /> <meta property="og:author" name="author" content="{{request.host_url}}" />
@ -22,7 +22,7 @@
<meta name="twitter:title" content="{{'SITE_NAME' | app_config}}" /> <meta name="twitter:title" content="{{'SITE_NAME' | app_config}}" />
<meta name="twitter:creator" content="{{request.host_url}}"> <meta name="twitter:creator" content="{{request.host_url}}">
<meta name="twitter:description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" /> <meta name="twitter:description" content="{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" />
<meta name="twitter:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif" /> <meta name="twitter:image" content="{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" />
<meta name="twitter:url" content="{{request.host}}" /> <meta name="twitter:url" content="{{request.host}}" />
<title>{% if ref_user %}{{ref_user.username}} invites you to {{'SITE_NAME' | app_config}}{% else %}{{'SITE_NAME' | app_config}}{% endif %}</title> <title>{% if ref_user %}{{ref_user.username}} invites you to {{'SITE_NAME' | app_config}}{% else %}{{'SITE_NAME' | app_config}}{% endif %}</title>
@ -95,7 +95,7 @@
<div class="splash-overlay"></div> <div class="splash-overlay"></div>
<img loading="lazy" class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.gif"></img> <img loading="lazy" class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.webp"></img>
</div> </div>
</div> </div>

View File

@ -35,7 +35,7 @@
<meta property="og:description" name="description" content="{{comment_info.body}}" /> <meta property="og:description" name="description" content="{{comment_info.body}}" />
<meta property="og:author" name="author" content="{{'@'+comment_info.author.username}}" /> <meta property="og:author" name="author" content="{{'@'+comment_info.author.username}}" />
<meta property="og:title" content="{{'@'+comment_info.author.username}} comments on {{p.title}} - {{'SITE_NAME' | app_config}}" /> <meta property="og:title" content="{{'@'+comment_info.author.username}} comments on {{p.title}} - {{'SITE_NAME' | app_config}}" />
<meta property="og:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif{% endif %}" /> <meta property="og:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp{% endif %}" />
{% if p.is_video %} {% if p.is_video %}
<meta property="og:video" content="{{ p.realurl(v) }}" /> <meta property="og:video" content="{{ p.realurl(v) }}" />
{% endif %} {% endif %}
@ -47,7 +47,7 @@
<meta name="twitter:title" content="{{'@'+comment_info.author.username}} comments on {{p.title}} - {{'SITE_NAME' | app_config}}" /> <meta name="twitter:title" content="{{'@'+comment_info.author.username}} comments on {{p.title}} - {{'SITE_NAME' | app_config}}" />
<meta name="twitter:creator" content="{{'@'+comment_info.author.username}}"> <meta name="twitter:creator" content="{{'@'+comment_info.author.username}}">
<meta name="twitter:description" content="{{comment_info.body}}" /> <meta name="twitter:description" content="{{comment_info.body}}" />
<meta name="twitter:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif{% endif %}" /> <meta name="twitter:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp{% endif %}" />
<meta name="twitter:url" content="{{p.permalink | full_link}}" /> <meta name="twitter:url" content="{{p.permalink | full_link}}" />
{% if linked_comment.author.is_private %} {% if linked_comment.author.is_private %}
@ -64,7 +64,7 @@
<meta property="og:description" name="description" content="{{p.realbody(V)}}" /> <meta property="og:description" name="description" content="{{p.realbody(V)}}" />
<meta property="og:author" name="author" content="{{'@'+p.author.username}}" /> <meta property="og:author" name="author" content="{{'@'+p.author.username}}" />
<meta property="og:title" content="{{p.title}} - {{'SITE_NAME' | app_config}}" /> <meta property="og:title" content="{{p.title}} - {{'SITE_NAME' | app_config}}" />
<meta property="og:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif{% endif %}" /> <meta property="og:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb%}{{p.thumb_url}}{% else %}{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp{% endif %}" />
{% if p.is_video %} {% if p.is_video %}
<meta property="og:video" content="{{ p.realurl(v) }}" /> <meta property="og:video" content="{{ p.realurl(v) }}" />
{% endif %} {% endif %}
@ -76,7 +76,7 @@
<meta name="twitter:title" content="{{p.title}} - {{'SITE_NAME' | app_config}}" /> <meta name="twitter:title" content="{{p.title}} - {{'SITE_NAME' | app_config}}" />
<meta name="twitter:creator" content="{{'@'+p.author.username}}"> <meta name="twitter:creator" content="{{'@'+p.author.username}}">
<meta name="twitter:description" content="{{p.realbody(v)}}" /> <meta name="twitter:description" content="{{p.realbody(v)}}" />
<meta name="twitter:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb %}{{p.thumb_url}}{% else %}{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.gif{% endif %}" /> <meta name="twitter:image" content="{% if p.is_image %}{{p.realurl(v)}}{% elif p.has_thumb %}{{p.thumb_url}}{% else %}{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp{% endif %}" />
<meta name="twitter:url" content="{{p.permalink | full_link}}" /> <meta name="twitter:url" content="{{p.permalink | full_link}}" />
{% if p.author.is_private %} {% if p.author.is_private %}
@ -194,7 +194,7 @@
{% set maxbugs = 20*p.award_count("shit") if p.award_count("shit") <= 5 else 100 %} {% set maxbugs = 20*p.award_count("shit") if p.award_count("shit") <= 5 else 100 %}
<script type="text/javascript"> <script type="text/javascript">
new BugController({ new BugController({
imageSprite: "/assets/images/fly-sprite.gif", imageSprite: "/assets/images/fly-sprite.webp",
canDie: false, canDie: false,
minBugs: {{minbugs}}, minBugs: {{minbugs}},
maxBugs: {{maxbugs}}, maxBugs: {{maxbugs}},
@ -273,7 +273,7 @@
{% if p.active_flags %}<a class="btn btn-primary" href="javascript:void(0)" style="padding:1px 5px; font-size:10px;" onclick="document.getElementById('flaggers').classList.toggle('d-none')">{{p.active_flags}} Reports</a>{% endif %} {% if p.active_flags %}<a class="btn btn-primary" href="javascript:void(0)" style="padding:1px 5px; font-size:10px;" onclick="document.getElementById('flaggers').classList.toggle('d-none')">{{p.active_flags}} Reports</a>{% endif %}
{% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:#1DA1F2" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="{{p.author.verified}}"></i> {% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:#1DA1F2" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="{{p.author.verified}}"></i>
{% endif %} {% endif %}
<a {% if v %}href="{{p.author.url}}"{% else %}href="/logged_out{{p.author.url}}"{% endif %} style="color: #{{p.author.namecolor}}; font-weight: bold;" class="user-name"><img loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-25 mr-2"/><span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.namecolor}};"{% elif p.distinguish_level and 'rdrama' in request.host %}class="mod"{% endif %}>{{p.author.username}}</span></a>{% if p.author.customtitle %}&nbsp;<bdi style="color: #{{p.author.titlecolor}}">&nbsp;{% if p.author.quadrant %}<img loading="lazy" height="20" src="/assets/images/PCM/quadrants/{{p.author.quadrant}}.gif">{% endif %}{{p.author.customtitle | safe}}</bdi>{% endif %} <a {% if v %}href="{{p.author.url}}"{% else %}href="/logged_out{{p.author.url}}"{% endif %} style="color: #{{p.author.namecolor}}; font-weight: bold;" class="user-name"><img loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-25 mr-2"/><span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.namecolor}};"{% elif p.distinguish_level and 'rdrama' in request.host %}class="mod"{% endif %}>{{p.author.username}}</span></a>{% if p.author.customtitle %}&nbsp;<bdi style="color: #{{p.author.titlecolor}}">&nbsp;{% if p.author.quadrant %}<img loading="lazy" height="20" src="/assets/images/PCM/quadrants/{{p.author.quadrant}}.webp">{% endif %}{{p.author.customtitle | safe}}</bdi>{% endif %}
<span data-toggle="tooltip" data-placement="bottom" id="timestamp" title="">&nbsp;{{p.age_string}}</span> <span data-toggle="tooltip" data-placement="bottom" id="timestamp" title="">&nbsp;{{p.age_string}}</span>
({% if p.realurl(v) %}<a href="/search/posts/?q=domain%3A{{p.domain}}&sort=new&t=all" {% if not v or v.newtabexternal %}target="_blank"{% endif %}>{{p.domain}}</a>{% else %}text post{% endif %}) ({% if p.realurl(v) %}<a href="/search/posts/?q=domain%3A{{p.domain}}&sort=new&t=all" {% if not v or v.newtabexternal %}target="_blank"{% endif %}>{{p.domain}}</a>{% else %}text post{% endif %})

View File

@ -65,7 +65,7 @@
<div style="z-index: 3;"> <div style="z-index: 3;">
{% if p.club and not (v and v.coins > 750) %} {% if p.club and not (v and v.coins > 750) %}
<img loading="lazy" src="/assets/images/emojis/marseyglow.gif" class="post-img"> <img loading="lazy" src="/assets/images/emojis/marseyglow.webp" class="post-img">
{% elif not p.url %} {% elif not p.url %}
<a {% if v and v.newtab %}target="_blank"{% endif %} {% if v %}href="{{p.permalink}}"{% else %}href="/logged_out{{p.permalink}}"{% endif %}> <a {% if v and v.newtab %}target="_blank"{% endif %} {% if v %}href="{{p.permalink}}"{% else %}href="/logged_out{{p.permalink}}"{% endif %}>
<img loading="lazy" src="{{p.thumb_url}}" class="post-img"> <img loading="lazy" src="{{p.thumb_url}}" class="post-img">
@ -114,7 +114,7 @@
{% if p.active_flags %}<a class="btn btn-primary" href="javascript:void(0)" style="padding:1px 5px; font-size:10px;" onclick="document.getElementById('flaggers-{{p.id}}').classList.toggle('d-none')">{{p.active_flags}} Reports</a>{% endif %} {% if p.active_flags %}<a class="btn btn-primary" href="javascript:void(0)" style="padding:1px 5px; font-size:10px;" onclick="document.getElementById('flaggers-{{p.id}}').classList.toggle('d-none')">{{p.active_flags}} Reports</a>{% endif %}
{% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:#1DA1F2" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="{{p.author.verified}}"></i> {% if p.author.verified %}<i class="fas fa-badge-check align-middle ml-1" style="color:#1DA1F2" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="{{p.author.verified}}"></i>
{% endif %} {% endif %}
<a {% if v %}href="{{p.author.url}}"{% else %}href="/logged_out{{p.author.url}}"{% endif %} style="color: #{{p.author.namecolor}}; font-weight: bold;" class="user-name"><img loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-25 mr-2"/><span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.namecolor}};"{% elif p.distinguish_level and 'rdrama' in request.host %}class="mod"{% endif %}>{{p.author.username}}</span></a>{% if p.author.customtitle %}<bdi style="color: #{{p.author.titlecolor}}">&nbsp;&nbsp;{% if p.author.quadrant %}<img loading="lazy" height="20" src="/assets/images/PCM/quadrants/{{p.author.quadrant}}.gif">{% endif %}{{p.author.customtitle | safe}}</bdi>{% endif %} <a {% if v %}href="{{p.author.url}}"{% else %}href="/logged_out{{p.author.url}}"{% endif %} style="color: #{{p.author.namecolor}}; font-weight: bold;" class="user-name"><img loading="lazy" src="{{p.author.profile_url}}" class="profile-pic-25 mr-2"/><span {% if p.author.patron and not p.distinguish_level %}class="patron" style="background-color:#{{p.author.namecolor}};"{% elif p.distinguish_level and 'rdrama' in request.host %}class="mod"{% endif %}>{{p.author.username}}</span></a>{% if p.author.customtitle %}<bdi style="color: #{{p.author.titlecolor}}">&nbsp;&nbsp;{% if p.author.quadrant %}<img loading="lazy" height="20" src="/assets/images/PCM/quadrants/{{p.author.quadrant}}.webp">{% endif %}{{p.author.customtitle | safe}}</bdi>{% endif %}
<span data-toggle="tooltip" data-placement="bottom" id="timestamp-{{p.id}}" title="">&nbsp;{{p.age_string}}</span> <span data-toggle="tooltip" data-placement="bottom" id="timestamp-{{p.id}}" title="">&nbsp;{{p.age_string}}</span>
&nbsp; &nbsp;
({% if p.realurl(v) %}<a href="/search/posts/?q=domain%3A{{p.domain}}&sort=new&t=all" target="_blank">{{p.domain}}</a>{% else %}text post{% endif %}) ({% if p.realurl(v) %}<a href="/search/posts/?q=domain%3A{{p.domain}}&sort=new&t=all" target="_blank">{{p.domain}}</a>{% else %}text post{% endif %})

View File

@ -236,7 +236,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content=""> <meta name="description" content="">
<meta name="author" content=""> <meta name="author" content="">
<link rel="icon" type="image/png" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.gif"> <link rel="icon" type="image/png" href="/assets/images/{{'SITE_NAME' | app_config}}/icon.webp">
{% include "emoji_modal.html" %} {% include "emoji_modal.html" %}
{% include "gif_modal.html" %} {% include "gif_modal.html" %}
@ -452,7 +452,7 @@
emojis = Array.from(markdown.matchAll(/:(.{1,30}?):/gi)) emojis = Array.from(markdown.matchAll(/:(.{1,30}?):/gi))
if(emojis != null){ if(emojis != null){
for(i = 0; i < emojis.length; i++){ for(i = 0; i < emojis.length; i++){
markdown = markdown.replace(emojis[i][0], "<img height=30 src='/assets/images/emojis/" + emojis[i][1] + ".gif'>") markdown = markdown.replace(emojis[i][0], "<img height=30 src='/assets/images/emojis/" + emojis[i][1] + ".webp'>")
} }
} }
return markdown return markdown
@ -496,7 +496,7 @@
f=document.getElementById('file-upload'); f=document.getElementById('file-upload');
files = event.clipboardData.files files = event.clipboardData.files
filename = files[0].name.toLowerCase() filename = files[0].name.toLowerCase()
if (filename.endsWith(".jpg") || filename.endsWith(".jpeg") || filename.endsWith(".png") || filename.endsWith(".gif")) if (filename.endsWith(".jpg") || filename.endsWith(".jpeg") || filename.endsWith(".png") || filename.endsWith(".webp"))
{ {
f.files = files; f.files = files;
$('#filename-show').text(filename); $('#filename-show').text(filename);

View File

@ -154,7 +154,7 @@
</div> </div>
</div> </div>
{% if u.customtitle %}<p class="font-weight-bolder" style="color: #{{u.titlecolor}}">{% if u.quadrant %}<img loading="lazy" height="20" src="/assets/images/PCM/quadrants/{{u.quadrant}}.gif">{% endif %}{{u.customtitle | safe}}</p>{% endif %} {% if u.customtitle %}<p class="font-weight-bolder" style="color: #{{u.titlecolor}}">{% if u.quadrant %}<img loading="lazy" height="20" src="/assets/images/PCM/quadrants/{{u.quadrant}}.webp">{% endif %}{{u.customtitle | safe}}</p>{% endif %}
<div class="font-weight-bolder"> <div class="font-weight-bolder">
<span id="profile-coins-amount">{{u.coins}}</span> {{'COINS_NAME' | app_config}}&nbsp;&nbsp; {% if u.stored_subscriber_count >=1 and not u.is_nofollow %}<a href="/@{{u.username}}/followers">{{u.stored_subscriber_count}} follower{{'s' if u.stored_subscriber_count != 1 else ''}}</a>&nbsp;&nbsp; {% endif %}joined <span data-toggle="tooltip" data-placement="bottom" title="" data-original-title="{{u.created_datetime}}">{{u.created_date}}</span> <span id="profile-coins-amount">{{u.coins}}</span> {{'COINS_NAME' | app_config}}&nbsp;&nbsp; {% if u.stored_subscriber_count >=1 and not u.is_nofollow %}<a href="/@{{u.username}}/followers">{{u.stored_subscriber_count}} follower{{'s' if u.stored_subscriber_count != 1 else ''}}</a>&nbsp;&nbsp; {% endif %}joined <span data-toggle="tooltip" data-placement="bottom" title="" data-original-title="{{u.created_datetime}}">{{u.created_date}}</span>
@ -411,7 +411,7 @@
{% if v and v.has_follower(u) and not v.is_nofollow %} {% if v and v.has_follower(u) and not v.is_nofollow %}
<span class="followsyou text-primary badge badge-secondary text-small align-middle mx-1">Follows you</span> <span class="followsyou text-primary badge badge-secondary text-small align-middle mx-1">Follows you</span>
{% endif %} {% endif %}
{% if u.customtitle %}<p style="color: #{{u.titlecolor}}">{% if u.quadrant %}<img loading="lazy" height="20" src="/assets/images/PCM/quadrants/{{u.quadrant}}.gif">{% endif %}{{u.customtitle | safe}}</p>{% endif %} {% if u.customtitle %}<p style="color: #{{u.titlecolor}}">{% if u.quadrant %}<img loading="lazy" height="20" src="/assets/images/PCM/quadrants/{{u.quadrant}}.webp">{% endif %}{{u.customtitle | safe}}</p>{% endif %}
<div class="font-weight-normal"> <div class="font-weight-normal">
<span id="profile-coins-amount-mobile" class="font-weight-bold">{{u.coins}}</span> {{'COINS_NAME' | app_config}}&nbsp;&nbsp;{% if u.stored_subscriber_count >=1 and not u.is_nofollow %}<a href="/@{{u.username}}/followers" class="font-weight-bold">{{u.stored_subscriber_count}} follower{{'s' if u.stored_subscriber_count != 1 else ''}}</a>&nbsp;&nbsp; {% endif %} <span id="profile-coins-amount-mobile" class="font-weight-bold">{{u.coins}}</span> {{'COINS_NAME' | app_config}}&nbsp;&nbsp;{% if u.stored_subscriber_count >=1 and not u.is_nofollow %}<a href="/@{{u.username}}/followers" class="font-weight-bold">{{u.stored_subscriber_count}} follower{{'s' if u.stored_subscriber_count != 1 else ''}}</a>&nbsp;&nbsp; {% endif %}

View File

@ -1,28 +1,28 @@
INSERT INTO public.badge_defs VALUES (12, 'Gold Recruiter', 'Recruited 100 friends to join Drama', 'recruit-100.gif', 1, 'v.referral_count>=100 and v.referral_count <=999'); INSERT INTO public.badge_defs VALUES (12, 'Gold Recruiter', 'Recruited 100 friends to join Drama', 'recruit-100.webp', 1, 'v.referral_count>=100 and v.referral_count <=999');
INSERT INTO public.badge_defs VALUES (11, 'Silver Recruiter', 'Recruited 10 friends to join Drama', 'recruit-10.gif', 1, 'v.referral_count>=10 and v.referral_count <= 99'); INSERT INTO public.badge_defs VALUES (11, 'Silver Recruiter', 'Recruited 10 friends to join Drama', 'recruit-10.webp', 1, 'v.referral_count>=10 and v.referral_count <= 99');
INSERT INTO public.badge_defs VALUES (10, 'Bronze Recruiter', 'Recruited 1 friend to join Drama', 'recruit-1.gif', 1, 'v.referral_count>=1 and v.referral_count<9'); INSERT INTO public.badge_defs VALUES (10, 'Bronze Recruiter', 'Recruited 1 friend to join Drama', 'recruit-1.webp', 1, 'v.referral_count>=1 and v.referral_count<9');
INSERT INTO public.badge_defs VALUES (58, 'Diamond Recruiter', 'Recruited 1000 friends to join Drama', 'recruit-1000.gif', 1, 'v.referral_count >= 1000'); INSERT INTO public.badge_defs VALUES (58, 'Diamond Recruiter', 'Recruited 1000 friends to join Drama', 'recruit-1000.webp', 1, 'v.referral_count >= 1000');
INSERT INTO public.badge_defs VALUES (25, 'Footpig', 'Contributed at least $100/month', 'patron-5.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (25, 'Footpig', 'Contributed at least $100/month', 'patron-5.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (61, 'Lab Rat', 'Helped test features in development', 'labrat.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (61, 'Lab Rat', 'Helped test features in development', 'labrat.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (63, 'Balls', 'I wrote carp on my balls as a sign of submission', 'carpballs.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (63, 'Balls', 'I wrote carp on my balls as a sign of submission', 'carpballs.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (4, 'White Hat', 'Responsibly reported a security issue', 'whitehat.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (4, 'White Hat', 'Responsibly reported a security issue', 'whitehat.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (2, 'Verified Email', 'Verified Email', 'mail.gif', 1, NULL); INSERT INTO public.badge_defs VALUES (2, 'Verified Email', 'Verified Email', 'mail.webp', 1, NULL);
INSERT INTO public.badge_defs VALUES (6, 'Beta User', 'Joined during open beta', 'beta.gif', 4, NULL); INSERT INTO public.badge_defs VALUES (6, 'Beta User', 'Joined during open beta', 'beta.webp', 4, NULL);
INSERT INTO public.badge_defs VALUES (15, 'Idea Maker', 'Had a good idea for Drama which was implemented by the developers', 'idea.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (15, 'Idea Maker', 'Had a good idea for Drama which was implemented by the developers', 'idea.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (3, 'Code Contributor', 'Contributed to Drama source code', 'git.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (3, 'Code Contributor', 'Contributed to Drama source code', 'git.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (1, 'Alpha User', 'Joined during open alpha', 'alpha.gif', 4, NULL); INSERT INTO public.badge_defs VALUES (1, 'Alpha User', 'Joined during open alpha', 'alpha.webp', 4, NULL);
INSERT INTO public.badge_defs VALUES (18, 'Artisan', 'Contributed to Drama artwork', 'art.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (18, 'Artisan', 'Contributed to Drama artwork', 'art.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (27, 'Lolcow', 'Beautiful and valid milk provider', 'lolcow.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (27, 'Lolcow', 'Beautiful and valid milk provider', 'lolcow.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (21, 'Paypig', 'Contributed at least $5/month', 'patron-1.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (21, 'Paypig', 'Contributed at least $5/month', 'patron-1.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (22, 'Renthog', 'Contributed at least $10/month', 'patron-2.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (22, 'Renthog', 'Contributed at least $10/month', 'patron-2.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (23, 'Landchad', 'Contributed at least $20/month', 'patron-3.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (23, 'Landchad', 'Contributed at least $20/month', 'patron-3.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (24, 'Terminally online turboautist', 'Contributed at least $50/month', 'patron-4.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (24, 'Terminally online turboautist', 'Contributed at least $50/month', 'patron-4.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (28, 'Rich Bich', 'Contributed $500', 'patron-8.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (28, 'Rich Bich', 'Contributed $500', 'patron-8.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (7, 'Bug Finder', 'Found a bug', 'sitebreaker.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (7, 'Bug Finder', 'Found a bug', 'sitebreaker.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (60, 'Unironically Retarded', 'Demonstrated a wholesale inability to read the room', 'retarded.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (60, 'Unironically Retarded', 'Demonstrated a wholesale inability to read the room', 'retarded.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (26, 'Agendaposter', 'Forced to use the agendaposter theme', 'agendaposter.gif', 1, NULL); INSERT INTO public.badge_defs VALUES (26, 'Agendaposter', 'Forced to use the agendaposter theme', 'agendaposter.webp', 1, NULL);
INSERT INTO public.badge_defs VALUES (17, 'Marsey Artisan', 'Contributed a Marsey emoji ✨', 'marseybadge-1.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (17, 'Marsey Artisan', 'Contributed a Marsey emoji ✨', 'marseybadge-1.webp', 3, NULL);
INSERT INTO public.badge_defs VALUES (16, 'Marsey Master', 'Contributed 10 (or more!!!!) Marsey emojis ✨', 'marseybadge-2.gif', 3, NULL); INSERT INTO public.badge_defs VALUES (16, 'Marsey Master', 'Contributed 10 (or more!!!!) Marsey emojis ✨', 'marseybadge-2.webp', 3, NULL);
INSERT INTO public.users ( INSERT INTO public.users (
id, username, passhash, created_utc, admin_level, over_18, is_activated, bio, bio_html, login_nonce, is_private, id, username, passhash, created_utc, admin_level, over_18, is_activated, bio, bio_html, login_nonce, is_private,