Browse Source

Add album art CDN

pull/970/head
Hsu Still 7 years ago
parent
commit
f075b3ef5e
2 changed files with 12 additions and 6 deletions
  1. +3
    -2
      src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs
  2. +9
    -4
      src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs

+ 3
- 2
src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs View File

@@ -9,11 +9,12 @@ namespace Discord
{ {
internal SpotifyGame() { } 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 TrackTitle { get; internal set; }
public string TrackAlbum { get; internal set; }
public string SyncId { get; internal set; } public string SyncId { get; internal set; }
public string SessionId { get; internal set; } public string SessionId { get; internal set; }
public string[] Artists { get; internal set; }
public TimeSpan? Duration { get; internal set; } public TimeSpan? Duration { get; internal set; }


public override string ToString() => Name; public override string ToString() => Name;


+ 9
- 4
src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs View File

@@ -8,16 +8,19 @@ namespace Discord.WebSocket
if (model.SyncId.IsSpecified) if (model.SyncId.IsSpecified)
{ {
var assets = model.Assets.GetValueOrDefault()?.ToEntity(); 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; var timestamps = model.Timestamps.IsSpecified ? model.Timestamps.Value.ToEntity() : null;
return new SpotifyGame return new SpotifyGame
{ {
Name = model.Name, Name = model.Name,
SessionId = model.SessionId.GetValueOrDefault(), SessionId = model.SessionId.GetValueOrDefault(),
SyncId = model.SyncId.Value, SyncId = model.SyncId.Value,
TrackAlbum = assets?[1]?.Text,
AlbumTitle = albumText,
TrackTitle = model.Details.GetValueOrDefault(), TrackTitle = model.Details.GetValueOrDefault(),
Artists = model.State.GetValueOrDefault()?.Split(';'), 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) if (model.ApplicationId.IsSpecified)
{ {
ulong appId = model.ApplicationId.Value; ulong appId = model.ApplicationId.Value;
var assets = model.Assets.GetValueOrDefault()?.ToEntity();
var assets = model.Assets.GetValueOrDefault()?.ToEntity(appId);
return new RichGame return new RichGame
{ {
ApplicationId = appId, ApplicationId = appId,
@@ -51,17 +54,19 @@ namespace Discord.WebSocket
} }


// (Small, Large) // (Small, Large)
public static GameAsset[] ToEntity(this API.GameAssets model)
public static GameAsset[] ToEntity(this API.GameAssets model, ulong appId = 0)
{ {
return new GameAsset[] return new GameAsset[]
{ {
model.SmallImage.IsSpecified ? new GameAsset model.SmallImage.IsSpecified ? new GameAsset
{ {
ApplicationId = appId,
ImageId = model.SmallImage.GetValueOrDefault(), ImageId = model.SmallImage.GetValueOrDefault(),
Text = model.SmallText.GetValueOrDefault() Text = model.SmallText.GetValueOrDefault()
} : null, } : null,
model.LargeImage.IsSpecified ? new GameAsset model.LargeImage.IsSpecified ? new GameAsset
{ {
ApplicationId = appId,
ImageId = model.LargeImage.GetValueOrDefault(), ImageId = model.LargeImage.GetValueOrDefault(),
Text = model.LargeText.GetValueOrDefault() Text = model.LargeText.GetValueOrDefault()
} : null, } : null,


Loading…
Cancel
Save