Add dinosaurwet daily and weekly
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import { Controller, Get, Res } from '@nestjs/common';
|
import { Controller, Get, Res } from '@nestjs/common';
|
||||||
import { Response } from 'express';
|
import { Response } from 'express';
|
||||||
import { identity } from 'ramda';
|
import { identity, prop } from 'ramda';
|
||||||
import * as xml from 'xml';
|
import * as xml from 'xml';
|
||||||
|
|
||||||
const episodeFiles: [number, string][] = [
|
const episodeFiles: [number, string][] = [
|
||||||
@@ -54,7 +54,7 @@ const episodes: Episode[] = episodeFiles.map((file, i) => {
|
|||||||
|
|
||||||
const buildFeeds = (
|
const buildFeeds = (
|
||||||
episodes: Episode[],
|
episodes: Episode[],
|
||||||
dateFn: (date: Date) => Date = identity,
|
pubDateFn: (index: number) => Date = () => startDate,
|
||||||
) => {
|
) => {
|
||||||
const feedObject = {
|
const feedObject = {
|
||||||
rss: [
|
rss: [
|
||||||
@@ -86,11 +86,16 @@ const buildFeeds = (
|
|||||||
'A recreation of Dinosaur Wet as an RSS feed for listeners-with-licenses enjoyment.',
|
'A recreation of Dinosaur Wet as an RSS feed for listeners-with-licenses enjoyment.',
|
||||||
},
|
},
|
||||||
{ language: 'en-US' },
|
{ language: 'en-US' },
|
||||||
...episodes.map(({ title, url, length }) => ({
|
...episodes
|
||||||
|
.filter(
|
||||||
|
(episode: Episode, index: number) =>
|
||||||
|
pubDateFn(index) <= new Date(),
|
||||||
|
)
|
||||||
|
.map(({ title, url, length, fakeReleaseDate }, index) => ({
|
||||||
item: [
|
item: [
|
||||||
{ title },
|
{ title },
|
||||||
{ guid: url },
|
{ guid: url },
|
||||||
{ pubDate: startDate.toUTCString() },
|
{ pubDate: pubDateFn(index).toUTCString() },
|
||||||
{
|
{
|
||||||
enclosure: [
|
enclosure: [
|
||||||
{
|
{
|
||||||
@@ -121,4 +126,26 @@ export class DinosaurwetController {
|
|||||||
const feed = buildFeeds(episodes);
|
const feed = buildFeeds(episodes);
|
||||||
return response.send(feed);
|
return response.send(feed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Get('daily')
|
||||||
|
getDaily(@Res() response: Response) {
|
||||||
|
response.header('Content-Type', 'application/xml');
|
||||||
|
const feed = buildFeeds(
|
||||||
|
episodes,
|
||||||
|
(index: number) =>
|
||||||
|
new Date(new Date(startDate).setDate(startDate.getDate() + index)),
|
||||||
|
);
|
||||||
|
return response.send(feed);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Get('weekly')
|
||||||
|
getWeekly(@Res() response: Response) {
|
||||||
|
response.header('Content-Type', 'application/xml');
|
||||||
|
const feed = buildFeeds(
|
||||||
|
episodes,
|
||||||
|
(index: number) =>
|
||||||
|
new Date(new Date(startDate).setDate(startDate.getDate() + index * 7)),
|
||||||
|
);
|
||||||
|
return response.send(feed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user