1
0
mirror of https://git.boykissers.com/pawkey/pawkey-sk.git synced 2025-12-20 04:04:16 +00:00

feat: watermarking and remove metadata generation

This commit is contained in:
Leafus
2025-10-12 08:01:56 +02:00
parent bed2132cc5
commit 2446edee11
10 changed files with 71 additions and 107 deletions

View File

@@ -7,15 +7,3 @@ block vars
block title block title
= `${title} | ${instanceName}` = `${title} | ${instanceName}`
block desc
meta(name='description' content=description)
block og
meta(property='og:type' content='article')
meta(property='og:title' content= title)
meta(property='og:description' content= description)
meta(property='og:url' content= url)
if announcement.imageUrl
meta(property='og:image' content=announcement.imageUrl)
meta(property='twitter:card' content='summary_large_image')

View File

@@ -6,14 +6,3 @@ block vars
block title block title
= `${title} | ${instanceName}` = `${title} | ${instanceName}`
block desc
meta(name='description' content= channel.description)
block og
meta(property='og:type' content='article')
meta(property='og:title' content= title)
meta(property='og:description' content= channel.description)
meta(property='og:url' content= url)
meta(property='og:image' content= channel.bannerUrl)
meta(property='twitter:card' content='summary')

View File

@@ -8,17 +8,6 @@ block vars
block title block title
= `${title} | ${instanceName}` = `${title} | ${instanceName}`
block desc
meta(name='description' content= clip.description)
block og
meta(property='og:type' content='article')
meta(property='og:title' content= title)
meta(property='og:description' content= clip.description)
meta(property='og:url' content= url)
meta(property='og:image' content= avatarUrl)
meta(property='twitter:card' content='summary')
block meta block meta
if profile.noCrawle if profile.noCrawle
meta(name='robots' content='noindex') meta(name='robots' content='noindex')

View File

@@ -8,17 +8,6 @@ block vars
block title block title
= `${title} | ${instanceName}` = `${title} | ${instanceName}`
block desc
meta(name='description' content= flash.summary)
block og
meta(property='og:type' content='article')
meta(property='og:title' content= title)
meta(property='og:description' content= flash.summary)
meta(property='og:url' content= url)
meta(property='og:image' content= avatarUrl)
meta(property='twitter:card' content='summary')
block meta block meta
if profile.noCrawle if profile.noCrawle
meta(name='robots' content='noindex') meta(name='robots' content='noindex')

View File

@@ -8,21 +8,6 @@ block vars
block title block title
= `${title} | ${instanceName}` = `${title} | ${instanceName}`
block desc
meta(name='description' content= post.description)
block og
meta(property='og:type' content='article')
meta(property='og:title' content= title)
meta(property='og:description' content= post.description)
meta(property='og:url' content= url)
if post.isSensitive
meta(property='og:image' content= avatarUrl)
meta(property='twitter:card' content='summary')
else
meta(property='og:image' content= post.files[0].thumbnailUrl)
meta(property='twitter:card' content='summary_large_image')
block meta block meta
if user.host || profile.noCrawle if user.host || profile.noCrawle
meta(name='robots' content='noindex') meta(name='robots' content='noindex')

View File

@@ -11,31 +11,6 @@ block vars
block title block title
= `${title} | ${instanceName}` = `${title} | ${instanceName}`
block desc
meta(name='description' content= summary)
block og
meta(property='og:type' content='article')
meta(property='og:title' content= title)
meta(property='og:description' content= summary)
meta(property='og:url' content= url)
if videos.length
each video in videos
meta(property='og:video:url' content= video.url)
meta(property='og:video:secure_url' content= video.url)
meta(property='og:video:type' content= video.type)
meta(property='og:image' content= video.thumbnailUrl)
// FIXME: add width and height
// FIXME: add embed player for Twitter
if images.length
meta(property='twitter:card' content='summary_large_image')
each image in images
meta(property='og:image' content= image.url)
else if !videos.length
meta(property='twitter:card' content='summary')
meta(property='og:image' content= avatarUrl)
block meta block meta
if user.host || isRenote || profile.noCrawle if user.host || isRenote || profile.noCrawle
meta(name='robots' content='noindex') meta(name='robots' content='noindex')

