add playlists
This commit is contained in:
parent
3b7c40c115
commit
5210ca3102
@ -102,6 +102,14 @@ async def get_tracks(request, albumartist, album, date, playlist_name=""):
|
|||||||
return tracks
|
return tracks
|
||||||
|
|
||||||
|
|
||||||
|
async def get_playlists(request):
|
||||||
|
"""Return all playlists in the database."""
|
||||||
|
async with request.app.state.db_pool.acquire() as conn:
|
||||||
|
playlists = await conn.fetch("SELECT name FROM playlist")
|
||||||
|
playlists = [p['name'] for p in playlists]
|
||||||
|
return playlists
|
||||||
|
|
||||||
|
|
||||||
def convert_filepath(path):
|
def convert_filepath(path):
|
||||||
"""Convert a filepath to a URL."""
|
"""Convert a filepath to a URL."""
|
||||||
path = config.server_homepage + '/library/' + path
|
path = config.server_homepage + '/library/' + path
|
||||||
|
18
pyrite.py
18
pyrite.py
@ -23,29 +23,31 @@ templates = Jinja2Templates(directory="templates")
|
|||||||
|
|
||||||
@app.get("/", response_class=HTMLResponse)
|
@app.get("/", response_class=HTMLResponse)
|
||||||
async def index(request: Request):
|
async def index(request: Request):
|
||||||
artists = await db.get_artists(request)
|
playlist_name = request.cookies.get('playlist', '')
|
||||||
context = {'request': request, 'artists': artists}
|
artists = await db.get_artists(request, playlist_name)
|
||||||
|
playlists = await db.get_playlists(request)
|
||||||
|
context = {'request': request, 'artists': artists, 'playlists': playlists}
|
||||||
return templates.TemplateResponse('index.html', context)
|
return templates.TemplateResponse('index.html', context)
|
||||||
|
|
||||||
|
|
||||||
@app.get("/rand_track/")
|
@app.get("/rand_track/")
|
||||||
async def get_rand_track(request: Request):
|
async def get_rand_track(request: Request, playlist: str = ''):
|
||||||
"""Return a random track."""
|
"""Return a random track."""
|
||||||
track = await db.get_random_track(request)
|
track = await db.get_random_track(request, playlist)
|
||||||
return track
|
return track
|
||||||
|
|
||||||
|
|
||||||
@app.get("/albums/")
|
@app.get("/albums/")
|
||||||
async def get_albums(request: Request, albumartist: str):
|
async def get_albums(request: Request, albumartist: str, playlist: str = ''):
|
||||||
"""Return all albums associated with a particular albumartist."""
|
"""Return all albums associated with a particular albumartist."""
|
||||||
albums = await db.get_albums(request, albumartist)
|
albums = await db.get_albums(request, albumartist, playlist)
|
||||||
return albums
|
return albums
|
||||||
|
|
||||||
|
|
||||||
@app.get("/tracks/")
|
@app.get("/tracks/")
|
||||||
async def get_tracks(request: Request, albumartist: str, album: str, date: str):
|
async def get_tracks(request: Request, albumartist: str, album: str, date: str, playlist: str = ''):
|
||||||
"""Select an album and return all associated tracks."""
|
"""Select an album and return all associated tracks."""
|
||||||
tracks = await db.get_tracks(request, albumartist, album, date)
|
tracks = await db.get_tracks(request, albumartist, album, date, playlist)
|
||||||
return tracks
|
return tracks
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,16 +41,23 @@ function init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function get_rand_track() {
|
async function get_rand_track() {
|
||||||
let res = await fetch("./rand_track/")
|
let playlist = document.querySelector('#playlist').value;
|
||||||
|
|
||||||
|
let q = new URLSearchParams();
|
||||||
|
q.set('playlist', playlist);
|
||||||
|
|
||||||
|
let res = await fetch("./rand_track/?" + q.toString())
|
||||||
let data = await res.json();
|
let data = await res.json();
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function select_artist(event) {
|
async function select_artist(event) {
|
||||||
let artist = event.target.value;
|
let artist = event.target.value;
|
||||||
|
let playlist = document.querySelector('#playlist').value;
|
||||||
|
|
||||||
let q = new URLSearchParams();
|
let q = new URLSearchParams();
|
||||||
q.set('albumartist', artist);
|
q.set('albumartist', artist);
|
||||||
|
q.set('playlist', playlist);
|
||||||
let res = await fetch("./albums/?" + q.toString());
|
let res = await fetch("./albums/?" + q.toString());
|
||||||
let data = await res.json();
|
let data = await res.json();
|
||||||
|
|
||||||
@ -61,13 +68,13 @@ async function select_album(event) {
|
|||||||
let artist = document.querySelector('input[name=artist]:checked').value;
|
let artist = document.querySelector('input[name=artist]:checked').value;
|
||||||
let album = document.querySelector('input[name=album]:checked').value;
|
let album = document.querySelector('input[name=album]:checked').value;
|
||||||
let date = event.srcElement.parentElement.querySelector('.album_year').textContent;
|
let date = event.srcElement.parentElement.querySelector('.album_year').textContent;
|
||||||
//let playlist = document.querySelector('#playlist').value;
|
let playlist = document.querySelector('#playlist').value;
|
||||||
|
|
||||||
let q = new URLSearchParams();
|
let q = new URLSearchParams();
|
||||||
q.set('albumartist', artist);
|
q.set('albumartist', artist);
|
||||||
q.set('album', album);
|
q.set('album', album);
|
||||||
q.set('date', date);
|
q.set('date', date);
|
||||||
//q.set('playlist_name', playlist);
|
q.set('playlist', playlist);
|
||||||
let res = await fetch("./tracks/?" + q.toString());
|
let res = await fetch("./tracks/?" + q.toString());
|
||||||
let data = await res.json();
|
let data = await res.json();
|
||||||
|
|
||||||
@ -127,6 +134,11 @@ function select_track(event) {
|
|||||||
playTrack();
|
playTrack();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function select_playlist(event) {
|
||||||
|
let playlist = document.querySelector('#playlist').value;
|
||||||
|
document.cookie = "playlist=" + playlist;
|
||||||
|
}
|
||||||
|
|
||||||
function clear_tracks() {
|
function clear_tracks() {
|
||||||
let tracks = document.querySelector('#track_list');
|
let tracks = document.querySelector('#track_list');
|
||||||
while (tracks.firstChild) {
|
while (tracks.firstChild) {
|
||||||
|
@ -30,8 +30,11 @@
|
|||||||
<div id="settings">
|
<div id="settings">
|
||||||
<div>
|
<div>
|
||||||
<label for="playlist-select">Playlist:</label>
|
<label for="playlist-select">Playlist:</label>
|
||||||
<select id="playlist-select">
|
<select id="playlist-select" onchange="select_playlist(event)">
|
||||||
<option>All Tracks</option>
|
<option value="">All Tracks</option>
|
||||||
|
{% for playlist in playlists %}
|
||||||
|
<option value="{{ playlist }}"{% if playlist == request.cookies.get('playlist') %} selected{% endif %}>{{ playlist }}</option>
|
||||||
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user