using System.Text; using Windows.Media.Control; Console.OutputEncoding = Encoding.UTF8; Console.Title = "MusicBridge Agent"; Console.WriteLine("Подключаемся к медиаплееру Windows..."); var manager = await GlobalSystemMediaTransportControlsSessionManager.RequestAsync(); while (true) { try { var session = manager.GetCurrentSession(); if (session is null) { Console.Clear(); Console.WriteLine("MUSICBRIDGE"); Console.WriteLine(); Console.WriteLine("Медиаплеер не найден."); Console.WriteLine("Включи музыку в браузере или приложении."); } else { var media = await session.TryGetMediaPropertiesAsync(); var playback = session.GetPlaybackInfo(); var timeline = session.GetTimelineProperties(); var position = timeline.Position; var updatedAt = timeline.LastUpdatedTime; var now = DateTimeOffset.UtcNow; if (playback.PlaybackStatus == GlobalSystemMediaTransportControlsSessionPlaybackStatus.Playing && updatedAt > DateTimeOffset.UnixEpoch && updatedAt <= now) { var elapsed = (now - updatedAt).TotalSeconds; var rate = playback.PlaybackRate ?? 1.0; position += TimeSpan.FromSeconds(elapsed * rate); } if (position < timeline.StartTime) position = timeline.StartTime; if (timeline.EndTime > timeline.StartTime && position > timeline.EndTime) position = timeline.EndTime; Console.Clear(); Console.WriteLine("MUSICBRIDGE"); Console.WriteLine(); Console.WriteLine($"Трек: {media.Title}"); Console.WriteLine($"Исполнитель: {media.Artist}"); Console.WriteLine($"Состояние: {playback.PlaybackStatus}"); Console.WriteLine($"Позиция: {FormatTime(position)}"); Console.WriteLine($"От плеера: {FormatTime(timeline.Position)}"); Console.WriteLine($"Обновлено: {updatedAt.ToLocalTime():HH:mm:ss}"); Console.WriteLine($"Конец трека: {FormatTime(timeline.EndTime)}"); Console.WriteLine($"Источник: {session.SourceAppUserModelId}"); } Console.WriteLine(); Console.WriteLine("Выход: Ctrl + C"); } catch (Exception ex) { Console.WriteLine($"Не удалось прочитать плеер: {ex.Message}"); } await Task.Delay(1000); } static string FormatTime(TimeSpan time) { return time.TotalHours >= 1 ? $"{(int)time.TotalHours}:{time.Minutes:00}:{time.Seconds:00}" : $"{(int)time.TotalMinutes}:{time.Seconds:00}"; }