Files
radiola-android/app/src/main/java/com/radiola/data/remote/ApiMapper.kt
nk 2e970317f6 fix(stations): Record — звук на станциях с мёртвым stream_128 (Лето и др.)
У части станций Record поле stream_128 ведёт на мёртвый маунт {prefix}64.aacp
(404) — обложка/трек есть, а поток молчит (Summer Lounge, Beach Party, Reggae,
Mashup, Afro House, Nu Dance, Workout, Gop FM…). Поле stream_320 ({prefix}96.aacp)
живо у всех. Сменён приоритет выбора потока на stream_320.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 21:10:48 +03:00

39 lines
1.5 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.radiola.data.remote
import com.radiola.data.remote.dto.NowPlayingItemDto
import com.radiola.data.remote.dto.StationDto
import com.radiola.domain.model.Station
import com.radiola.domain.model.Track
object ApiMapper {
fun StationDto.toDomain(): Station {
val cover = iconFillColored ?: bgImageMobile ?: bgImage ?: ""
// ВНИМАНИЕ: поле stream_128 у части станций Record указывает на мёртвый
// маунт {prefix}64.aacp (404) — звука нет, хотя обложка/трек есть. Поле
// stream_320 (= {prefix}96.aacp) живо у ВСЕХ станций. Поэтому 320 первым.
val stream = stream320 ?: stream128 ?: streamHls ?: "https://air.radiorecord.ru:805/${prefix}_128"
return Station(
id = id,
name = name,
prefix = prefix,
streamUrl = stream,
coverUrl = cover,
genre = tooltip ?: "",
// Жанры-категории станции лежат в "genre"; "tags" обычно пуст. Берём
// оба, чтобы работали жанровые чипы Record (Лето и пр.).
tags = (genres + tags).map { it.name }.distinct(),
sortOrder = sort
)
}
fun NowPlayingItemDto.toDomain(): Track {
return Track(
artist = track.artist,
song = track.song,
coverUrl = track.image600 ?: track.image100,
stationName = ""
)
}
}