В разделе Romantika были только саб-каналы (Piano Covers, Love Songs, Акустика, Прикосновение, Easy Listening), а главный «Romantika» (711) был отключён — мёртвый поток srv21.gpmradio (и в offline-ids бэкенда). Включил главный на рабочем HLS (hls-01-gpm.hostingradio.ru/romantika495) + фирменный логотип Романтики (применяется ко всем каналам сети). Прод-БД: 711 → online. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
59 lines
2.6 KiB
Kotlin
59 lines
2.6 KiB
Kotlin
package com.radiola.data.local
|
||
|
||
/**
|
||
* Кураторские логотипы станций по домену сайта — для сетей, у которых нет
|
||
* своего API обложек. Пополняется по мере проработки сетей.
|
||
* Ключ — хост сайта (без www), значение — прямой URL квадратного логотипа.
|
||
*/
|
||
object StationLogos {
|
||
|
||
// Локальные обложки в ресурсах (res/drawable) — ключ: имя станции в нижнем регистре.
|
||
private fun res(name: String) = "android.resource://com.radiola/drawable/$name"
|
||
|
||
// Логотипы каналов Love Radio (сгенерены из их SVG на фирменном цвете, захостены у нас)
|
||
private fun love(id: Int) = "http://121.127.37.212:3000/covers/love_${id}_s.webp"
|
||
|
||
private val byName: Map<String, String> = mapOf(
|
||
"comedy fm" to res("cover_comedy_fm"),
|
||
"comedy spa" to res("cover_comedy_spa"),
|
||
"standup" to res("cover_standup"),
|
||
"женский standup" to res("cover_standup_women"),
|
||
"love radio" to love(28),
|
||
"love rnb" to love(2),
|
||
"love top40" to love(3),
|
||
"love dance" to love(4),
|
||
"love chill" to love(5),
|
||
"love gold" to love(6),
|
||
"love russian" to love(7),
|
||
"love kpop" to love(10),
|
||
"love power" to love(11),
|
||
"love summer" to love(1),
|
||
)
|
||
|
||
private val byDomain: Map<String, String> = mapOf(
|
||
// Comedy Radio (Comedy Club и пр.) — платформа 101.ru
|
||
"comedy-radio.ru" to "https://comedy-radio.ru/design/images/logo/apple-touch-icon-180.png?v=2",
|
||
// Like FM (GPM Radio)
|
||
"likefm.ru" to "https://www.likefm.ru/apple-touch-icon.png",
|
||
// Радио Романтика (GPM Radio)
|
||
"radioromantika.ru" to "https://radioromantika.ru/design/images/new_romantika_images/img_for_design/icons/touch-icon-iphone-retina.png",
|
||
)
|
||
|
||
/** Обложка по точному имени станции, либо null. */
|
||
fun forName(name: String?): String? =
|
||
name?.trim()?.lowercase()?.let { byName[it] }
|
||
|
||
/** Логотип станции по её сайту, либо null. */
|
||
fun forSite(site: String?): String? {
|
||
val host = site
|
||
?.substringAfter("://", site)
|
||
?.removePrefix("www.")
|
||
?.substringBefore("/")
|
||
?.trim()
|
||
?.lowercase()
|
||
?.takeIf { it.isNotEmpty() }
|
||
?: return null
|
||
return byDomain[host]
|
||
}
|
||
}
|