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.
+
+
Hello World
+
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}`; - %> - - - <![CDATA[ <%= vod.title %> ]]> - - <%= 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 += ` - - - <![CDATA[${entryTitle}]]> - - - ${url} - ${vod.get('streamDate')}`; + atom += ` + + <![CDATA[${((vod?.get('expand')?.vtubers?.map(vt => 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 += ` `;