coryd.dev/config/collections/index.js

46 lines
1.3 KiB
JavaScript

import ics from 'ics';
export const albumReleasesCalendar = (collection) => {
const collectionData = collection.getAll()[0];
const { data } = collectionData;
const {
albumReleases: { all },
globals: { url }
} = data;
if (!all || all.length === 0) return '';
const events = all
.map((album) => {
const date = new Date(album.release_date);
if (isNaN(date.getTime())) return null;
const albumUrl = album.url?.includes('http') ? album.url : `${url}${album.url}`;
const artistUrl = album.artist.url?.includes('http')
? album.artust.url
: `${url}${album.artist.url}`;
return {
start: [date.getFullYear(), date.getMonth() + 1, date.getDate()],
startInputType: 'local',
startOutputType: 'local',
title: `Release: ${album.artist.name} - ${album.title}`,
description: `Check out this new album release: ${albumUrl}. Read more about ${album.artist.name} at ${artistUrl}`,
url: albumUrl,
uid: `${album.release_timestamp}-${album.artist.name}-${album.title}`
};
})
.filter((event) => event !== null);
const { error, value } = ics.createEvents(events, {
calName: 'Album releases calendar • coryd.dev'
});
if (error) {
console.error('Error creating events: ', error);
return '';
}
return value;
};