matrix-art

An image gallery for Matrix
git clone git://archive.git.mtrnord.blog/MTRNord/matrix-art.git
Log | Files | Refs | README | LICENSE

commit 33774f97c92a5d26e21c6f59518ced7b561d7fa4
parent d68bc192446d346e74209dc6d64107324de98a6c
Author: MTRNord <mtrnord1@gmail.com>
Date:   Fri, 14 Jan 2022 00:28:39 +0100

Add image metadata to images according to https://developers.google.com/search/docs/advanced/structured-data/image-license-metadata#json-ld

Diffstat:
Mpages/post/[id].tsx | 22++++++++++++++++++++++
1 file changed, 22 insertions(+), 0 deletions(-)

diff --git a/pages/post/[id].tsx b/pages/post/[id].tsx @@ -237,6 +237,13 @@ class Post extends PureComponent<Props, State> { if (!url || !thumbnail_url) { return <></>; } + const metadata = { + "@context": "https://schema.org/", + "@type": "ImageObject", + contentUrl: url, + // TODO get this from the event itself + license: "https://creativecommons.org/licenses/by-nc-nd/4.0/" + }; return ( <> <Head> @@ -246,6 +253,10 @@ class Post extends PureComponent<Props, State> { <meta property="og:image:width" content={imageEvent.content["m.image"].width.toString()} key="og-image-width" /> <meta property="og:image:height" content={imageEvent.content["m.image"].height.toString()} key="og-image-height" /> <meta name="twitter:image" content={url} key="og-twitter-image" /> + <script type="application/ld+json"> + {JSON.stringify(metadata)} + </script> + </Head> <div className="flex justify-center p-10 bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]"> <LightGallery @@ -264,12 +275,20 @@ class Post extends PureComponent<Props, State> { } renderImageGalleryEvent(imageEvent: ImageGalleryEvent, caption: string) { + const metadata: { "@context": string; "@type": string; contentUrl: string; license: string; }[] = []; const images = imageEvent.content['m.image_gallery'].map(image => { const url = this.context.client?.downloadLink(image["m.file"].url); const thumbnail_url = this.context.client?.downloadLink(image['m.thumbnail'][0].url); if (!url || !thumbnail_url) { return <></>; } + metadata.push({ + "@context": "https://schema.org/", + "@type": "ImageObject", + contentUrl: url, + // TODO get this from the event itself + license: "https://creativecommons.org/licenses/by-nc-nd/4.0/" + }); return ( <a key={url} href={url} title={caption} data-src={url}> <img alt={caption} title={caption} src={thumbnail_url} /> @@ -285,6 +304,9 @@ class Post extends PureComponent<Props, State> { <meta property="og:image:width" content={imageEvent.content["m.image_gallery"][0]["m.image"].width.toString()} key="og-image-width" /> <meta property="og:image:height" content={imageEvent.content["m.image_gallery"][0]["m.image"].height.toString()} key="og-image-height" /> <meta name="twitter:image" content={imageEvent.content["m.image_gallery"][0]["m.file"].url} key="og-twitter-image" /> + <script type="application/ld+json"> + {JSON.stringify(metadata)} + </script> </Head> <div className="flex justify-center p-10 bg-[#fefefe]/[.95] dark:bg-[#14181E]/[.95]"> <LightGallery