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