mirror of
https://git.everypizza.im/n/nyxsite
synced 2025-03-14 16:27:49 +01:00
111 lines
3.5 KiB
Python
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)
|