From b2f0ef8a6a567cebbef164cf056c516d606c5e9d Mon Sep 17 00:00:00 2001 From: yuki Date: Sat, 11 Oct 2025 09:04:20 -0300 Subject: [PATCH] add lastfm widget --- _layouts/base.njk | 3 +++ _layouts/home.njk | 14 ++++++++++---- css/main.scss | 23 +++++++++++++++++++++++ eleventy.config.js | 1 + img/icons/lastfm.png | Bin 0 -> 1717 bytes js/lastfm.js | 35 +++++++++++++++++++++++++++++++++++ 6 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 img/icons/lastfm.png create mode 100644 js/lastfm.js diff --git a/_layouts/base.njk b/_layouts/base.njk index d9555e5..cb9bd96 100644 --- a/_layouts/base.njk +++ b/_layouts/base.njk @@ -24,5 +24,8 @@ {% include "footer.njk" %} + {% if lastfm %} + + {% endif %} \ No newline at end of file diff --git a/_layouts/home.njk b/_layouts/home.njk index 8e243e6..642d162 100644 --- a/_layouts/home.njk +++ b/_layouts/home.njk @@ -1,8 +1,18 @@ --- layout: base title: home +lastfm: true ---
+
+

last played

+
+
+ +
+

please visit...

@@ -17,10 +27,6 @@ title: home {% endfor %}
-
-

last played

-

test

-
diff --git a/css/main.scss b/css/main.scss index bb8c860..1075a96 100644 --- a/css/main.scss +++ b/css/main.scss @@ -96,6 +96,29 @@ body { .welcome-aside-left { width: max-content; + + .now-playing-wrapper { + width: 190px; + #listening { + display: flex; + align-items: flex-start; + justify-content: space-evenly; + img { + order: 1; + max-width: 36px; + padding: 4px; + } + h3 { + font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif; + font-size: 0.8em; + padding: 0px 0px 0px 4px; + } + p { + font-size: 0.7em; + padding: 0px 0px 2px 4px; + } + } + } .buttons-wrapper { width: 190px; diff --git a/eleventy.config.js b/eleventy.config.js index bff3f82..39e13a4 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -5,6 +5,7 @@ module.exports = function(eleventyConfig) { eleventyConfig.setLayoutsDirectory("_layouts"); eleventyConfig.addPassthroughCopy("img"); eleventyConfig.addPassthroughCopy("css/fonts"); + eleventyConfig.addPassthroughCopy("js"); eleventyConfig.addPassthroughCopy("LICENSE.txt"); eleventyConfig.addPlugin(eleventySass); diff --git a/img/icons/lastfm.png b/img/icons/lastfm.png new file mode 100644 index 0000000000000000000000000000000000000000..ba2b24f28270e1362499552a82d74678830f27d5 GIT binary patch literal 1717 zcmV;m21@yfP)p^7}u9iO^4ZNCB#HSB$3inA(-RP_}wwwy46x9oXpC(GxgOMY=X-NrS&03V@b&ts4+U! z96r?`oAk0x?QtU1+J(_tN^={8(B(=@f#bPis8goHV6i|Zah35FY29%Ddg_y}~)Sp>YY0y)+c=(O6%MhZ!8Hd^!Z z(R`r>NxQd0^m_P~FF6gKjhitsHwUuR%cP`xZ}Ma~c76`yh3dfu5VouilY;JfOOUYY z9as|L5Nv5d=bqj0U#fxXbVBp&6d2!l6Uk&i?CjaNO^lhiy*%uF@qA$Zten@ z%eNw{un^6cmmu~;6-*f!kjV3nZ+1g;b#Z;ir(0p)u^sxL7tlzLqyP}ZMHmt9tOBGY zS`Z-59ThtuseXPh^zCyd)5-Av{xj^~9zb-I9=c_(LD5Aa&Sd2KUDIav>x){Mze6Ag z2I4Sb*rM8dN${Q^F%{1Zr{U|}ko@lc=Z}g=0df6!kn1Md#=-j(<@rb@|81GS5M7%- zhO6i$DDmdu-$9r>1-uC)id8V2AALeXI2BheLU;l{h#e1LuRMa-rOP0%d>fuMrRd1W zg1Mvwu|-92PM-k>)q(x|IT(%}hNkvf3=N4o zVd7)MKTy=$x8OW`4l&VDP!=tv^CFDyPIPbk2sdZVME%9rDKjXG#+&Y*e2hH#WplOyN* zBB1uB0E)_``@jLNY%VB3u;9i1=Z{LrN|V!u_qmSeXcc@-%`nDL6kcCBNKaJ5-RJT8 z$S7@Ok2yUs1$~yWm)Wb&!ayO7{%|t_WvdYyGj@>YK?=3-$#$e=Wk6Rro9anKTSWzR zh6vNr()c}$0?2>XC>h3`MVHKkO5E6Oh@oW`=AzUbNdmuZY{>GDuZk?4QavFLx*vH=PsDL z+R5|q0NXCjO3Yy4C%Rc4eoR2Ve)wpODs3!5+i+&B@t3;YJ~G^{=^u)mJcBPG%zU< zf1SQVcL8HTMnuDm1ks{IR7(}~_Z4_9UqXOX&2%N3xeM~JXA+1<(A^o9zD4;DlmEcU zl)3=DOvrduRsMY_(erNwJW=mIFEPx7vY&k{u*mS)aC9akfi5$K$*|=B8~!<^7`5~xX3DPz7?Xyz(d4Y zVkCuf&fd*17#721*t{?Hq^0j2YtWb4@=_3IF@d$JJi;HRL8>@bV%-lNsK3^NcBgmW znx@9Gew2!|^ipb;EqWC;*4^?5hdtOUUI7h0@_c<$BmX@AM}PqUR9J($bMl=300000 LNkvXXu0mjfsTwp# literal 0 HcmV?d00001 diff --git a/js/lastfm.js b/js/lastfm.js new file mode 100644 index 0000000..1efdb82 --- /dev/null +++ b/js/lastfm.js @@ -0,0 +1,35 @@ +// this script is under the MIT license (https://max.nekoweb.org/resources/license.txt) + +const USERNAME = "kaaisudev"; // Put your LastFM username here +const BASE_URL = `https://lastfm-last-played.biancarosa.com.br/${USERNAME}/latest-song`; + +const getTrack = async () => { + const request = await fetch(BASE_URL); + const json = await request.json(); + let status + + let isPlaying = json.track['@attr']?.nowplaying || false; + + if(!isPlaying) { + // Trigger if a song isn't playing + return; + } else { + // Trigger if a song is playing + } + + // Values: + // COVER IMAGE: json.track.image[1]['#text'] + // TITLE: json.track.name + // ARTIST: json.track.artist['#text'] + + document.getElementById("listening").innerHTML = ` + +
+

${json.track.name}

+

${json.track.artist['#text']}

+
+ ` +}; + +getTrack(); +setInterval(() => { getTrack(); }, 10000);