nyxsite/site/app.py
2025-02-28 23:25:36 -06:00

111 lines
3.5 KiB
Python

#!/usr/bin/env python
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/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"),
("assets/88x31s/zayd.fsky.io.png", "https://zayd.fsky.io"),
]
nyxbuttons = [
("assets/88x31s/nyx.everypizza.im.webp", "https://nyx.everypizza.im"),
]
app = Flask(__name__)
countFile = "visitorCount.txt"
def get_visitor_count():
try:
with open(countFile, "r") as f:
return int(f.read())
except FileNotFoundError:
return 0
def increment_visitor_count():
count = get_visitor_count()
count += 1
with open(countFile, "w") as f:
f.write(str(count))
return count
@app.route('/')
def index():
increment_visitor_count()
data = requests.get(apiRoot + "/1/user/" + user + "/playing-now")
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 <b>{user}</b>: <b>{track}</b> by <b>{artist}</b> from <b>{album}</b>"
return render_template('index.j2', np=nowPlayingString, visitor=get_visitor_count(), buttons=buttons, nyxbuttons=nyxbuttons)
@app.route('/assets/index.css')
def indexStyle():
css = render_template('assets/index.css')
response = make_response(css)
response.mimetype = "text/css"
return response
@app.route('/assets/particles.js')
def particleJs():
js = render_template('assets/scripts/particles.js')
response = make_response(js)
response.mimetype = "text/javascript"
return response
@app.route('/assets/birds.js')
def birdJs():
js = render_template('assets/scripts/birds.js')
response = make_response(js)
response.mimetype = "text/javascript"
return response
@app.route('/assets/three.min.js')
def threeJs():
js = render_template('assets/scripts/three.min.js')
response = make_response(js)
response.mimetype = "text/javascript"
return response
@app.route('/assets/vanta.net.min.js')
def vantaNetJs():
js = render_template('assets/scripts/vanta.net.min.js')
response = make_response(js)
response.mimetype = "text/javascript"
return response
@app.route('/assets/vanta.birds.min.js')
def vantaBirdsJs():
js = render_template('assets/scripts/vanta.birds.min.js')
response = make_response(js)
response.mimetype = "text/javascript"
return response
@app.route('/static/assets/88x31s/<path:filename>')
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)