From f075b3ef5e487a9c23aeed3aaad8a78ece2892bd Mon Sep 17 00:00:00 2001 From: Hsu Still <341464@gmail.com> Date: Sat, 3 Mar 2018 01:59:52 +0800 Subject: [PATCH] Add album art CDN --- .../Entities/Activities/SpotifyGame.cs | 5 +++-- .../Extensions/EntityExtensions.cs | 13 +++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs b/src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs index 7334a2adf..c13c7ac20 100644 --- a/src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs +++ b/src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs @@ -9,11 +9,12 @@ namespace Discord { internal SpotifyGame() { } + public string[] Artists { get; internal set; } + public string AlbumArt { get; internal set; } + public string AlbumTitle { get; internal set; } public string TrackTitle { get; internal set; } - public string TrackAlbum { get; internal set; } public string SyncId { get; internal set; } public string SessionId { get; internal set; } - public string[] Artists { get; internal set; } public TimeSpan? Duration { get; internal set; } public override string ToString() => Name; diff --git a/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs b/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs index 7cddfb667..d326beffc 100644 --- a/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs +++ b/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs @@ -8,16 +8,19 @@ namespace Discord.WebSocket if (model.SyncId.IsSpecified) { var assets = model.Assets.GetValueOrDefault()?.ToEntity(); + string albumText = assets?[1]?.Text; + string albumArtId = assets?[1]?.ImageId?.Replace("spotify:",""); var timestamps = model.Timestamps.IsSpecified ? model.Timestamps.Value.ToEntity() : null; return new SpotifyGame { Name = model.Name, SessionId = model.SessionId.GetValueOrDefault(), SyncId = model.SyncId.Value, - TrackAlbum = assets?[1]?.Text, + AlbumTitle = albumText, TrackTitle = model.Details.GetValueOrDefault(), Artists = model.State.GetValueOrDefault()?.Split(';'), - Duration = timestamps?.End - timestamps?.Start + Duration = timestamps?.End - timestamps?.Start, + AlbumArt = albumArtId != null ? $"https://i.scdn.co/image/{albumArtId}" : null , }; } @@ -25,7 +28,7 @@ namespace Discord.WebSocket if (model.ApplicationId.IsSpecified) { ulong appId = model.ApplicationId.Value; - var assets = model.Assets.GetValueOrDefault()?.ToEntity(); + var assets = model.Assets.GetValueOrDefault()?.ToEntity(appId); return new RichGame { ApplicationId = appId, @@ -51,17 +54,19 @@ namespace Discord.WebSocket } // (Small, Large) - public static GameAsset[] ToEntity(this API.GameAssets model) + public static GameAsset[] ToEntity(this API.GameAssets model, ulong appId = 0) { return new GameAsset[] { model.SmallImage.IsSpecified ? new GameAsset { + ApplicationId = appId, ImageId = model.SmallImage.GetValueOrDefault(), Text = model.SmallText.GetValueOrDefault() } : null, model.LargeImage.IsSpecified ? new GameAsset { + ApplicationId = appId, ImageId = model.LargeImage.GetValueOrDefault(), Text = model.LargeText.GetValueOrDefault() } : null,