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
|
||||
|
||||
|
||||
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):
|
||||
"""Convert a filepath to a URL."""
|
||||
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)
|
||||
async def index(request: Request):
|
||||
artists = await db.get_artists(request)
|
||||
context = {'request': request, 'artists': artists}
|
||||
playlist_name = request.cookies.get('playlist', '')
|
||||
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)
|
||||
|
||||
|
||||
@app.get("/rand_track/")
|
||||
async def get_rand_track(request: Request):
|
||||
async def get_rand_track(request: Request, playlist: str = ''):
|
||||
"""Return a random track."""
|
||||
track = await db.get_random_track(request)
|
||||
track = await db.get_random_track(request, playlist)
|
||||
return track
|
||||
|
||||
|
||||
@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."""
|
||||
albums = await db.get_albums(request, albumartist)
|
||||
albums = await db.get_albums(request, albumartist, playlist)
|
||||
return albums
|
||||
|
||||
|
||||
@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."""
|
||||
tracks = await db.get_tracks(request, albumartist, album, date)
|
||||
tracks = await db.get_tracks(request, albumartist, album, date, playlist)
|
||||
return tracks
|
||||
|
||||
|
||||
|
@ -41,16 +41,23 @@ function init() {
|
||||
}
|
||||
|
||||
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();
|
||||
return data;
|
||||
}
|
||||
|
||||
async function select_artist(event) {
|
||||
let artist = event.target.value;
|
||||
let playlist = document.querySelector('#playlist').value;
|
||||
|
||||
let q = new URLSearchParams();
|
||||
q.set('albumartist', artist);
|
||||
q.set('playlist', playlist);
|
||||
let res = await fetch("./albums/?" + q.toString());
|
||||
let data = await res.json();
|
||||
|
||||
@ -61,13 +68,13 @@ async function select_album(event) {
|
||||
let artist = document.querySelector('input[name=artist]:checked').value;
|
||||
let album = document.querySelector('input[name=album]:checked').value;
|
||||
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();
|
||||
q.set('albumartist', artist);
|
||||
q.set('album', album);
|
||||
q.set('date', date);
|
||||
//q.set('playlist_name', playlist);
|
||||
q.set('playlist', playlist);
|
||||
let res = await fetch("./tracks/?" + q.toString());
|
||||
let data = await res.json();
|
||||
|
||||
@ -127,6 +134,11 @@ function select_track(event) {
|
||||
playTrack();
|
||||
}
|
||||
|
||||
function select_playlist(event) {
|
||||
let playlist = document.querySelector('#playlist').value;
|
||||
document.cookie = "playlist=" + playlist;
|
||||
}
|
||||
|
||||
function clear_tracks() {
|
||||
let tracks = document.querySelector('#track_list');
|
||||
while (tracks.firstChild) {
|
||||
|
@ -30,8 +30,11 @@
|
||||
<div id="settings">
|
||||
<div>
|
||||
<label for="playlist-select">Playlist:</label>
|
||||
<select id="playlist-select">
|
||||
<option>All Tracks</option>
|
||||
<select id="playlist-select" onchange="select_playlist(event)">
|
||||
<option value="">All Tracks</option>
|
||||
{% for playlist in playlists %}
|
||||
<option value="{{ playlist }}"{% if playlist == request.cookies.get('playlist') %} selected{% endif %}>{{ playlist }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user