From 5e22db5571b7d61e4e9bddf0c833b1fa3d5e36a1 Mon Sep 17 00:00:00 2001 From: nk Date: Wed, 3 Jun 2026 12:26:11 +0300 Subject: [PATCH] =?UTF-8?q?feat(stations):=20=D0=BA=D1=83=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D1=81=D0=BA=D0=B8=D0=B5=20=D0=BB=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=D1=82=D0=B8=D0=BF=D1=8B=20=D0=BF=D0=BE=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=83=20=D1=81=D0=B0=D0=B9=D1=82=D0=B0=20(Co?= =?UTF-8?q?medy=20Radio)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit StationLogos: карта домен -> URL логотипа для сетей без своего API обложек. Comedy Radio (Comedy FM/Club/Spa, comedy-radio.ru) -> официальный apple-touch логотип. Расширяемо по сетям. --- .../data/local/LocalStationDataSource.kt | 2 +- .../com/radiola/data/local/StationLogos.kt | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/radiola/data/local/StationLogos.kt diff --git a/app/src/main/java/com/radiola/data/local/LocalStationDataSource.kt b/app/src/main/java/com/radiola/data/local/LocalStationDataSource.kt index 03a35c6..2994ef2 100644 --- a/app/src/main/java/com/radiola/data/local/LocalStationDataSource.kt +++ b/app/src/main/java/com/radiola/data/local/LocalStationDataSource.kt @@ -37,7 +37,7 @@ class LocalStationDataSource @Inject constructor( name = dto.name, prefix = prefix, streamUrl = dto.stream!!, - coverUrl = "", + coverUrl = StationLogos.forSite(dto.site) ?: "", genre = group?.name ?: "", tags = listOfNotNull(group?.name?.takeIf { it.isNotBlank() }), sortOrder = dto.id, diff --git a/app/src/main/java/com/radiola/data/local/StationLogos.kt b/app/src/main/java/com/radiola/data/local/StationLogos.kt new file mode 100644 index 0000000..7eab28b --- /dev/null +++ b/app/src/main/java/com/radiola/data/local/StationLogos.kt @@ -0,0 +1,27 @@ +package com.radiola.data.local + +/** + * Кураторские логотипы станций по домену сайта — для сетей, у которых нет + * своего API обложек. Пополняется по мере проработки сетей. + * Ключ — хост сайта (без www), значение — прямой URL квадратного логотипа. + */ +object StationLogos { + + private val byDomain: Map = mapOf( + // Comedy Radio (Comedy FM / Comedy Club / Comedy Spa) — платформа 101.ru + "comedy-radio.ru" to "https://comedy-radio.ru/design/images/logo/apple-touch-icon-180.png?v=2", + ) + + /** Логотип станции по её сайту, либо null. */ + fun forSite(site: String?): String? { + val host = site + ?.substringAfter("://", site) + ?.removePrefix("www.") + ?.substringBefore("/") + ?.trim() + ?.lowercase() + ?.takeIf { it.isNotEmpty() } + ?: return null + return byDomain[host] + } +}