started album squared thing
This commit is contained in:
parent
3fefdcc7d8
commit
75260fac0e
56
app/app.py
56
app/app.py
@ -2,6 +2,7 @@ import glob
|
|||||||
import configparser
|
import configparser
|
||||||
import random
|
import random
|
||||||
|
|
||||||
|
import requests
|
||||||
import flask
|
import flask
|
||||||
import waitress
|
import waitress
|
||||||
import markdown
|
import markdown
|
||||||
@ -19,6 +20,9 @@ STATUS_FILE = config['STATUS']['STATUS_FILE']
|
|||||||
PORT = int(config['NETWORK']['PORT'])
|
PORT = int(config['NETWORK']['PORT'])
|
||||||
DEV = int(config['NETWORK']['DEV'])
|
DEV = int(config['NETWORK']['DEV'])
|
||||||
|
|
||||||
|
MUSIC_API_TOKEN = config['AUTH']['MUSIC_API_TOKEN']
|
||||||
|
MUSIC_API_URL = config['NETWORK']['MUSIC_API_URL']
|
||||||
|
|
||||||
def get_posts(category_filter : str | None = None) -> list[Post]:
|
def get_posts(category_filter : str | None = None) -> list[Post]:
|
||||||
post_files = glob.glob(f'{POSTS_FOLDER}/*')
|
post_files = glob.glob(f'{POSTS_FOLDER}/*')
|
||||||
try:
|
try:
|
||||||
@ -105,7 +109,25 @@ def music():
|
|||||||
# Get status
|
# Get status
|
||||||
status = get_status()
|
status = get_status()
|
||||||
|
|
||||||
return flask.render_template('music.html', posts=post_bodies, status=status)
|
# Get top albums
|
||||||
|
r = requests.get(
|
||||||
|
MUSIC_API_URL +'/top/albums',
|
||||||
|
headers={
|
||||||
|
'token' : MUSIC_API_TOKEN,
|
||||||
|
'user' : '1',
|
||||||
|
'limit' : '9'
|
||||||
|
})
|
||||||
|
|
||||||
|
top_albums = r.json()['top']
|
||||||
|
for album_index in range(0, len(top_albums)):
|
||||||
|
album = top_albums[album_index]
|
||||||
|
|
||||||
|
time = int(album['listen_time'])
|
||||||
|
hours = round(time/1000/60/60, 1)
|
||||||
|
|
||||||
|
top_albums[album_index]['listen_time'] = hours
|
||||||
|
|
||||||
|
return flask.render_template('music.html', posts=post_bodies, status=status, top_albums=top_albums)
|
||||||
|
|
||||||
# Motion Pictures Page
|
# Motion Pictures Page
|
||||||
@app.route('/motion-pictures/')
|
@app.route('/motion-pictures/')
|
||||||
@ -148,6 +170,38 @@ def about():
|
|||||||
|
|
||||||
return flask.render_template('about.html', status=status)
|
return flask.render_template('about.html', status=status)
|
||||||
|
|
||||||
|
# MISC
|
||||||
|
|
||||||
|
@app.route('/albumsquare/<user_id>/<int:rows>')
|
||||||
|
def album_square(user_id, rows : int):
|
||||||
|
|
||||||
|
limit = rows ** 2
|
||||||
|
|
||||||
|
res = 100/(rows+2)
|
||||||
|
|
||||||
|
# Get top albums
|
||||||
|
r = requests.get(
|
||||||
|
MUSIC_API_URL +'/top/albums',
|
||||||
|
headers={
|
||||||
|
'token' : MUSIC_API_TOKEN,
|
||||||
|
'user' : user_id,
|
||||||
|
'limit' : str(limit)
|
||||||
|
})
|
||||||
|
|
||||||
|
top_albums = r.json()['top']
|
||||||
|
for album_index in range(0, len(top_albums)):
|
||||||
|
album = top_albums[album_index]
|
||||||
|
|
||||||
|
time = int(album['listen_time'])
|
||||||
|
hours = round(time/1000/60/60, 1)
|
||||||
|
|
||||||
|
top_albums[album_index]['listen_time'] = hours
|
||||||
|
|
||||||
|
|
||||||
|
return flask.render_template('album_square.html', top_albums=top_albums, limit=rows, res=res)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if DEV:
|
if DEV:
|
||||||
app.run(port=PORT)
|
app.run(port=PORT)
|
||||||
|
|||||||
BIN
app/data/.flask_session/2029240f6d1128be89ddc32729463129
Normal file
BIN
app/data/.flask_session/2029240f6d1128be89ddc32729463129
Normal file
Binary file not shown.
BIN
app/data/.flask_session/aa43147407c8a8c678cd91f678f2a023
Normal file
BIN
app/data/.flask_session/aa43147407c8a8c678cd91f678f2a023
Normal file
Binary file not shown.
8
app/data/comments.json
Normal file
8
app/data/comments.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"2" : [
|
||||||
|
{
|
||||||
|
"username" : "0x01FE",
|
||||||
|
"content" : "Hello, this is an example comment!"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
5
app/data/users.json
Normal file
5
app/data/users.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"users" : {
|
||||||
|
"0x01FE" : "cGFzc3dvcmQ="
|
||||||
|
}
|
||||||
|
}
|
||||||
31
app/static/albumsquare.css
Normal file
31
app/static/albumsquare.css
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
.albums {
|
||||||
|
height: 100%;
|
||||||
|
height: fit-content;
|
||||||
|
align-self: flex-start;
|
||||||
|
|
||||||
|
border-style: var(--borders-style);
|
||||||
|
border-radius: var(--border-radius);
|
||||||
|
border-color: #1E2022;
|
||||||
|
background-color: var(--main-background);
|
||||||
|
|
||||||
|
/* Text Settings
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 30pt; */
|
||||||
|
line-height: 0;
|
||||||
|
font-size: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.albums img {
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
padding: 0 0;
|
||||||
|
margin: 0 0;
|
||||||
|
border: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.body {
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 0;
|
||||||
|
margin: 0 0;
|
||||||
|
}
|
||||||
@ -172,3 +172,41 @@ a:hover {
|
|||||||
line-height: 2.25;
|
line-height: 2.25;
|
||||||
text-indent: 3em;
|
text-indent: 3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* MUSIC */
|
||||||
|
.albums {
|
||||||
|
height: fit-content;
|
||||||
|
align-self: flex-start;
|
||||||
|
top: 10px;
|
||||||
|
|
||||||
|
padding: 20pt;
|
||||||
|
|
||||||
|
margin: 5em 0;
|
||||||
|
margin-right: 2em;
|
||||||
|
|
||||||
|
border-style: var(--borders-style);
|
||||||
|
border-radius: var(--border-radius);
|
||||||
|
border-color: #1E2022;
|
||||||
|
background-color: var(--main-background);
|
||||||
|
|
||||||
|
/* Text Settings
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 30pt; */
|
||||||
|
line-height: 0;
|
||||||
|
font-size: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.albums img {
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
padding: 0 0;
|
||||||
|
margin: 0 0;
|
||||||
|
border: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.albums h1 {
|
||||||
|
font-size: normal;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
20
app/templates/album_square.html
Normal file
20
app/templates/album_square.html
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<header>
|
||||||
|
<link rel="shortcut icon" href="index_favicon.ico">
|
||||||
|
<link rel="stylesheet" href="{{ url_for('static', filename='albumsquare.css') }}">
|
||||||
|
<title>Album Square</title>
|
||||||
|
</header>
|
||||||
|
<body>
|
||||||
|
<div class="albums">
|
||||||
|
{% for album in top_albums %}
|
||||||
|
<a title="{{ album.album_name}} by {{ album.artist_name }} - {{ album.listen_time }} Hours">
|
||||||
|
<img src="{{ album.album_cover }}" style="width: {{ res }}%; height: {{ res }}%;">
|
||||||
|
</a>
|
||||||
|
{% if loop.index % limit == 0 %}
|
||||||
|
<br>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -28,6 +28,18 @@
|
|||||||
<div class="post">{{ post|safe }}</div>
|
<div class="post">{{ post|safe }}</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="albums">
|
||||||
|
<h1>Top Albums</h1>
|
||||||
|
{% for album in top_albums %}
|
||||||
|
<a title="{{ album.album_name}} by {{ album.artist_name }} - {{ album.listen_time }} Hours">
|
||||||
|
<img src="{{ album.album_cover }}">
|
||||||
|
</a>
|
||||||
|
{% if loop.index % 3 == 0 %}
|
||||||
|
<br>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user