fix: sync oldTime when toggling audio, and debug messages

This commit is contained in:
trafficlunar 2026-03-13 19:03:11 +00:00
parent f8664bfea8
commit 2cdc4a92d4
2 changed files with 21 additions and 4 deletions

View file

@ -42,12 +42,18 @@ async function main() {
if (self.active) { if (self.active) {
player.stop(); player.stop();
} else { } else {
// Set volume
const oldVolume = player.currentVolume; const oldVolume = player.currentVolume;
Spicetify.Player.setVolume(0); // Set Spotify audio volume Spicetify.Player.setVolume(0); // Set Spotify audio volume
player.hijackActive.set(true); player.hijackActive.set(true);
Spicetify.Player.setVolume(oldVolume); // Hijack is active, set Jellyfin audio volume Spicetify.Player.setVolume(oldVolume); // Hijack is active, set Jellyfin audio volume
player.audio.currentTime = Spicetify.Player.getProgress() / 1000; // Sync position // Sync positions
const time = Spicetify.Player.getProgress();
player.audio.currentTime = time / 1000;
player.setOldTime(time);
// Play
if (Spicetify.Player.isPlaying()) player.audio.play(); if (Spicetify.Player.isPlaying()) player.audio.play();
} }
}, },

View file

@ -16,6 +16,11 @@ let currentItemId: string | null = null;
let oldTime = 0; let oldTime = 0;
let lastProgressReport = 0; let lastProgressReport = 0;
export function setOldTime(value: number) {
// no signal because we don't need to subscribe to it
oldTime = value;
}
const BITRATE_MAP: Record<string, string> = { const BITRATE_MAP: Record<string, string> = {
high: "320000", high: "320000",
medium: "256000", medium: "256000",
@ -55,7 +60,7 @@ export async function playTrack(id: string) {
}); });
audio.src = `${jellyfin.api.basePath}/Audio/${id}/universal?${params}`; audio.src = `${jellyfin.api.basePath}/Audio/${id}/universal?${params}`;
console.log("[Jellyfin]: Attempting to play:", audio.src); console.debug("[Jellyfin]: Attempting to play:", audio.src);
await audio.play(); await audio.play();
if (settings.reportPlayback) { if (settings.reportPlayback) {
@ -112,9 +117,13 @@ export function registerEvents() {
const results = new Fuse(list, { const results = new Fuse(list, {
keys: ["name", "artists"], keys: ["name", "artists"],
threshold: 0.5, threshold: 0.7,
}).search(`${trackName} ${artists}`); }).search(`${trackName} ${artists}`);
console.debug(`[Jellyfin]: Query is "${trackName} ${artists}"`);
console.debug("[Jellyfin]: Search list:", list);
console.debug("[Jellyfin]: Fuse search found:", results);
const track = results[0]?.item; const track = results[0]?.item;
if (!track) { if (!track) {
stop(); stop();
@ -173,7 +182,7 @@ export function registerEvents() {
return; return;
} }
console.log(event.data, oldTime); console.debug(`[Jellyfin]: Seek detected - onprogress reports ${event.data}, old time was ${oldTime}`);
audio.currentTime = event.data / 1000; audio.currentTime = event.data / 1000;
oldTime = event.data; oldTime = event.data;
@ -189,6 +198,8 @@ export function registerEvents() {
currentVolume = args[0]; currentVolume = args[0];
if (hijackActive.get()) { if (hijackActive.get()) {
console.debug("[Jellyfin]: Volume is", currentVolume);
audio.volume = Math.pow(currentVolume, 3) * 0.425; audio.volume = Math.pow(currentVolume, 3) * 0.425;
if (volumeSlider) volumeSlider.style.setProperty("--progress-bar-transform", `${currentVolume * 100}%`); if (volumeSlider) volumeSlider.style.setProperty("--progress-bar-transform", `${currentVolume * 100}%`);
if (volumeSliderInput) volumeSliderInput.value = currentVolume.toString(); if (volumeSliderInput) volumeSliderInput.value = currentVolume.toString();