Browse Source

Improve SpotifyGame (#1039)

* Initial commit

* Add TrackUrl

* Rename AlbumArt to AlbumArtUrl for consistency
tags/2.0
Still Hsu Christopher F 7 years ago
parent
commit
73dc884d47
3 changed files with 17 additions and 8 deletions
  1. +2
    -0
      src/Discord.Net.Core/CDN.cs
  2. +8
    -5
      src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs
  3. +7
    -3
      src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs

+ 2
- 0
src/Discord.Net.Core/CDN.cs View File

@@ -34,6 +34,8 @@ namespace Discord


public static string GetSpotifyAlbumArtUrl(string albumArtId) public static string GetSpotifyAlbumArtUrl(string albumArtId)
=> $"https://i.scdn.co/image/{albumArtId}"; => $"https://i.scdn.co/image/{albumArtId}";
public static string GetSpotifyDirectUrl(string trackId)
=> $"https://open.spotify.com/track/{trackId}";


private static string FormatToExtension(ImageFormat format, string imageId) private static string FormatToExtension(ImageFormat format, string imageId)
{ {


+ 8
- 5
src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs View File

@@ -7,17 +7,20 @@ namespace Discord
[DebuggerDisplay(@"{DebuggerDisplay,nq}")] [DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class SpotifyGame : Game public class SpotifyGame : Game
{ {
public IEnumerable<string> Artists { get; internal set; }
public string AlbumArt { get; internal set; }
public IReadOnlyCollection<string> Artists { get; internal set; }
public string AlbumTitle { get; internal set; } public string AlbumTitle { get; internal set; }
public string TrackTitle { get; internal set; } public string TrackTitle { get; internal set; }
public string SyncId { get; internal set; }
public string SessionId { get; internal set; }
public TimeSpan? Duration { get; internal set; } public TimeSpan? Duration { get; internal set; }


public string TrackId { get; internal set; }
public string SessionId { get; internal set; }

public string AlbumArtUrl { get; internal set; }
public string TrackUrl { get; internal set; }

internal SpotifyGame() { } internal SpotifyGame() { }


public override string ToString() => Name;
public override string ToString() => $"{string.Join(", ", Artists)} - {TrackTitle} ({Duration})";
private string DebuggerDisplay => $"{Name} (Spotify)"; private string DebuggerDisplay => $"{Name} (Spotify)";
} }
} }

+ 7
- 3
src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs View File

@@ -1,3 +1,6 @@
using System.Collections.Immutable;
using System.Linq;

namespace Discord.WebSocket namespace Discord.WebSocket
{ {
internal static class EntityExtensions internal static class EntityExtensions
@@ -15,12 +18,13 @@ namespace Discord.WebSocket
{ {
Name = model.Name, Name = model.Name,
SessionId = model.SessionId.GetValueOrDefault(), SessionId = model.SessionId.GetValueOrDefault(),
SyncId = model.SyncId.Value,
TrackId = model.SyncId.Value,
TrackUrl = CDN.GetSpotifyDirectUrl(model.SyncId.Value),
AlbumTitle = albumText, AlbumTitle = albumText,
TrackTitle = model.Details.GetValueOrDefault(), TrackTitle = model.Details.GetValueOrDefault(),
Artists = model.State.GetValueOrDefault()?.Split(';'),
Artists = model.State.GetValueOrDefault()?.Split(';').Select(x=>x?.Trim()).ToImmutableArray(),
Duration = timestamps?.End - timestamps?.Start, Duration = timestamps?.End - timestamps?.Start,
AlbumArt = albumArtId != null ? CDN.GetSpotifyAlbumArtUrl(albumArtId) : null,
AlbumArtUrl = albumArtId != null ? CDN.GetSpotifyAlbumArtUrl(albumArtId) : null,
Type = ActivityType.Listening Type = ActivityType.Listening
}; };
} }


Loading…
Cancel
Save