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:
@@ -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')
|
|
||||||
|
|||||||
@@ -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')
|
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
69
packages/frontend/src/components/global/userIdWatermark.vue
Normal file
69
packages/frontend/src/components/global/userIdWatermark.vue
Normal 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>
|
||||||
|
|
||||||
|
|
||||||
@@ -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'));
|
||||||
|
|||||||
Reference in New Issue
Block a user