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