#!/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 {user}: {track} by {artist} from {album}" 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/') 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)