From 0e04fcc8820239324a92fcf6b4ba55a4809633bc59eead0d896c8d7b82233a19 Mon Sep 17 00:00:00 2001 From: Nyx Tutt Date: Mon, 24 Feb 2025 10:15:55 -0600 Subject: [PATCH] did a few things, most notably 88x31s Signed-off-by: Nyx Tutt --- site/app.py | 38 +++++++++++++++--- .../assets/88x31s/benjae.nekoweb.org.gif | Bin 0 -> 466 bytes .../templates/assets/88x31s/freetards.xyz.gif | Bin 0 -> 680 bytes site/templates/assets/88x31s/fsky.io.webp | Bin 0 -> 486 bytes .../assets/88x31s/nyx.everypizza.im.webp | Bin 0 -> 198 bytes .../assets/88x31s/purplebored.pl.gif | Bin 0 -> 1774 bytes .../assets/88x31s/squarebowl.club.gif | Bin 0 -> 5689 bytes .../assets/88x31s/synth.download.svg | 1 + site/templates/assets/88x31s/telepath.im.png | Bin 0 -> 1037 bytes .../assets/88x31s/voxel.fsky.io.webp | Bin 0 -> 528 bytes site/templates/assets/broken/isekai.rocks.svg | 1 + site/templates/index.j2 | 14 ++++++- 12 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 site/templates/assets/88x31s/benjae.nekoweb.org.gif create mode 100644 site/templates/assets/88x31s/freetards.xyz.gif create mode 100644 site/templates/assets/88x31s/fsky.io.webp create mode 100644 site/templates/assets/88x31s/nyx.everypizza.im.webp create mode 100644 site/templates/assets/88x31s/purplebored.pl.gif create mode 100644 site/templates/assets/88x31s/squarebowl.club.gif create mode 100644 site/templates/assets/88x31s/synth.download.svg create mode 100644 site/templates/assets/88x31s/telepath.im.png create mode 100644 site/templates/assets/88x31s/voxel.fsky.io.webp create mode 100644 site/templates/assets/broken/isekai.rocks.svg diff --git a/site/app.py b/site/app.py index 62a7457..8e246d0 100644 --- a/site/app.py +++ b/site/app.py @@ -1,11 +1,24 @@ #!/usr/bin/env python -from flask import Flask, render_template, make_response +from flask import Flask, render_template, make_response, send_from_directory import requests +import os apiRoot = "https://api.listenbrainz.org" user = "everypizza" +buttons = [ + ("assets/88x31s/benjae.nekoweb.org.gif", "https://benjae.nekoweb.org"), + ("assets/88x31s/freetards.xyz.gif", "https://freetards.xyz"), + ("assets/88x31s/fsky.io.webp", "https://fsky.io"), + ("assets/88x31s/nyx.everypizza.im.webp", "https://nyx.everypizza.im"), + ("assets/88x31s/purplebored.pl.gif", "https://purplebored.pl"), + ("assets/88x31s/squarebowl.club.gif", "https://squarebowl.club"), + ("assets/88x31s/synth.download.svg", "https://synth.download"), + ("assets/88x31s/telepath.im.png", "https://telepath.im"), + ("assets/88x31s/voxel.fsky.io.webp", "https://voxel.fsky.io"), +] + app = Flask(__name__) countFile = "visitorCount.txt" @@ -28,10 +41,16 @@ def increment_visitor_count(): def index(): increment_visitor_count() data = requests.get(apiRoot + "/1/user/" + user + "/playing-now") - track = data.json()['payload']['listens'][0]['track_metadata']['track_name'] - artist = data.json()['payload']['listens'][0]['track_metadata']['artist_name'] - album = data.json()['payload']['listens'][0]['track_metadata']['release_name'] - return render_template('index.j2', visitor=get_visitor_count(), user=user, title=track, artist=artist, album=album) + if not data.json()['payload']['listens']: + nowPlaying = False + nowPlayingString = "nothing is playing right now." + else: + track = data.json()['payload']['listens'][0]['track_metadata']['track_name'] + artist = data.json()['payload']['listens'][0]['track_metadata']['artist_name'] + album = data.json()['payload']['listens'][0]['track_metadata']['release_name'] + nowPlayingString = f"now playing for {user}: {track} by {artist} from {album}" + + return render_template('index.j2', np=nowPlayingString, visitor=get_visitor_count(), buttons=buttons) @app.route('/assets/index.css') def indexStyle(): @@ -40,5 +59,14 @@ def indexStyle(): response.mimetype = "text/css" return response +@app.route('/static/assets/88x31s/') +def serve_dir(filename): + directory = 'templates/assets/88x31s' + return send_from_directory(directory, filename) + +@app.route('/todo') +def todo(): + return render_template('todo.html') + if __name__ == '__main__': app.run(host="0.0.0.0", port=8080) diff --git a/site/templates/assets/88x31s/benjae.nekoweb.org.gif b/site/templates/assets/88x31s/benjae.nekoweb.org.gif new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..6c3315bc72e9edf8d7c24ec2cbaf8de76e51722106ca46e9a0e97de6bfed8885 GIT binary patch literal 466 zcmV;@0WJPVNk%w1VORhk0P_F<5fK|69xgF5L`6qhbjR%Lpsc3jq50ykiM0BOZ|8TTPtF^L?&Ab0#D30P~PJjulZ0o*oEYGsgq!iv1C*K6Lpl~>} zoi08~0QfpEo(!UN+A$S3^IlE7=Iwsa#Qin3}99`R2;vA}SIDF}M zb^;kmCUHVeTy=q9c_%O^E`ThPj9+aQ1#&@^eNdKaj!c_~Xr^c|p8%+VVp~*nr?QKy zvuSr$q*G@A397ZSE4IIDHU$8$DK9)Qld4|A&uP%m#W!}m(bLl0+APG41K7l$w%@nE z;FscS+2>KS?{(?uv{HlP_T{E6)%5&S@U{B~@0PrO{a6KL2Y?xkYn0*v8jnUVm3 z1xS%HFlrQNPy;<#9CJxj$^xcX2`tU}w5wO4UJDfPI^n5;vuM+*UCZ`t(xh3jBA83J I?%W6fJ54{*uK)l5 literal 0 HcmV?d00001 diff --git a/site/templates/assets/88x31s/freetards.xyz.gif b/site/templates/assets/88x31s/freetards.xyz.gif new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..44f7c27f6eb8fe0ec38f87de43ac8b4ecff0292a6f26c3b2628ec9c2c5a9d401 GIT binary patch literal 680 zcmV;Z0$2SOZ|8U7ktFP-fg<*D|b9MV%=pKC+(S7^f># zRcdgA1X?s4fregSVtaahei(#@ZiSatb0mt3OpcF!PNEcwl@gqnf;FfQZ6u$dqOyOb zUkj+IY)dP+t-G*#v$8Lg7p%BLEy#99z-0gp(bCZX2&Bc6aK2fEzA1s=DgXz;2-6MF z=ndAyYo@2z*YWa0;7H@-Q3>YL&_3(!+#!MIj+qEf22X^uXJP?9ef;`SV|QyFAd3W5 zUDQ>PBM*oA|Ms1e2907Z777p^QCWgvM_nVr07xKmq%;KVR8G;BP2k34FFScbKrpj%OD&4kvFQ?LSKR<&lJ zu3ZBH&YtATQ!3A|aNT+tD`0?O9|HswC?Fu9$1GhEY3s$SAY{K)OsD^TeMe6V7}vt1 zCl)~cxas6Wpyu9nF!RUXjHycx4Fx-DK$yF5(J)Ylda=I+KpAfsO8K^v)!Wia#MNk&HA0RRA3MM6+kP&gpc0RRB73ILq}Dp&v?06vK}l}Du`A|W+c3IL!H z31a}k5Ltu`EP4Rj0d~{7*ueu#8$O!nUO%=KTyDZVMIwr@HpwTpp0~4-5+DDm3&5DW z$vx0$r!juvg3u|I<8s(|0092*5zCot{LS#A$<;IXi=chN_qiCjXL8{NX4qt*f9~E) zx~$ISeT~&5txYRiJb_{(V>URn9_4?&0apI*T_0En72bXD=lHC=SDmy_ZcK7;j4TaU zSOn{Hc1!CMYjKElPwMSkX5;eCPy4aMnIQc_QjhCipX6i3_q>#7%eLqeI@GiG{#nmb zOhc|Kl$+Ss!V4{=mE#WT8sBDIxm&UrY9p?7%7Og;gUaFqWU4|M|1R}Sm;_Zlk6Qlo znw_E*a@W==Z5l3=5O&jQnOwqfs{k?rU{B3T7yrqBgjp7+Or?~c_;}%IL5zJI5(EaP zTS&-MG;Q+@T9H!Rq=m`xP~@$9pzyu9)S(X~Ad1BS>r(0FOEiREh~j&%Zc@b8)m?_9 z2vsV2+BVJ23$C8XURcl=-Zoo+=YC{}IUc{{rW2B|E!ODKf)hTD*ppe(ptZ+1T%*vz c3iNAEM1Z9cFDDY~EZspG4INnzOppKo01QOwZ2$lO literal 0 HcmV?d00001 diff --git a/site/templates/assets/88x31s/nyx.everypizza.im.webp b/site/templates/assets/88x31s/nyx.everypizza.im.webp new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..7cda561ed7f06690c0b2339e3583266f01e3dc678f5ecfaa993dfafad18db71c GIT binary patch literal 198 zcmV;%06G6sNk&G#00012MM6+kP&iDn0000lSAYiq4{(tGi~PUlfBxeEaI0-w){Mdk zYycxL3Z=^^l#~|t5xxN;Ur80*-~W5=$P1APBKki8{KMEeA?XA(Ju*eOM)0OUV5034 z5a}ZsPaPnSk^vDbZ A$N&HU literal 0 HcmV?d00001 diff --git a/site/templates/assets/88x31s/purplebored.pl.gif b/site/templates/assets/88x31s/purplebored.pl.gif new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..deaa08328f566801a8eeba5755ab4f06fe7160998dc2a3f3fd70efd211eea5dc GIT binary patch literal 1774 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 \ No newline at end of file diff --git a/site/templates/assets/88x31s/telepath.im.png b/site/templates/assets/88x31s/telepath.im.png new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..c2b1c4a5fbe3ae95b8615426a729b6dd26a2e6e9186678cf2568a3653d443fc9 GIT binary patch literal 1037 zcmV+o1oHcdP)o5>S#d{P09nb+#0dxQz02M$7gfBjU3V;fL3ZMg^0?1$fl2qWQqj}e}Rum^rA~1~a zj3&0VTJ2u1cGs}xoGV<1Z203kWJO1CW^@E+Mn`aFbOdKcHiGx}_ucdJvnz_9(WGGS z_4TzI4u|1-l_*v{?(XgiiyV8ba(F^3_Hw^M{nIB84-Xes-0SsPOYqLlPO-JMHQ}p| z-mfG0?CfkQa&VxH1Y_67$47B|d^|DdQ`*W2PUc{8(ACwI`)%;#hPuG-S7F^HjCgo> zaPvaOetv$srr6ln2xBxFg)wbjx@XB-dr~&xR}*sQ*>4_HLYm`aK`zzsn^jVXau#5n z&1-cj0zK#F=au#T#3bi^WuM5AfcaQ2IxMVBwk7~icIlT=f=v-hC3XAFIjRp(jx)BR zYDnhx_O{Gp$jT55oJFt<$3fOw$9ZYU*e(Q}IQR1M63Di5vI(89udl`9<72Q1J+g`C z$WYjj=N_O-e(5EMU|tmK*~^k_18iY}XGI^*TIcjqQckCIU@*fz!&ya~Js~miE-FTP zq3jhGCI}Vm$h@$~dm*$aI>!YeY;xd_=wm(6Jbl9h!*5@U9r=8NQ~Ft-`|Jd zd5VcGdICCmfo(%0f-NAZY3Cq9AaNNo^b)i`(WAOTXq_V#wUH-2bc6WCy=OKr*Or^+tSR#90QYIQ7Vx3o6yS&>%- zrn<+yHurIbwp~aJ^~NsI#Yms+BDmMzRZ_CH)zmZVj}N%=x$S7MQG=GwpWq1|*ZyB5 zLG%(iM6{wMo&)ibBr4))VBY3T$?)dMU2#5Vj-v;5cXz{n$l6m7%j>jB#-_1&f9ABe zY_{Me>NKKP(Q2Q^&{toKqK%`ie=KS`y8mco#$P{ru4Uk;U0z<6DQI(Z(+viLFn$_p zbMSY84j|R;(a9|Hh4vk2CBeT5T@KESj^NDb2+oX-;LP|33U7@;-n!jQs#QQUB4B(&drklV{_QJ`C8zzfv~msz>w{(*n$9+^^A5nYLI=_p zmc5__Y9=F_C|z)ChWp>;+_hPoyR|2~c1&b_akI?opbn8en{ukoXpip!rb`7d)2w*^v(IFqZ=GEJe|Gfq=sXiHY?bja5sY^x z<{(Z?r5-hAqIm10{D0Wp3*%H*FNfU!g8sc16dsy${oMxx6Bm{)!8W@0#v77c9Sz(v z+Kt%h_e}D#_}r-A@JMVM0Hu}7K3qH6Q SS;Y3W{0+fnwC=I2C;$L!WCw2m literal 0 HcmV?d00001 diff --git a/site/templates/assets/broken/isekai.rocks.svg b/site/templates/assets/broken/isekai.rocks.svg new file mode 100644 index 0000000..7c56724 --- /dev/null +++ b/site/templates/assets/broken/isekai.rocks.svg @@ -0,0 +1 @@ +
>Snit was here
diff --git a/site/templates/index.j2 b/site/templates/index.j2 index 8826d2d..41600a0 100644 --- a/site/templates/index.j2 +++ b/site/templates/index.j2 @@ -70,7 +70,7 @@

@@ -78,10 +78,20 @@ now playing

- now playing for {{ user }}: {{ title }} by {{ artist }} from {{ album }} {{ rawData }} + {{ np }}
data is from listenbrainz.

+

+ 88x31s +

+

+ {% for image, link in buttons %} + + {{ image }} + + {% endfor %} +