From 4faf9f8b535dd2c53b7716820289d83a33cdbb18 Mon Sep 17 00:00:00 2001 From: Cory Dransfeldt <hi@coryd.dev> Date: Thu, 8 Jun 2023 14:08:19 -0700 Subject: [PATCH] feat: upcoming albums on now page --- .env | 3 ++- package.json | 1 + src/_data/albumReleases.js | 14 ++++++++++++++ src/_includes/now.liquid | 37 +++++++++++++++++++++++++------------ yarn.lock | 12 ++++++++++++ 5 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 src/_data/albumReleases.js diff --git a/.env b/.env index 226168c9..e55e13be 100644 --- a/.env +++ b/.env @@ -1,4 +1,5 @@ API_KEY_LASTFM= API_KEY_TRAKT= API_KEY_WEBMENTIONS_CORYD_DEV= -SECRET_FEED_INSTAPAPER_FAVORITES= \ No newline at end of file +SECRET_FEED_INSTAPAPER_FAVORITES= +SECRET_FEED_ALBUM_RELEASES= \ No newline at end of file diff --git a/package.json b/package.json index 30c18021..95ef4340 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "eleventy-plugin-youtube-embed": "^1.9.0", "eslint-plugin-jsx-a11y": "^6.7.1", "husky": "^8.0.3", + "ics-to-json-extended": "^1.1.4", "lint-staged": "^13.2.2", "liquidjs": "^10.8.2", "luxon": "^3.3.0", diff --git a/src/_data/albumReleases.js b/src/_data/albumReleases.js new file mode 100644 index 00000000..81f93995 --- /dev/null +++ b/src/_data/albumReleases.js @@ -0,0 +1,14 @@ +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) + return data.filter((d) => DateTime.fromISO(d.startDate) > DateTime.now()) +} diff --git a/src/_includes/now.liquid b/src/_includes/now.liquid index 74f24250..0ae4155d 100644 --- a/src/_includes/now.liquid +++ b/src/_includes/now.liquid @@ -2,7 +2,7 @@ layout: main --- {% include "header.liquid" %} -<div class="pt-12 prose dark:prose-invert hover:prose-a:text-blue-500 max-w-full"> +<ul class="pt-12 prose dark:prose-invert hover:prose-a:text-blue-500 max-w-full"> <h2 class="m-0 text-xl flex flex-row items-center font-black leading-tight tracking-normal dark:text-gray-200 md:text-2xl mt-8 mb-4"> {% heroicon "solid" "clock" "Currently" "height=28" %} <div class="ml-1">Currently</div> @@ -89,6 +89,21 @@ layout: main {% endfor %} </div> {% endif %} + {% if albumReleases.size > 0 %} + <h2 class="m-0 text-xl flex flex-row items-center font-black leading-tight tracking-normal dark:text-gray-200 md:text-2xl mt-8 mb-4"> + {% heroicon "solid" "calendar" "Albums I'm looking forward to" "height=28" %} + <div class="ml-1">Albums I'm looking forward to</div> + </h2> + <ul class="list-inside list-disc pl-5 md:pl-10"> + {% for album in albumReleases %} + <li class="mt-1.5 mb-2"> + <a href="https://{{album.location}}" title="{{album.summary | escape}}"> + {{ album.startDate | date: "%m.%d.%Y" }}: {{album.summary}} + </a> + </li> + {% endfor %} + </ul> + {% endif %} {% if books.size > 0 %} <h2 class="m-0 text-xl flex flex-row items-center font-black leading-tight tracking-normal dark:text-gray-200 md:text-2xl mt-8 mb-4"> {% heroicon "solid" "bookmark" "Books" "height=28" %} @@ -115,17 +130,15 @@ layout: main {% heroicon "solid" "newspaper" "Links" "height=28" %} <div class="ml-1">Links</div> </h2> - <div> - <ul class="list-inside list-disc pl-5 md:pl-10"> - {% for link in links %} - <li class="mt-1.5 mb-2"> - <a href="{{link.link}}" title="{{link.title | escape}}"> - {{ link.title }} - </a> - </li> - {% endfor %} - </ul> - </div> + <ul class="list-inside list-disc pl-5 md:pl-10"> + {% for link in links %} + <li class="mt-1.5 mb-2"> + <a href="{{link.link}}" title="{{link.title | escape}}"> + {{ link.title }} + </a> + </li> + {% endfor %} + </ul> {% endif %} {% if movies.size > 0 %} <h2 class="m-0 text-xl flex flex-row items-center font-black leading-tight tracking-normal dark:text-gray-200 md:text-2xl mt-8 mb-4"> diff --git a/yarn.lock b/yarn.lock index c42f08a5..cd9bdde1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2843,6 +2843,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +ics-to-json-extended@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/ics-to-json-extended/-/ics-to-json-extended-1.1.4.tgz#38e65b574c8175a6d2dd4b950a70789f6bbe174a" + integrity sha512-5NtUG7GwN2uVp4Gg1++brlELbv/fkIU+N7rZGQCIKujQAf+l6LTjMjsNifma3bX2CrPcsxy2tf/9bqF/NWIDWA== + dependencies: + moment "^2.29.1" + ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -3834,6 +3841,11 @@ mkdirp@^0.5.1: dependencies: minimist "^1.2.6" +moment@^2.29.1: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + moo@^0.5.1, moo@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.2.tgz#f9fe82473bc7c184b0d32e2215d3f6e67278733c"