add: show metadata, streams, and clock-time ETA in status UI

Surface the fetched job metadata (show/episode or movie title, season,
episode, release/airdate, media type) and the source audio/subtitle streams
through the tracker and /status, and render them in the dashboard's current-job
card. Audio channel counts are now probed and shown as 5.1/2.0/etc.

ETA now reads as a wall-clock finish time plus remaining duration, e.g.
"17:49 (3h52m)". Recent events drop the per-row date for a WhatsApp-style
Today/Yesterday/date divider with time-only rows. All dynamic strings are
HTML-escaped, since metadata and filenames are user-controlled.
This commit is contained in:
Esa Kataja
2026-06-21 18:23:36 +03:00
parent d38c3ad568
commit 35193c695e
4 changed files with 185 additions and 12 deletions
+3
View File
@@ -45,6 +45,7 @@ type StreamMetadata struct {
Index int `json:"index"`
CodecType string `json:"codec_type"`
CodecName string `json:"codec_name"`
Channels int `json:"channels"`
Language string `json:"tags"`
Title string `json:"title"`
}
@@ -177,6 +178,7 @@ func (e *Encoder) GetStreamLanguages(ctx context.Context, path string) ([]Stream
Index int `json:"index"`
CodecType string `json:"codec_type"`
CodecName string `json:"codec_name"`
Channels int `json:"channels"`
Tags map[string]string `json:"tags"`
} `json:"streams"`
}
@@ -196,6 +198,7 @@ func (e *Encoder) GetStreamLanguages(ctx context.Context, path string) ([]Stream
Index: s.Index,
CodecType: s.CodecType,
CodecName: s.CodecName,
Channels: s.Channels,
Language: lang,
Title: title,
})