chore: init commit from GitHub
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using SWAD.API.Services.MusicAPI.Auth;
|
||||
|
||||
namespace SWAD.API.Models.JsonStructures.MusicAPI;
|
||||
|
||||
public abstract class DefaultAuthResponse : IAuthResponse
|
||||
{
|
||||
private int? _expire;
|
||||
private DateTime? _revokedAt;
|
||||
|
||||
[JsonPropertyName("access_token")]
|
||||
|
||||
// ReSharper disable once NullableWarningSuppressionIsUsed
|
||||
public string Token { get; set; } = null!;
|
||||
|
||||
[JsonPropertyName("expires_in")]
|
||||
public int? ExpireTime
|
||||
{
|
||||
get => _expire;
|
||||
set
|
||||
{
|
||||
_expire = value;
|
||||
_revokedAt = DateTime.UtcNow;
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime? ExpireAt => _revokedAt?.AddSeconds(ExpireTime ?? 0);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace SWAD.API.Models.JsonStructures.MusicAPI.Spotify;
|
||||
|
||||
/// <summary>
|
||||
/// Json Structure for spotify auth response
|
||||
/// </summary>
|
||||
public class SpotifyAuthResponse : DefaultAuthResponse;
|
||||
@@ -0,0 +1,31 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace SWAD.API.Models.JsonStructures.MusicAPI.Spotify;
|
||||
|
||||
/// <summary>
|
||||
/// Json Structure for spotify search response
|
||||
/// </summary>
|
||||
internal class SpotifySearchResponse
|
||||
{
|
||||
// ReSharper disable NullableWarningSuppressionIsUsed
|
||||
[JsonPropertyName("tracks")] public TrackList Tracks { get; set; } = null!;
|
||||
|
||||
public class TrackList
|
||||
{
|
||||
[JsonPropertyName("items")] public List<Item> Items { get; set; } = null!;
|
||||
}
|
||||
|
||||
public class ExternalUrls
|
||||
{
|
||||
[JsonPropertyName("spotify")] public string Spotify { get; set; } = null!;
|
||||
}
|
||||
|
||||
public class Item
|
||||
{
|
||||
[JsonPropertyName("href")] public string? Href { get; set; } = null!;
|
||||
|
||||
[JsonPropertyName("id")] public string? Id { get; set; } = null!;
|
||||
|
||||
[JsonPropertyName("external_urls")] public ExternalUrls ExternalUrls { get; set; } = null!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace SWAD.API.Models.JsonStructures.MusicAPI.Spotify;
|
||||
|
||||
/// <summary>
|
||||
/// Json Structure for tidal track response
|
||||
/// </summary>
|
||||
public class SpotifyTrackResponse
|
||||
{
|
||||
// ReSharper disable NullableWarningSuppressionIsUsed
|
||||
[JsonPropertyName("name")] public string Name { get; set; } = null!;
|
||||
|
||||
[JsonPropertyName("artists")] public Artist[] Artists { get; set; } = null!;
|
||||
|
||||
[JsonPropertyName("album")] public Album Albums { get; set; } = null!;
|
||||
|
||||
public class Artist
|
||||
{
|
||||
[JsonPropertyName("id")] public string Id { get; set; } = null!;
|
||||
|
||||
[JsonPropertyName("name")] public string Name { get; set; } = null!;
|
||||
}
|
||||
|
||||
public class Album
|
||||
{
|
||||
[JsonPropertyName("id")] public string Id { get; set; } = null!;
|
||||
|
||||
[JsonPropertyName("name")] public string Name { get; set; } = null!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
// ReSharper disable NullableWarningSuppressionIsUsed
|
||||
|
||||
namespace SWAD.API.Models.JsonStructures.MusicAPI.Tidal;
|
||||
|
||||
/// <summary>
|
||||
/// Json Structure for tidal track response
|
||||
/// </summary>
|
||||
public class TidalArtistResponse
|
||||
{
|
||||
[JsonPropertyName("data")] public DataObject Data { get; set; } = new();
|
||||
|
||||
public class DataObject
|
||||
{
|
||||
[JsonPropertyName("attributes")] public AttributesObject Attributes { get; set; } = new();
|
||||
|
||||
}
|
||||
|
||||
public class AttributesObject
|
||||
{
|
||||
[JsonPropertyName("name")] public string Name { get; set; } = null!;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
namespace SWAD.API.Models.JsonStructures.MusicAPI.Tidal;
|
||||
|
||||
public class TidalAuthResponse : DefaultAuthResponse;
|
||||
@@ -0,0 +1,15 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
// ReSharper disable NullableWarningSuppressionIsUsed
|
||||
|
||||
namespace SWAD.API.Models.JsonStructures.MusicAPI.Tidal;
|
||||
|
||||
internal class TidalSearchResponse
|
||||
{
|
||||
[JsonPropertyName("data")] public TidalTrackResponse.DataObject Data { get; set; } = null!;
|
||||
|
||||
public class Track
|
||||
{
|
||||
[JsonPropertyName("resource")] public TidalTrackResponse.DataObject DataObject { get; set; } = null!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
// ReSharper disable NullableWarningSuppressionIsUsed
|
||||
|
||||
namespace SWAD.API.Models.JsonStructures.MusicAPI.Tidal;
|
||||
|
||||
/// <summary>
|
||||
/// Json Structure for tidal track response
|
||||
/// </summary>
|
||||
public class TidalTrackResponse
|
||||
{
|
||||
[JsonPropertyName("data")] public DataObject Data { get; set; } = new();
|
||||
|
||||
public class DataObject
|
||||
{
|
||||
[JsonPropertyName("attributes")] public AttributesObject Attributes { get; set; } = new();
|
||||
[JsonPropertyName("relationships")] public RelationShipsObject RelationShips { get; set; } = new();
|
||||
|
||||
}
|
||||
|
||||
public class AttributesObject
|
||||
{
|
||||
[JsonPropertyName("title")] public string Title { get; set; } = null!;
|
||||
|
||||
}
|
||||
|
||||
public class RelationShipsObject
|
||||
{
|
||||
[JsonPropertyName("artists")] public ArtistObject Artist { get; set; } = null!;
|
||||
[JsonPropertyName("tracks")] public ArtistObject Track { get; set; } = null!;
|
||||
}
|
||||
|
||||
public class ArtistObject
|
||||
{
|
||||
[JsonPropertyName("data")] public List<ArtistDataObject> Data { get; set; } = null!;
|
||||
}
|
||||
|
||||
public class TrackObject
|
||||
{
|
||||
[JsonPropertyName("data")] public List<TrackDataObject> Data { get; set; } = null!;
|
||||
}
|
||||
|
||||
public class TrackDataObject
|
||||
{
|
||||
[JsonPropertyName("id")] public string Id { get; set; } = null!;
|
||||
}
|
||||
|
||||
|
||||
public class ArtistDataObject
|
||||
{
|
||||
[JsonPropertyName("id")] public string Id { get; set; } = null!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,268 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace SWAD.API.Models.JsonStructures.MusicAPI.Yandex;
|
||||
/*
|
||||
* ВНИМАНИЕ
|
||||
* Yandex API писали шизы поэтому когда будешь добавлять поля в YandexSearchResponse
|
||||
* ПОМНИ: ID у артистов и альбомов в разных местах JSON в одних и тех же объектах то string то number
|
||||
* ЭТО ВЫЗОВЕТ ИСКЛЮЧЕНИЕ
|
||||
* Думой
|
||||
*/
|
||||
public class YandexSearchResponse
|
||||
{
|
||||
[JsonPropertyName("status")]
|
||||
public string Status { get; set; }
|
||||
|
||||
[JsonPropertyName("entities")]
|
||||
public List<Entity> Entities { get; set; }
|
||||
}
|
||||
public class Album
|
||||
{
|
||||
[JsonPropertyName("title")]
|
||||
public string Title { get; set; }
|
||||
|
||||
[JsonPropertyName("year")]
|
||||
public int? Year { get; set; }
|
||||
|
||||
[JsonPropertyName("trackCount")]
|
||||
public int? TrackCount { get; set; }
|
||||
}
|
||||
|
||||
public class Album2
|
||||
{
|
||||
|
||||
[JsonPropertyName("title")]
|
||||
public string Title { get; set; }
|
||||
|
||||
[JsonPropertyName("year")]
|
||||
public int? Year { get; set; }
|
||||
|
||||
[JsonPropertyName("trackCount")]
|
||||
public int? TrackCount { get; set; }
|
||||
}
|
||||
|
||||
public class Artist
|
||||
{
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class Artist2
|
||||
{
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class Counts
|
||||
{
|
||||
[JsonPropertyName("tracks")]
|
||||
public int? Tracks { get; set; }
|
||||
|
||||
[JsonPropertyName("directAlbums")]
|
||||
public int? DirectAlbums { get; set; }
|
||||
|
||||
[JsonPropertyName("alsoAlbums")]
|
||||
public int? AlsoAlbums { get; set; }
|
||||
|
||||
[JsonPropertyName("alsoTracks")]
|
||||
public int? AlsoTracks { get; set; }
|
||||
}
|
||||
|
||||
public class Cover
|
||||
{
|
||||
[JsonPropertyName("type")]
|
||||
public string Type { get; set; }
|
||||
|
||||
[JsonPropertyName("prefix")]
|
||||
public string Prefix { get; set; }
|
||||
|
||||
[JsonPropertyName("uri")]
|
||||
public string Uri { get; set; }
|
||||
}
|
||||
|
||||
public class DerivedColors
|
||||
{
|
||||
[JsonPropertyName("average")]
|
||||
public string Average { get; set; }
|
||||
|
||||
[JsonPropertyName("waveText")]
|
||||
public string WaveText { get; set; }
|
||||
|
||||
[JsonPropertyName("miniPlayer")]
|
||||
public string MiniPlayer { get; set; }
|
||||
|
||||
[JsonPropertyName("accent")]
|
||||
public string Accent { get; set; }
|
||||
}
|
||||
|
||||
public class Entity
|
||||
{
|
||||
[JsonPropertyName("type")]
|
||||
public string Type { get; set; }
|
||||
|
||||
[JsonPropertyName("results")]
|
||||
public List<Result> Results { get; set; }
|
||||
}
|
||||
|
||||
public class Fade
|
||||
{
|
||||
[JsonPropertyName("inStart")]
|
||||
public double? InStart { get; set; }
|
||||
|
||||
[JsonPropertyName("inStop")]
|
||||
public double? InStop { get; set; }
|
||||
|
||||
[JsonPropertyName("outStart")]
|
||||
public double? OutStart { get; set; }
|
||||
|
||||
[JsonPropertyName("outStop")]
|
||||
public double? OutStop { get; set; }
|
||||
}
|
||||
|
||||
public class Label
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public int? Id { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class LyricsInfo
|
||||
{
|
||||
[JsonPropertyName("hasAvailableSyncLyrics")]
|
||||
public bool? HasAvailableSyncLyrics { get; set; }
|
||||
|
||||
[JsonPropertyName("hasAvailableTextLyrics")]
|
||||
public bool? HasAvailableTextLyrics { get; set; }
|
||||
}
|
||||
|
||||
public class Major
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public int? Id { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class R128
|
||||
{
|
||||
[JsonPropertyName("i")]
|
||||
public double? I { get; set; }
|
||||
|
||||
[JsonPropertyName("tp")]
|
||||
public double? Tp { get; set; }
|
||||
}
|
||||
|
||||
public class Ratings
|
||||
{
|
||||
[JsonPropertyName("month")]
|
||||
public int? Month { get; set; }
|
||||
}
|
||||
|
||||
public class Result
|
||||
{
|
||||
[JsonPropertyName("text")]
|
||||
public string Text { get; set; }
|
||||
|
||||
[JsonPropertyName("track")]
|
||||
public Track Track { get; set; }
|
||||
}
|
||||
|
||||
public class Track
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("realId")]
|
||||
public string RealId { get; set; }
|
||||
|
||||
[JsonPropertyName("title")]
|
||||
public string Title { get; set; }
|
||||
|
||||
[JsonPropertyName("version")]
|
||||
public string Version { get; set; }
|
||||
|
||||
[JsonPropertyName("trackSource")]
|
||||
public string TrackSource { get; set; }
|
||||
|
||||
[JsonPropertyName("major")]
|
||||
public Major Major { get; set; }
|
||||
|
||||
[JsonPropertyName("available")]
|
||||
public bool? Available { get; set; }
|
||||
|
||||
[JsonPropertyName("availableForPremiumUsers")]
|
||||
public bool? AvailableForPremiumUsers { get; set; }
|
||||
|
||||
[JsonPropertyName("availableFullWithoutPermission")]
|
||||
public bool? AvailableFullWithoutPermission { get; set; }
|
||||
|
||||
[JsonPropertyName("disclaimers")]
|
||||
public List<object> Disclaimers { get; set; }
|
||||
|
||||
[JsonPropertyName("availableForOptions")]
|
||||
public List<string> AvailableForOptions { get; set; }
|
||||
|
||||
[JsonPropertyName("albums")]
|
||||
public List<Album> Albums { get; set; }
|
||||
|
||||
[JsonPropertyName("durationMs")]
|
||||
public int? DurationMs { get; set; }
|
||||
|
||||
[JsonPropertyName("storageDir")]
|
||||
public string StorageDir { get; set; }
|
||||
|
||||
[JsonPropertyName("fileSize")]
|
||||
public int? FileSize { get; set; }
|
||||
|
||||
[JsonPropertyName("r128")]
|
||||
public R128 R128 { get; set; }
|
||||
|
||||
[JsonPropertyName("fade")]
|
||||
public Fade Fade { get; set; }
|
||||
|
||||
[JsonPropertyName("previewDurationMs")]
|
||||
public int? PreviewDurationMs { get; set; }
|
||||
|
||||
[JsonPropertyName("coverUri")]
|
||||
public string CoverUri { get; set; }
|
||||
|
||||
[JsonPropertyName("ogImage")]
|
||||
public string OgImage { get; set; }
|
||||
|
||||
[JsonPropertyName("lyricsAvailable")]
|
||||
public bool? LyricsAvailable { get; set; }
|
||||
|
||||
[JsonPropertyName("lyricsInfo")]
|
||||
public LyricsInfo LyricsInfo { get; set; }
|
||||
|
||||
[JsonPropertyName("derivedColors")]
|
||||
public DerivedColors DerivedColors { get; set; }
|
||||
|
||||
[JsonPropertyName("type")]
|
||||
public string Type { get; set; }
|
||||
|
||||
[JsonPropertyName("rememberPosition")]
|
||||
public bool? RememberPosition { get; set; }
|
||||
|
||||
[JsonPropertyName("trackSharingFlag")]
|
||||
public string TrackSharingFlag { get; set; }
|
||||
|
||||
[JsonPropertyName("contentWarning")]
|
||||
public string ContentWarning { get; set; }
|
||||
}
|
||||
|
||||
public class TrackPosition
|
||||
{
|
||||
[JsonPropertyName("volume")]
|
||||
public int? Volume { get; set; }
|
||||
|
||||
[JsonPropertyName("index")]
|
||||
public int? Index { get; set; }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,222 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace SWAD.API.Models.JsonStructures.MusicAPI.Yandex;
|
||||
|
||||
public class YandexTrackResponse
|
||||
{
|
||||
[JsonPropertyName("artists")]
|
||||
public List<Artist> Artists { get; set; }
|
||||
|
||||
[JsonPropertyName("track")] public Track Track { get; set; }
|
||||
|
||||
[JsonPropertyName("lyric")] public List<Lyric> Lyric { get; set; }
|
||||
}
|
||||
|
||||
public class AlsoInAlbum
|
||||
{
|
||||
[JsonPropertyName("id")] public int Id { get; set; }
|
||||
|
||||
[JsonPropertyName("title")] public string Title { get; set; }
|
||||
|
||||
[JsonPropertyName("metaType")] public string MetaType { get; set; }
|
||||
|
||||
[JsonPropertyName("contentWarning")] public string ContentWarning { get; set; }
|
||||
|
||||
[JsonPropertyName("year")] public int Year { get; set; }
|
||||
|
||||
[JsonPropertyName("releaseDate")] public DateTime ReleaseDate { get; set; }
|
||||
|
||||
[JsonPropertyName("coverUri")] public string CoverUri { get; set; }
|
||||
|
||||
[JsonPropertyName("ogImage")] public string OgImage { get; set; }
|
||||
|
||||
[JsonPropertyName("genre")] public string Genre { get; set; }
|
||||
|
||||
[JsonPropertyName("trackCount")] public int TrackCount { get; set; }
|
||||
|
||||
[JsonPropertyName("likesCount")] public int LikesCount { get; set; }
|
||||
|
||||
[JsonPropertyName("recent")] public bool Recent { get; set; }
|
||||
|
||||
[JsonPropertyName("veryImportant")] public bool VeryImportant { get; set; }
|
||||
|
||||
[JsonPropertyName("artists")] public List<Artist> Artists { get; set; }
|
||||
|
||||
[JsonPropertyName("labels")] public List<System.Reflection.Emit.Label> Labels { get; set; }
|
||||
|
||||
[JsonPropertyName("available")] public bool Available { get; set; }
|
||||
|
||||
[JsonPropertyName("availableForPremiumUsers")]
|
||||
public bool AvailableForPremiumUsers { get; set; }
|
||||
|
||||
[JsonPropertyName("availableForOptions")]
|
||||
public List<string> AvailableForOptions { get; set; }
|
||||
|
||||
[JsonPropertyName("availableForMobile")]
|
||||
public bool AvailableForMobile { get; set; }
|
||||
|
||||
[JsonPropertyName("availablePartially")]
|
||||
public bool AvailablePartially { get; set; }
|
||||
|
||||
[JsonPropertyName("bests")] public List<int> Bests { get; set; }
|
||||
|
||||
[JsonPropertyName("disclaimers")] public List<object> Disclaimers { get; set; }
|
||||
|
||||
[JsonPropertyName("trackPosition")] public TrackPosition TrackPosition { get; set; }
|
||||
}
|
||||
|
||||
public class Credit
|
||||
{
|
||||
[JsonPropertyName("title")] public string Title { get; set; }
|
||||
|
||||
[JsonPropertyName("value")] public string Value { get; set; }
|
||||
}
|
||||
|
||||
public class Link
|
||||
{
|
||||
[JsonPropertyName("title")] public string Title { get; set; }
|
||||
|
||||
[JsonPropertyName("href")] public string Href { get; set; }
|
||||
|
||||
[JsonPropertyName("type")] public string Type { get; set; }
|
||||
|
||||
[JsonPropertyName("socialNetwork")] public string SocialNetwork { get; set; }
|
||||
}
|
||||
|
||||
public class Live
|
||||
{
|
||||
[JsonPropertyName("id")] public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("realId")] public string RealId { get; set; }
|
||||
|
||||
[JsonPropertyName("title")] public string Title { get; set; }
|
||||
|
||||
[JsonPropertyName("version")] public string Version { get; set; }
|
||||
|
||||
[JsonPropertyName("contentWarning")] public string ContentWarning { get; set; }
|
||||
|
||||
[JsonPropertyName("major")] public Major Major { get; set; }
|
||||
|
||||
[JsonPropertyName("available")] public bool Available { get; set; }
|
||||
|
||||
[JsonPropertyName("availableForPremiumUsers")]
|
||||
public bool AvailableForPremiumUsers { get; set; }
|
||||
|
||||
[JsonPropertyName("availableFullWithoutPermission")]
|
||||
public bool AvailableFullWithoutPermission { get; set; }
|
||||
|
||||
[JsonPropertyName("availableForOptions")]
|
||||
public List<string> AvailableForOptions { get; set; }
|
||||
|
||||
[JsonPropertyName("disclaimers")] public List<object> Disclaimers { get; set; }
|
||||
|
||||
[JsonPropertyName("storageDir")] public string StorageDir { get; set; }
|
||||
|
||||
[JsonPropertyName("durationMs")] public int DurationMs { get; set; }
|
||||
|
||||
[JsonPropertyName("fileSize")] public int FileSize { get; set; }
|
||||
|
||||
[JsonPropertyName("r128")] public R128 R128 { get; set; }
|
||||
|
||||
[JsonPropertyName("fade")] public Fade Fade { get; set; }
|
||||
|
||||
[JsonPropertyName("previewDurationMs")]
|
||||
public int PreviewDurationMs { get; set; }
|
||||
|
||||
[JsonPropertyName("artists")] public List<Artist> Artists { get; set; }
|
||||
|
||||
[JsonPropertyName("albums")] public List<Album> Albums { get; set; }
|
||||
|
||||
[JsonPropertyName("coverUri")] public string CoverUri { get; set; }
|
||||
|
||||
[JsonPropertyName("derivedColors")] public DerivedColors DerivedColors { get; set; }
|
||||
|
||||
[JsonPropertyName("ogImage")] public string OgImage { get; set; }
|
||||
|
||||
[JsonPropertyName("lyricsAvailable")] public bool LyricsAvailable { get; set; }
|
||||
|
||||
[JsonPropertyName("type")] public string Type { get; set; }
|
||||
|
||||
[JsonPropertyName("rememberPosition")] public bool RememberPosition { get; set; }
|
||||
|
||||
[JsonPropertyName("trackSharingFlag")] public string TrackSharingFlag { get; set; }
|
||||
|
||||
[JsonPropertyName("lyricsInfo")] public LyricsInfo LyricsInfo { get; set; }
|
||||
|
||||
[JsonPropertyName("trackSource")] public string TrackSource { get; set; }
|
||||
}
|
||||
|
||||
public class Lyric
|
||||
{
|
||||
[JsonPropertyName("lyricsAvailable")] public bool LyricsAvailable { get; set; }
|
||||
|
||||
[JsonPropertyName("fullLyrics")] public string FullLyrics { get; set; }
|
||||
|
||||
[JsonPropertyName("lyrics")] public string Lyrics { get; set; }
|
||||
}
|
||||
|
||||
public class OtherVersions
|
||||
{
|
||||
[JsonPropertyName("live")] public List<Live> Live { get; set; }
|
||||
}
|
||||
|
||||
public class SimilarTrack
|
||||
{
|
||||
[JsonPropertyName("id")] public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("realId")] public string RealId { get; set; }
|
||||
|
||||
[JsonPropertyName("title")] public string Title { get; set; }
|
||||
|
||||
[JsonPropertyName("major")] public Major Major { get; set; }
|
||||
|
||||
[JsonPropertyName("available")] public bool Available { get; set; }
|
||||
|
||||
[JsonPropertyName("availableForPremiumUsers")]
|
||||
public bool AvailableForPremiumUsers { get; set; }
|
||||
|
||||
[JsonPropertyName("availableFullWithoutPermission")]
|
||||
public bool AvailableFullWithoutPermission { get; set; }
|
||||
|
||||
[JsonPropertyName("availableForOptions")]
|
||||
public List<string> AvailableForOptions { get; set; }
|
||||
|
||||
[JsonPropertyName("disclaimers")] public List<object> Disclaimers { get; set; }
|
||||
|
||||
[JsonPropertyName("storageDir")] public string StorageDir { get; set; }
|
||||
|
||||
[JsonPropertyName("durationMs")] public int DurationMs { get; set; }
|
||||
|
||||
[JsonPropertyName("fileSize")] public int FileSize { get; set; }
|
||||
|
||||
[JsonPropertyName("r128")] public R128 R128 { get; set; }
|
||||
|
||||
[JsonPropertyName("fade")] public Fade Fade { get; set; }
|
||||
|
||||
[JsonPropertyName("previewDurationMs")]
|
||||
public int PreviewDurationMs { get; set; }
|
||||
|
||||
[JsonPropertyName("artists")] public List<Artist> Artists { get; set; }
|
||||
|
||||
[JsonPropertyName("albums")] public List<Album> Albums { get; set; }
|
||||
|
||||
[JsonPropertyName("coverUri")] public string CoverUri { get; set; }
|
||||
|
||||
[JsonPropertyName("derivedColors")] public DerivedColors DerivedColors { get; set; }
|
||||
|
||||
[JsonPropertyName("ogImage")] public string OgImage { get; set; }
|
||||
|
||||
[JsonPropertyName("lyricsAvailable")] public bool LyricsAvailable { get; set; }
|
||||
|
||||
[JsonPropertyName("type")] public string Type { get; set; }
|
||||
|
||||
[JsonPropertyName("rememberPosition")] public bool RememberPosition { get; set; }
|
||||
|
||||
[JsonPropertyName("trackSharingFlag")] public string TrackSharingFlag { get; set; }
|
||||
|
||||
[JsonPropertyName("lyricsInfo")] public LyricsInfo LyricsInfo { get; set; }
|
||||
|
||||
[JsonPropertyName("trackSource")] public string TrackSource { get; set; }
|
||||
|
||||
[JsonPropertyName("contentWarning")] public string ContentWarning { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user