diff --git a/ui/src/podcast/PodcastList.jsx b/ui/src/podcast/PodcastList.jsx
index 144ef5b1c..d67984827 100644
--- a/ui/src/podcast/PodcastList.jsx
+++ b/ui/src/podcast/PodcastList.jsx
@@ -42,11 +42,18 @@ const PodcastFilter = (props) => (
)
+const bestImageUrl = (record, targetWidth) => {
+ if (!record.images || record.images.length === 0) return record.imageUrl
+ const sorted = [...record.images].sort((a, b) => a.width - b.width)
+ const best = sorted.find((img) => img.width >= targetWidth) || sorted[sorted.length - 1]
+ return best ? best.url : record.imageUrl
+}
+
const CoverArtField = ({ record }) => {
if (!record) return null
if (record.imageUrl) {
return (
-
+
)
}
return (
diff --git a/ui/src/podcast/PodcastShow.jsx b/ui/src/podcast/PodcastShow.jsx
index 1fbcaee89..6f98b4d5a 100644
--- a/ui/src/podcast/PodcastShow.jsx
+++ b/ui/src/podcast/PodcastShow.jsx
@@ -88,6 +88,11 @@ const useStyles = makeStyles((theme) => ({
tableWrapper: { marginTop: theme.spacing(2), overflowX: 'auto' },
}))
+const buildSrcSet = (images) => {
+ if (!images || images.length === 0) return undefined
+ return images.map((img) => `${img.url} ${img.width}w`).join(', ')
+}
+
const formatDuration = (seconds) => {
if (!seconds) return ''
const h = Math.floor(seconds / 3600)
@@ -153,6 +158,8 @@ const PodcastShow = (props) => {
{record.imageUrl ? (