* Initial commit * Add TrackUrl * Rename AlbumArt to AlbumArtUrl for consistencytags/2.0
| @@ -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) | ||||
| { | { | ||||
| @@ -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)"; | ||||
| } | } | ||||
| } | } | ||||
| @@ -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 | ||||
| }; | }; | ||||
| } | } | ||||