feat(stations): кураторские логотипы по домену сайта (Comedy Radio)

StationLogos: карта домен -> URL логотипа для сетей без своего API обложек.
Comedy Radio (Comedy FM/Club/Spa, comedy-radio.ru) -> официальный apple-touch
логотип. Расширяемо по сетям.
This commit is contained in:
nk
2026-06-03 12:26:11 +03:00
parent ee689ce380
commit 5e22db5571
2 changed files with 28 additions and 1 deletions

View File

@@ -37,7 +37,7 @@ class LocalStationDataSource @Inject constructor(
name = dto.name, name = dto.name,
prefix = prefix, prefix = prefix,
streamUrl = dto.stream!!, streamUrl = dto.stream!!,
coverUrl = "", coverUrl = StationLogos.forSite(dto.site) ?: "",
genre = group?.name ?: "", genre = group?.name ?: "",
tags = listOfNotNull(group?.name?.takeIf { it.isNotBlank() }), tags = listOfNotNull(group?.name?.takeIf { it.isNotBlank() }),
sortOrder = dto.id, sortOrder = dto.id,

View File

@@ -0,0 +1,27 @@
package com.radiola.data.local
/**
* Кураторские логотипы станций по домену сайта — для сетей, у которых нет
* своего API обложек. Пополняется по мере проработки сетей.
* Ключ — хост сайта (без www), значение — прямой URL квадратного логотипа.
*/
object StationLogos {
private val byDomain: Map<String, String> = 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]
}
}