feat(love): воспроизведение Love Radio через сессионный UID + now-playing главного
Потоки Love защищены: клиент берёт UID из их player/config (со своего IP) и подставляет в n340-поток — играет музыка. LoveStreamResolver + LoveApi. Каталог переведён на n340. Now-playing главного Love Radio по ICY; саб-каналы трек не отдают нигде — показываем без трека. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -35,7 +35,8 @@ class PlayerViewModel @Inject constructor(
|
||||
private val trackHistoryRepository: TrackHistoryRepository,
|
||||
private val settingsRepository: SettingsRepository,
|
||||
private val recordingRepository: RecordingRepository,
|
||||
private val pushHistoryUseCase: PushHistoryUseCase
|
||||
private val pushHistoryUseCase: PushHistoryUseCase,
|
||||
private val loveStreamResolver: com.radiola.data.remote.LoveStreamResolver
|
||||
) : ViewModel() {
|
||||
|
||||
val isPlaying: StateFlow<Boolean> = playerController.isPlaying
|
||||
@@ -85,7 +86,12 @@ class PlayerViewModel @Inject constructor(
|
||||
_currentStation.value = station
|
||||
_currentTrack.value = null
|
||||
_playlist.value = playlist ?: _stations.value
|
||||
playerController.play(station.streamUrl, station.prefix, station.name)
|
||||
// Love Radio: подставляем сессионный UID (иначе поток отдаёт заглушку).
|
||||
// Для остальных resolve вернёт URL как есть.
|
||||
viewModelScope.launch {
|
||||
val url = loveStreamResolver.resolve(station.streamUrl)
|
||||
playerController.play(url, station.prefix, station.name)
|
||||
}
|
||||
viewModelScope.launch { pushHistoryUseCase(station.id) }
|
||||
nowPlayingJob?.cancel()
|
||||
nowPlayingJob = viewModelScope.launch {
|
||||
|
||||
Reference in New Issue
Block a user