diff --git a/static/js/audiobooks.js b/static/js/audiobooks.js
index 2fab3fd..29a3fca 100644
--- a/static/js/audiobooks.js
+++ b/static/js/audiobooks.js
@@ -503,6 +503,9 @@
if (box && fresh) box.innerHTML = fresh.innerHTML;
});
+ // Home's "Weiterhören" card (home.js) plays the book from where it was left.
+ window.__dioraAudiobookGo = feedId => goOn(feedId);
+
// ---- following the player ------------------------------------------------------------
let pollTimer = 0;
diff --git a/static/js/home.js b/static/js/home.js
index 712ad66..144764a 100644
--- a/static/js/home.js
+++ b/static/js/home.js
@@ -91,7 +91,7 @@
card = podCard('Läuft auf ' + (r.device || 'einem anderen Gerät'), r.title || '', r.feed || '', r.artwork || '',
r.dur ? (r.dur - (r.pos || 0)) / 1000 : 0, r.dur ? (r.pos || 0) / r.dur : 0,
'');
- } else if (player.kind === 'podcast') {
+ } else if (player.kind === 'podcast' && !player.book) { // an audiobook's chapter: under Hörbücher
const left = player.dur ? (player.dur - (player.pos || 0)) / 1000 : 0;
card = podCard(player.playing ? 'Läuft gerade' : 'Weiterhören', player.title, player.feed, player.artwork, left,
player.dur ? (player.pos || 0) / player.dur : 0,
@@ -239,6 +239,33 @@
// ---- page ---------------------------------------------------------------------
+ // ---- Hörbücher (static/js/audiobooks.js) -------------------------------------------
+
+ function audiobookSection() {
+ const h = podHost();
+ if (!h || !document.getElementById('tab-audiobooks') || !window.__dioraAudiobookGo) return '';
+ const player = h.playerState ? parse(h.playerState(), {}) || {} : {};
+ let books = [];
+ try { books = JSON.parse(localStorage.getItem('diora_ab_books') || '[]') || []; } catch (e) {}
+ let card;
+ if (player.kind === 'podcast' && player.book) {
+ const b = player.book;
+ const left = player.dur ? (player.dur - (player.pos || 0)) / 1000 : 0;
+ card = podCard((player.playing ? 'Läuft gerade' : 'Weiterhören') + ' · Kapitel ' + (b.index + 1) + '/' + b.chapters,
+ player.title, b.title || player.feed, player.artwork, left, player.dur ? (player.pos || 0) / player.dur : 0,
+ '');
+ } else {
+ const b = books.filter(x => x.next && x.last_played_at)[0];
+ if (!b) return '';
+ card = podCard('Weiterhören · Kapitel ' + (b.next.index + 1) + '/' + b.chapters, b.title, b.author || '',
+ b.artwork_url, b.total_seconds ? b.total_seconds - b.heard_seconds : 0,
+ b.total_seconds ? b.heard_seconds / b.total_seconds : 0,
+ '');
+ }
+ return section('Hörbücher', card, 'audiobooks');
+ }
+
function section(title, body, tabName) {
return '' + esc(title) + '
' +
'