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] + } +}