Fix metadata agent and player relative paths
This commit is contained in:
@@ -323,7 +323,11 @@ tr:hover td { background: var(--bg-hover); }
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
const API = '/api';
|
// Derive API base from current page path so it works behind any reverse-proxy prefix
|
||||||
|
// e.g. page at "/admin" or "/admin/" → API = "/admin/api"
|
||||||
|
// e.g. page at "/" → API = "/api"
|
||||||
|
const _base = location.pathname.replace(/\/+$/, '');
|
||||||
|
const API = _base + '/api';
|
||||||
let currentTab = 'queue';
|
let currentTab = 'queue';
|
||||||
let currentFilter = null;
|
let currentFilter = null;
|
||||||
|
|
||||||
|
|||||||
@@ -250,8 +250,10 @@ audio.addEventListener('pause', () => document.getElementById('btnPlayPause').in
|
|||||||
audio.addEventListener('error', () => { showToast('Playback error'); nextTrack(); });
|
audio.addEventListener('error', () => { showToast('Playback error'); nextTrack(); });
|
||||||
|
|
||||||
// --- API helper ---
|
// --- API helper ---
|
||||||
|
const _base = location.pathname.replace(/\/+$/, '');
|
||||||
|
const API = _base + '/api';
|
||||||
async function api(path) {
|
async function api(path) {
|
||||||
const r = await fetch('/api' + path);
|
const r = await fetch(API + path);
|
||||||
if (!r.ok) return null;
|
if (!r.ok) return null;
|
||||||
return r.json();
|
return r.json();
|
||||||
}
|
}
|
||||||
@@ -323,7 +325,7 @@ async function showAlbumTracks(albumSlug, albumName, artistSlug, artistName) {
|
|||||||
allBtn.onclick = () => addAlbumToQueue(albumSlug, true);
|
allBtn.onclick = () => addAlbumToQueue(albumSlug, true);
|
||||||
el.appendChild(allBtn);
|
el.appendChild(allBtn);
|
||||||
|
|
||||||
const coverUrl = '/api/albums/' + albumSlug + '/cover';
|
const coverUrl = API + '/albums/' + albumSlug + '/cover';
|
||||||
|
|
||||||
tracks.forEach(t => {
|
tracks.forEach(t => {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
@@ -392,7 +394,7 @@ function playIndex(i) {
|
|||||||
if (i < 0 || i >= queue.length) return;
|
if (i < 0 || i >= queue.length) return;
|
||||||
queueIndex = i;
|
queueIndex = i;
|
||||||
const track = queue[i];
|
const track = queue[i];
|
||||||
audio.src = '/api/stream/' + track.slug;
|
audio.src = API + '/stream/' + track.slug;
|
||||||
audio.play().catch(() => {});
|
audio.play().catch(() => {});
|
||||||
updateNowPlaying(track);
|
updateNowPlaying(track);
|
||||||
renderQueue();
|
renderQueue();
|
||||||
@@ -407,7 +409,7 @@ function updateNowPlaying(track) {
|
|||||||
document.title = track.title + ' \u2014 Furumi';
|
document.title = track.title + ' \u2014 Furumi';
|
||||||
|
|
||||||
const cover = document.getElementById('npCover');
|
const cover = document.getElementById('npCover');
|
||||||
const coverUrl = '/api/tracks/' + track.slug + '/cover';
|
const coverUrl = API + '/tracks/' + track.slug + '/cover';
|
||||||
cover.innerHTML = `<img src="${coverUrl}" alt="" onerror="this.parentElement.innerHTML='🎵'">`;
|
cover.innerHTML = `<img src="${coverUrl}" alt="" onerror="this.parentElement.innerHTML='🎵'">`;
|
||||||
|
|
||||||
if ('mediaSession' in navigator) {
|
if ('mediaSession' in navigator) {
|
||||||
@@ -434,7 +436,7 @@ function renderQueue() {
|
|||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.className = 'queue-item' + (isPlaying ? ' playing' : '');
|
div.className = 'queue-item' + (isPlaying ? ' playing' : '');
|
||||||
|
|
||||||
const coverSrc = t.album_slug ? `/api/tracks/${t.slug}/cover` : '';
|
const coverSrc = t.album_slug ? `${API}/tracks/${t.slug}/cover` : '';
|
||||||
const coverHtml = coverSrc
|
const coverHtml = coverSrc
|
||||||
? `<img src="${coverSrc}" alt="" onerror="this.parentElement.innerHTML='🎵'">`
|
? `<img src="${coverSrc}" alt="" onerror="this.parentElement.innerHTML='🎵'">`
|
||||||
: '🎵';
|
: '🎵';
|
||||||
|
|||||||
Reference in New Issue
Block a user