Compare commits

...

12 Commits

Author SHA1 Message Date
9c0dced205
cleanup 2022-03-24 02:22:50 +02:00
575280ec87
BANGER 2022-03-24 01:41:11 +02:00
4eb61f6f8c
pls work pls 2022-03-24 01:34:36 +02:00
6907bd6823
does the order matter? 2022-03-24 01:30:30 +02:00
8384a57b6a
PLS 2022-03-24 01:28:57 +02:00
f3f2dfd381
ölskahjgölkjh 2022-03-24 01:11:02 +02:00
56918b9358
meta tags pls 2022-03-24 01:08:31 +02:00
379c178f59
lol woops 2022-03-23 23:09:17 +02:00
e7fa9c027d
meta tags pls work 2022-03-23 23:05:15 +02:00
f3631e59b2
hnnng 2022-03-23 22:34:21 +02:00
889121e924
pls 2022-03-23 22:30:35 +02:00
8bb49a0fac
embeds maybe 2022-03-23 22:28:29 +02:00
4 changed files with 54 additions and 8 deletions

View File

@ -5,10 +5,10 @@
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#ffafff" /> <meta name="theme-color" content="#ffafff" />
<meta <!-- <meta
name="description" name="description"
content="Navy's homepage 😎" content="Navy's homepage 😎"
/> /> -->
<!-- <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> --> <!-- <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> -->
<!-- <!--
manifest.json provides metadata used when your web app is installed on a manifest.json provides metadata used when your web app is installed on a
@ -24,7 +24,20 @@
work correctly both with client-side routing and a non-root public URL. work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`. Learn how to configure a non-root public URL by running `npm run build`.
--> -->
<meta property='og:type' content='video.other' />
<meta property='og:url' content='{{META_url}}' />
<!-- <meta property='og:image' content={{META_thumbnail}} /> -->
<meta property='og:video' content='{{META_url}}' />
<meta property='og:video:url' content={{META_srcUrl}} />
<meta property='og:video:secure_url' content={{META_srcUrl}} />
<meta property='og:video:type' content='video/mp4' />
<meta property="og:video:width" content="1280">
<meta property="og:video:height" content="720">
<title>Corgi Corner</title> <title>Corgi Corner</title>
<meta name="description" content="{{META_description}}" />
<meta name='author' content='{{META_author}}' />
</head> </head>
<body> <body>
<noscript>You need to enable JavaScript to run this app.</noscript> <noscript>You need to enable JavaScript to run this app.</noscript>

View File

@ -34,6 +34,7 @@ const ClipEntry = ({ name, filename, uploader, thumbnail, duration, clickHandler
const VideoPlayer = ({ refF, video }) => { const VideoPlayer = ({ refF, video }) => {
// eslint-disable-next-line no-unused-vars
const { filename, name, thumbnail, uploader } = video; const { filename, name, thumbnail, uploader } = video;
const source = `/api/clips/${filename}`; const source = `/api/clips/${filename}`;
@ -41,13 +42,13 @@ const VideoPlayer = ({ refF, video }) => {
<div ref={refF} className='video-popup shadow'> <div ref={refF} className='video-popup shadow'>
<Helmet> <Helmet>
<title>{name}</title> {/* <title>{name}</title>
<meta name='author' content={uploader.name} /> <meta name='author' content={uploader.name} />
<meta property='og:url' content={window.location.href} /> <meta property='og:url' content={window.location.href} />
<meta property='og:image' content={`${window.location.origin}${thumbnailBase}${thumbnail}`} /> <meta property='og:image' content={`${window.location.origin}${thumbnailBase}${thumbnail}`} />
<meta property='og:video:type' content='text/html' /> <meta property='og:video:type' content='text/html' />
<meta property='og:video:url' content={`${window.location.origin}${source}`} /> <meta property='og:video:url' content={`${window.location.origin}${source}`} />
<meta property='og:type' content='video.other' /> <meta property='og:type' content='video.other' /> */}
</Helmet> </Helmet>
<div> <div>
@ -104,7 +105,7 @@ const Media = () => {
<div className='media-page'> <div className='media-page'>
<Helmet> <Helmet>
<title>V i d e o s</title> {/* <title>V i d e o s</title> */}
<meta <meta
name="description" name="description"
content="Page where I upload clips n stuff" content="Page where I upload clips n stuff"

View File

@ -156,6 +156,13 @@ class ClipIndex extends EventEmitter {
return Object.values(this.index); return Object.values(this.index);
} }
getByTitle(title) {
title = title.toLowerCase();
for (const entry of Object.values(this.index))
if (entry.name.toLowerCase() === title)
return entry;
}
} }
module.exports = ClipIndex; module.exports = ClipIndex;

View File

@ -1,6 +1,7 @@
const { Endpoint } = require('../interfaces'); const { Endpoint } = require('../interfaces');
const path = require('path'); const path = require('path');
const express = require('express'); const express = require('express');
const fs = require('fs');
class Home extends Endpoint { class Home extends Endpoint {
@ -21,20 +22,44 @@ class Home extends Endpoint {
const manifest = path.resolve(this.client.baseDirectory, '../client/build/manifest.json'); const manifest = path.resolve(this.client.baseDirectory, '../client/build/manifest.json');
const favicon = path.resolve(this.client.baseDirectory, '../client/build/favicon.ico'); const favicon = path.resolve(this.client.baseDirectory, '../client/build/favicon.ico');
const robots = path.resolve(this.client.baseDirectory, '../client/build/robots.txt'); const robots = path.resolve(this.client.baseDirectory, '../client/build/robots.txt');
this.indexPath = path.resolve(this.client.baseDirectory, '../client/build/index.html');
this.client.app.use('/static', express.static(assets)); this.client.app.use('/static', express.static(assets));
this.client.app.use('/manifest.json', express.static(manifest)); this.client.app.use('/manifest.json', express.static(manifest));
this.client.app.use('/favicon.ico', express.static(favicon)); this.client.app.use('/favicon.ico', express.static(favicon));
this.client.app.use('/robots.txt', express.static(robots)); this.client.app.use('/robots.txt', express.static(robots));
this.index = fs.readFileSync(this.indexPath, { encoding: 'utf-8' });
this.init(); this.init();
} }
async get(req, res) { async get(req, res) {
res.set('Cross-Origin-Resource-Policy', 'cross-origin'); const { path } = req;
const home = path.resolve(this.client.baseDirectory, '../client/build/index.html'); if ((/\/media\/.+/u).test(path)) {
res.sendFile(home);
const title = decodeURI(path.replace('/media/', ''));
const clip = this.client.clipIndex.getByTitle(title);
const baseUrl = `https://${this.client.domain}`;
const clientUrl = `${baseUrl}${path}`;
const thumbnailUrl = `${baseUrl}/api/thumbnails/${clip.thumbnail}`;
const clipUrl = `${baseUrl}/api/clips/${clip.filename}`;
const html = this.index
// .replace(`<title>Corgi Corner</title>`, clip.name)
.replace(/\{\{META_description\}\}/ug, 'A website I guess')
.replace(/\{\{META_author\}\}/ug, clip.uploader.tag)
.replace(/\{\{META_url\}\}/ug, clientUrl)
.replace(/\{\{META_thumbnail\}\}/ug, thumbnailUrl)
.replace(/\{\{META_srcUrl\}\}/ug, clipUrl);
return res.send(html);
}
// res.set('Cross-Origin-Resource-Policy', 'cross-origin');
//const home = path.resolve(this.client.baseDirectory, '../client/build/index.html');
res.sendFile(this.indexPath);
} }