From 1c8626580123a6e70e7ee8cd8aabbad2300a4cfe Mon Sep 17 00:00:00 2001 From: zaanposni Date: Sat, 26 Oct 2024 18:57:23 +0200 Subject: [PATCH 1/2] added newsince to api and videos page --- src/psaggregator/src/routes/api/+page.svelte | 5 ++ .../src/routes/api/thumbnails/+server.ts | 20 ++++- .../src/routes/api/videos/+server.ts | 20 ++++- .../src/routes/videos/+page.svelte | 86 ++++++++++++++++++- 4 files changed, 126 insertions(+), 5 deletions(-) diff --git a/src/psaggregator/src/routes/api/+page.svelte b/src/psaggregator/src/routes/api/+page.svelte index 0a6b02a..f0503f5 100644 --- a/src/psaggregator/src/routes/api/+page.svelte +++ b/src/psaggregator/src/routes/api/+page.svelte @@ -77,6 +77,8 @@
Videos werden direkt von der pietsmiet.de importiert. + Der ?skip Parameter kann genutzt werden um weitere Einträge zu laden. + Der ?newSince Parameter kann genutzt werden um nur Videos ab einem bestimmten Datum zu laden (UNIX Timestamp).
GET /video/[id]
@@ -109,6 +111,8 @@
Die Thumbnails bietet dir ähnlich wie /videos eine Übersicht aller Videos. Jedoch in kompakter Form. Dieser Endpunkt wird für die Seite "Videos" genutzt. + Der ?skip Parameter kann genutzt werden um weitere Einträge zu laden. + Der ?newSince Parameter kann genutzt werden um nur Videos ab einem bestimmten Datum zu laden (UNIX Timestamp).
GET /reddit
@@ -132,6 +136,7 @@
  • Twitter Posts der ersten Reihe
  • Über den ?type Parameter kannst du einen Filter auf die Importquelle anwenden. + Der ?skip Parameter kann genutzt werden um weitere Einträge zu laden. Zukünftig sind hier noch Importe aus anderen Social Media geplant.
    Ausblick diff --git a/src/psaggregator/src/routes/api/thumbnails/+server.ts b/src/psaggregator/src/routes/api/thumbnails/+server.ts index 26ec267..41187e4 100644 --- a/src/psaggregator/src/routes/api/thumbnails/+server.ts +++ b/src/psaggregator/src/routes/api/thumbnails/+server.ts @@ -1,5 +1,6 @@ import { json } from "@sveltejs/kit"; import prisma from "$lib/prisma"; +import moment from "moment"; export async function GET({ url }) { let skip = 0; @@ -12,6 +13,20 @@ export async function GET({ url }) { } } + let newSince = undefined; + if (url.searchParams.has("newSince")) { + const value = url.searchParams.get("newSince"); + if (value) { + try { + newSince = moment.unix(parseInt(value)); + } finally { + if (!newSince || !newSince.isValid()) { + newSince = undefined; + } + } + } + } + const data = await prisma.contentPiece.findMany({ select: { id: true, @@ -20,7 +35,7 @@ export async function GET({ url }) { secondaryHref: true, imageUri: true, startDate: true, - duration: true, + duration: true }, where: { type: { @@ -33,7 +48,8 @@ export async function GET({ url }) { not: null }, startDate: { - not: null + not: null, + gt: newSince ? newSince.toDate() : undefined } }, orderBy: { diff --git a/src/psaggregator/src/routes/api/videos/+server.ts b/src/psaggregator/src/routes/api/videos/+server.ts index 84384ad..db917d5 100644 --- a/src/psaggregator/src/routes/api/videos/+server.ts +++ b/src/psaggregator/src/routes/api/videos/+server.ts @@ -1,5 +1,6 @@ import { json } from "@sveltejs/kit"; import prisma from "$lib/prisma"; +import moment from "moment"; export async function GET({ url }) { let skip = 0; @@ -12,10 +13,27 @@ export async function GET({ url }) { } } + let newSince = undefined; + if (url.searchParams.has("newSince")) { + const value = url.searchParams.get("newSince"); + if (value) { + try { + newSince = moment.unix(parseInt(value)); + } finally { + if (!newSince || !newSince.isValid()) { + newSince = undefined; + } + } + } + } + const data = await prisma.contentPiece.findMany({ where: { type: "PSVideo", - importedFrom: "PietSmietDE" + importedFrom: "PietSmietDE", + startDate: { + gt: newSince ? newSince.toDate() : undefined + } }, orderBy: { startDate: "desc" diff --git a/src/psaggregator/src/routes/videos/+page.svelte b/src/psaggregator/src/routes/videos/+page.svelte index 8163394..0d145c4 100644 --- a/src/psaggregator/src/routes/videos/+page.svelte +++ b/src/psaggregator/src/routes/videos/+page.svelte @@ -1,5 +1,5 @@