15 lines
665 B
JavaScript
15 lines
665 B
JavaScript
const { AssetCache } = require('@11ty/eleventy-fetch')
|
|
const ics = require('ics-to-json-extended')
|
|
const { DateTime } = require('luxon')
|
|
|
|
module.exports = async function () {
|
|
const URL = process.env.SECRET_FEED_ALBUM_RELEASES
|
|
const icsToJson = ics.default
|
|
const asset = new AssetCache('album_release_data')
|
|
if (asset.isCacheValid('1h')) return await asset.getCachedValue()
|
|
const icsRes = await fetch(URL)
|
|
const icsData = await icsRes.text()
|
|
const data = icsToJson(icsData)
|
|
const albumReleases = data.filter((d) => DateTime.fromISO(d.startDate) > DateTime.now())
|
|
return albumReleases.sort((a, b) => new Date(a.startDate) - new Date(b.startDate))
|
|
}
|