Web UI: podcasts, radio, shares, bookmarks pages; admin podcast/jukebox management; per-user Subsonic permission editor

This commit is contained in:
2026-08-23 00:34:58 -05:00
parent 2e222bd193
commit f1fdd8d2c2
21 changed files with 688 additions and 9 deletions
+10 -7
View File
@@ -72,6 +72,12 @@ func Open(cfg config.Config, log *slog.Logger) (*App, error) {
return nil, fmt.Errorf("deriving auth encryption key: %w", err)
}
podcastMgr := podcasts.NewManager(db, cfg.DataDir, cfg.FFprobePath, log)
if err := podcastMgr.RecoverInterruptedDownloads(); err != nil {
log.Warn("podcast download recovery failed", "err", err)
}
jukeboxCtl := jukebox.New(cfg.MPVPath)
webApp := &web.Web{
DB: db,
Config: cfg,
@@ -81,14 +87,11 @@ func Open(cfg config.Config, log *slog.Logger) (*App, error) {
Scanner: sc,
CoverArt: covers,
EncryptionKey: encryptionKey,
Podcasts: podcastMgr,
Jukebox: jukeboxCtl,
Log: log,
}
podcastMgr := podcasts.NewManager(db, cfg.DataDir, cfg.FFprobePath, log)
if err := podcastMgr.RecoverInterruptedDownloads(); err != nil {
log.Warn("podcast download recovery failed", "err", err)
}
subsonicSrv := &subsonic.Server{
DB: db,
Config: cfg,
@@ -97,7 +100,7 @@ func Open(cfg config.Config, log *slog.Logger) (*App, error) {
CoverArt: covers,
Transcoder: transcoding.NewManager(cfg.FFmpegPath),
Podcasts: podcastMgr,
Jukebox: jukebox.New(cfg.MPVPath),
Jukebox: jukeboxCtl,
Log: log,
}
@@ -105,7 +108,7 @@ func Open(cfg config.Config, log *slog.Logger) (*App, error) {
}
func (a *App) Close() error {
a.Subsonic.Jukebox.Close()
a.Web.Jukebox.Close()
return a.DB.Close()
}