From 69310e8229d65f0f69fefd43227ccc7029a0f8b2 Mon Sep 17 00:00:00 2001
From: CJ_Clippy
Date: Fri, 14 Nov 2025 18:18:07 -0800
Subject: [PATCH] fix rss
---
services/pocketbase/package.json | 2 +-
.../pb_hooks/pages/(site)/+layout.ejs | 4 +-
.../pages/(site)/vods/feed.xml/+load.js | 26 ---------
.../pages/(site)/vods/feed.xml/index.ejs | 50 ----------------
.../pb_hooks/pages/vods/feed.json/+load.js | 25 --------
.../pb_hooks/pages/vods/feed.xml/+load.js | 28 ---------
.../pb_hooks/pages/vods/feed.xml/index.ejs | 57 +++++++++----------
.../pb_hooks/pages/vods/rss.xml/+load.js | 28 ---------
.../pb_hooks/pages/vods/rss.xml/index.ejs | 15 +++--
9 files changed, 37 insertions(+), 198 deletions(-)
delete mode 100644 services/pocketbase/pb_hooks/pages/(site)/vods/feed.xml/+load.js
delete mode 100644 services/pocketbase/pb_hooks/pages/(site)/vods/feed.xml/index.ejs
delete mode 100644 services/pocketbase/pb_hooks/pages/vods/feed.json/+load.js
delete mode 100644 services/pocketbase/pb_hooks/pages/vods/feed.xml/+load.js
delete mode 100644 services/pocketbase/pb_hooks/pages/vods/rss.xml/+load.js
diff --git a/services/pocketbase/package.json b/services/pocketbase/package.json
index 56f90c79..fe16747e 100644
--- a/services/pocketbase/package.json
+++ b/services/pocketbase/package.json
@@ -1,6 +1,6 @@
{
"name": "futureporn",
- "version": "3.3.4",
+ "version": "3.4.0",
"private": true,
"description": "Dedication to the preservation of lewdtuber history",
"license": "Unlicense",
diff --git a/services/pocketbase/pb_hooks/pages/(site)/+layout.ejs b/services/pocketbase/pb_hooks/pages/(site)/+layout.ejs
index 1f0e799b..1bcfb115 100644
--- a/services/pocketbase/pb_hooks/pages/(site)/+layout.ejs
+++ b/services/pocketbase/pb_hooks/pages/(site)/+layout.ejs
@@ -75,7 +75,9 @@
- A lot of things are broken right now and may not work. Please check back again soon.
+
diff --git a/services/pocketbase/pb_hooks/pages/(site)/vods/feed.xml/+load.js b/services/pocketbase/pb_hooks/pages/(site)/vods/feed.xml/+load.js
deleted file mode 100644
index df7ab191..00000000
--- a/services/pocketbase/pb_hooks/pages/(site)/vods/feed.xml/+load.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// +load.js
-
-/** @type {import('pocketpages').PageDataLoaderFunc} */
-module.exports = function (api) {
- const { params, response } = api;
- try {
- const vods = $app.findRecordsByFilter('vods', null, '-streamDate');
- $app.expandRecords(vods, ["vtubers"], null);
- // vods.expandedAll("vtubers");
- return { vods };
-
- } catch (e) {
- console.error('error!', e.message);
-
- if (e.message.match(/no rows/)) {
- console.log('we are sending 404')
- return response.html(404, 'VODs not found')
-
- } else {
- console.log('we are sending error 500')
- return response.html(500, 'Unknown internal error while fetching vods')
-
- }
- }
-};
-
diff --git a/services/pocketbase/pb_hooks/pages/(site)/vods/feed.xml/index.ejs b/services/pocketbase/pb_hooks/pages/(site)/vods/feed.xml/index.ejs
deleted file mode 100644
index e8f62531..00000000
--- a/services/pocketbase/pb_hooks/pages/(site)/vods/feed.xml/index.ejs
+++ /dev/null
@@ -1,50 +0,0 @@
-<%#
-index.ejs — Atom Feed Generator (Atom 1.0)
-Expects: data.vods = [{ id, title, summary, streamDate }]
-%>
-
-<%
-const siteBase = "https://futureporn.net";
-const feedSelf = `${siteBase}/vods/feed.xml`;
-const updated = new Date().toISOString();
-response.header('Content-Type', 'application/atom+xml')
-%>
-
-
- <%= siteBase %>
- Futureporn.net
- <%= updated %>
-
-
-
- CJ_Clippy
- cj@futureporn.net
- <%= siteBase %>
-
-
-
-
-
- <%= meta('description') %>
- <%= siteBase %>/images/futureporn-icon.png
- <%= siteBase %>/favicon.ico
-
- <% for (const vod of data.vods) { %>
- <%
- const url = `${siteBase}/vods/${vod.id}`;
- %>
-
-
- ]]>
-
- <%= url %>
-
- <%= new Date(vod.updated) %>
- <% if (vod.notes) { %>
-
- ]]>
-
- <% } %>
-
- <% } %>
-
\ No newline at end of file
diff --git a/services/pocketbase/pb_hooks/pages/vods/feed.json/+load.js b/services/pocketbase/pb_hooks/pages/vods/feed.json/+load.js
deleted file mode 100644
index e9bf5844..00000000
--- a/services/pocketbase/pb_hooks/pages/vods/feed.json/+load.js
+++ /dev/null
@@ -1,25 +0,0 @@
-// +load.js
-
-/** @type {import('pocketpages').PageDataLoaderFunc} */
-module.exports = function (api) {
- const { params, response } = api;
- try {
- const vods = $app.findRecordsByFilter('vods', null, '-streamDate', 25);
- $app.expandRecords(vods, ["vtubers"], null);
- return { vods };
-
- } catch (e) {
- console.error('error!', e.message);
-
- if (e.message.match(/no rows/)) {
- console.log('we are sending 404')
- return response.html(404, 'VODs not found')
-
- } else {
- console.log('we are sending error 500')
- return response.html(500, 'Unknown internal error while fetching vods')
-
- }
- }
-};
-
diff --git a/services/pocketbase/pb_hooks/pages/vods/feed.xml/+load.js b/services/pocketbase/pb_hooks/pages/vods/feed.xml/+load.js
deleted file mode 100644
index bb00f2d2..00000000
--- a/services/pocketbase/pb_hooks/pages/vods/feed.xml/+load.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// +load.js
-
-/** @type {import('pocketpages').PageDataLoaderFunc} */
-module.exports = function (api) {
- const { params, response } = api;
- try {
- const vods = $app.findRecordsByFilter('vods', null, '-streamDate', 99);
- $app.expandRecords(vods, ["vtubers"], null);
-
-
- console.log(JSON.stringify(vods, null, 2))
- return { vods };
-
- } catch (e) {
- console.error('error!', e.message);
-
- if (e.message.match(/no rows/)) {
- console.log('we are sending 404')
- return response.html(404, 'VODs not found')
-
- } else {
- console.log('we are sending error 500')
- return response.html(500, 'Unknown internal error while fetching vods')
-
- }
- }
-};
-
diff --git a/services/pocketbase/pb_hooks/pages/vods/feed.xml/index.ejs b/services/pocketbase/pb_hooks/pages/vods/feed.xml/index.ejs
index cad16f2e..7f1077c6 100644
--- a/services/pocketbase/pb_hooks/pages/vods/feed.xml/index.ejs
+++ b/services/pocketbase/pb_hooks/pages/vods/feed.xml/index.ejs
@@ -1,58 +1,53 @@
<%#
index.ejs — ATOM Feed Generator
-Expects: data.vods = [{ id, title, notes, thumbnail, streamDate }]
+Expects: data.vods = [{ id, title, notes, thumbnail, streamDate, expand }]
%>
-<%=
+<%
response.header("Content-Type", "application/atom+xml");
// Build Atom XML as a string
let atom = `
- Futureporn.net
-
-${new Date().toISOString()}
-<%= env('ORIGIN') %>
-
- CJ_Clippy
- cj@futureporn.net
-`;
+ Futureporn.net VODs
+
+ ${new Date().toISOString()}
+ ${env('ORIGIN')}
+
+ CJ_Clippy
+ cj@futureporn.net
+ `;
for (const vod of data.vods) {
-const url = `${env('ORIGIN')}/vods/${vod.id}`;
-const entryTitle = ((vod?.get('expand')?.vtubers?.map(vt => vt.get('displayName')) || [])
-.join(', ') || vod.get('streamDate'));
+ const url = `${env('ORIGIN')}/vods/${vod.get('id')}`;
+ const entryTitle = ((vod?.expand?.vtubers?.map(vt => vt.displayName) || []).join(', ')
+ || vod.get('streamDate'));
-atom += `
-
-
-
-
-
- ${url}
- ${vod.get('streamDate')}`;
+ atom += `
+
+ vt.get('displayName')) || []).join(', ')
+ || vod.get('streamDate'))}]]>
+
+ ${url}
+ ${vod.get('updated')}`;
if (vod.get('notes')) {
- atom += `
-
-
- `;
+ atom += `
+ `;
}
if (vod.get('thumbnail')) {
- atom += `
-
- ]]>
- `;
+ atom += `
+ ]]>`;
}
atom += `
-`;
+ `;
}
atom += `
`;
// Send the Atom feed
-response.html(200, 'HELLO
');
+response.html(200, atom);
%>
\ No newline at end of file
diff --git a/services/pocketbase/pb_hooks/pages/vods/rss.xml/+load.js b/services/pocketbase/pb_hooks/pages/vods/rss.xml/+load.js
deleted file mode 100644
index bb00f2d2..00000000
--- a/services/pocketbase/pb_hooks/pages/vods/rss.xml/+load.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// +load.js
-
-/** @type {import('pocketpages').PageDataLoaderFunc} */
-module.exports = function (api) {
- const { params, response } = api;
- try {
- const vods = $app.findRecordsByFilter('vods', null, '-streamDate', 99);
- $app.expandRecords(vods, ["vtubers"], null);
-
-
- console.log(JSON.stringify(vods, null, 2))
- return { vods };
-
- } catch (e) {
- console.error('error!', e.message);
-
- if (e.message.match(/no rows/)) {
- console.log('we are sending 404')
- return response.html(404, 'VODs not found')
-
- } else {
- console.log('we are sending error 500')
- return response.html(500, 'Unknown internal error while fetching vods')
-
- }
- }
-};
-
diff --git a/services/pocketbase/pb_hooks/pages/vods/rss.xml/index.ejs b/services/pocketbase/pb_hooks/pages/vods/rss.xml/index.ejs
index 6481c0a1..1f1bfa20 100644
--- a/services/pocketbase/pb_hooks/pages/vods/rss.xml/index.ejs
+++ b/services/pocketbase/pb_hooks/pages/vods/rss.xml/index.ejs
@@ -10,12 +10,12 @@ response.header("Content-Type", "application/rss+xml")
let rss = `
- Futureporn.net
+ Futureporn.net VODs
https://futureporn.net
Dedication to the preservaton of lewdtuber history
${new Date().toUTCString()}
https://validator.w3.org/feed/docs/rss2.html
-
+ pocketpages
en
Futureporn.net
@@ -34,14 +34,13 @@ for (const vod of data.vods) {
}]]>
${url}
${url}
- ${vod.get('streamDate')}`;
- if (vod.notes) {
+ ${new Date(vod.get('streamDate')).toUTCString()}`;
+ if (vod.get('notes')) {
rss += `
- `;
+ `;
}
- if (vod.thumbnail) {
- rss += `
- `;
+ if (vod.get('thumbnail')) {
+ rss += `${env('ORIGIN')}/api/files/vods/${vod.get('id')}/${vod.get('thumbnail')}`
}
rss += `
`;