View File

@@ -8,17 +8,6 @@ block vars
block title block title
= `${title} | ${instanceName}` = `${title} | ${instanceName}`
block desc
meta(name='description' content= page.summary)
block og
meta(property='og:type' content='article')
meta(property='og:title' content= title)
meta(property='og:description' content= page.summary)
meta(property='og:url' content= url)
meta(property='og:image' content= page.eyeCatchingImage ? page.eyeCatchingImage.thumbnailUrl : avatarUrl)
meta(property='twitter:card' content= page.eyeCatchingImage ? 'summary_large_image' : 'summary')
block meta block meta
if profile.noCrawle if profile.noCrawle
meta(name='robots' content='noindex') meta(name='robots' content='noindex')

View File

@@ -7,17 +7,6 @@ block vars
block title block title
= `${title} | ${instanceName}` = `${title} | ${instanceName}`
block desc
meta(name='description' content= profile.description)
block og
meta(property='og:type' content='blog')
meta(property='og:title' content= title)
meta(property='og:description' content= profile.description)
meta(property='og:url' content= url)
meta(property='og:image' content= avatarUrl)
meta(property='twitter:card' content='summary')
block meta block meta
if user.host || profile.noCrawle if user.host || profile.noCrawle
meta(name='robots' content='noindex') meta(name='robots' content='noindex')

View File

@@ -0,0 +1,69 @@
<script setup lang="ts">
import { $i } from "@/i.js";
import { computed, onMounted } from 'vue';
const generateRandomClass = () => {
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
let result = '';
for (let i = 0; i < 8; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
return result;
};
const gridClass = computed(() => generateRandomClass());
const itemClass = computed(() => generateRandomClass());
onMounted(() => {
const style = document.createElement('style');
style.textContent = `
.${gridClass.value} {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
grid-template-rows: repeat(auto-fill, minmax(20px, 1fr));
gap: 20px;
padding: 20px;
pointer-events: none;
z-index: 999999999;
overflow: hidden;
}
.${itemClass.value} {
display: flex;
align-items: center;
justify-content: center;
color: color-mix(
in srgb,
var(--MI_THEME-fg) 0.4%,
transparent
) !important;
font-size: 12px;
font-family: monospace;
word-break: break-all;
text-align: center;
user-select: none;
}
`;
document.head.appendChild(style);
});
</script>
<template>
<div v-if="$i" :class="gridClass">
<div v-for="n in 600" :key="n" :class="itemClass">
{{ $i.id }}
</div>
</div>
<div v-else :class="gridClass">
<div v-for="n in 600" :key="n" :class="itemClass">
not signed in
</div>
</div>
</template>

View File

@@ -4,6 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
--> -->
<template> <template>
<userIdWatermark/>
<Transition <Transition
:enterActiveClass="prefer.s.animation ? $style.transition_menuDrawerBg_enterActive : ''" :enterActiveClass="prefer.s.animation ? $style.transition_menuDrawerBg_enterActive : ''"
:leaveActiveClass="prefer.s.animation ? $style.transition_menuDrawerBg_leaveActive : ''" :leaveActiveClass="prefer.s.animation ? $style.transition_menuDrawerBg_leaveActive : ''"
@@ -115,6 +116,7 @@ import { prefer } from '@/preferences.js';
import { globalEvents } from '@/events.js'; import { globalEvents } from '@/events.js';
import XDrawerMenu from '@/ui/_common_/navbar-for-mobile.vue'; import XDrawerMenu from '@/ui/_common_/navbar-for-mobile.vue';
import SkTransitionGroup from '@/components/SkTransitionGroup.vue'; import SkTransitionGroup from '@/components/SkTransitionGroup.vue';
import userIdWatermark from '@/components/global/userIdWatermark.vue';
const XStreamIndicator = defineAsyncComponent(() => import('./stream-indicator.vue')); const XStreamIndicator = defineAsyncComponent(() => import('./stream-indicator.vue'));
const XUpload = defineAsyncComponent(() => import('./upload.vue')); const XUpload = defineAsyncComponent(() => import('./upload.vue'));