diff --git a/package-lock.json b/package-lock.json index ff5ecf2..c9e93d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "devDependencies": { "@11ty/eleventy": "^2.0.1", + "@11ty/eleventy-fetch": "^4.0.0", "@11ty/eleventy-img": "^3.1.8", "@11ty/eleventy-plugin-rss": "^1.2.0", "autoprefixer": "^10.4.17", diff --git a/package.json b/package.json index ceec785..0df8000 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ }, "devDependencies": { "@11ty/eleventy": "^2.0.1", + "@11ty/eleventy-fetch": "^4.0.0", "@11ty/eleventy-img": "^3.1.8", "@11ty/eleventy-plugin-rss": "^1.2.0", "autoprefixer": "^10.4.17", diff --git a/src/_data/lastfm.js b/src/_data/lastfm.js new file mode 100644 index 0000000..97671f3 --- /dev/null +++ b/src/_data/lastfm.js @@ -0,0 +1,32 @@ +require("dotenv").config(); + +const EleventyFetch = require("@11ty/eleventy-fetch"); +const dayjs = require("dayjs"); +const utc = require("dayjs/plugin/utc"); +const relativeTime = require("dayjs/plugin/relativeTime"); + +dayjs.extend(utc); +dayjs.extend(relativeTime); + +const lastFmApiKey = process.env.LAST_FM_API_KEY; + +const fetchRecentTracks = async () => { + const url = `http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=wonderfulfrog&api_key=${lastFmApiKey}&format=json`; + + const response = await EleventyFetch(url, { duration: "1m", type: "json" }); + const tracks = response.recenttracks.track.slice(0, 5); + + const recentTracks = tracks.map((track) => { + const timestamp = dayjs(track.date["#text"]).utc(true).fromNow(); + return { + artist: track.artist["#text"], + track: track.name, + url: track.url, + timestamp, + }; + }); + + return recentTracks; +}; + +module.exports = fetchRecentTracks; diff --git a/src/now.html b/src/now.html new file mode 100644 index 0000000..accfc39 --- /dev/null +++ b/src/now.html @@ -0,0 +1,22 @@ +--- +layout: "layouts/base" +permalink: /now/index.html +title: /now +--- + +
What am I doing right now? Everything on here is automatically generated from various data sources.
++ What is a `/now` page? Check out nownownow.com. +
+{{ track.timestamp }}
+