feat(stations): кураторские логотипы по домену сайта (Comedy Radio)
StationLogos: карта домен -> URL логотипа для сетей без своего API обложек. Comedy Radio (Comedy FM/Club/Spa, comedy-radio.ru) -> официальный apple-touch логотип. Расширяемо по сетям.
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
27
app/src/main/java/com/radiola/data/local/StationLogos.kt
Normal file
27
app/src/main/java/com/radiola/data/local/StationLogos.kt
Normal 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]
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user