using System.Text.Json.Serialization; namespace EllieBot.Modules.Searches; public sealed class InvidiousSearchResponse { [JsonPropertyName("videoId")] public required string VideoId { get; init; } [JsonPropertyName("title")] public required string Title { get; init; } [JsonPropertyName("videoThumbnails")] public required List<InvidiousThumbnail> Thumbnails { get; init; } [JsonPropertyName("lengthSeconds")] public required int LengthSeconds { get; init; } [JsonPropertyName("description")] public required string Description { get; init; } } public sealed class InvidiousVideoResponse { [JsonPropertyName("title")] public required string Title { get; init; } [JsonPropertyName("videoId")] public required string VideoId { get; init; } [JsonPropertyName("lengthSeconds")] public required int LengthSeconds { get; init; } [JsonPropertyName("videoThumbnails")] public required List<InvidiousThumbnail> Thumbnails { get; init; } [JsonPropertyName("adaptiveFormats")] public required List<InvidiousAdaptiveFormat> AdaptiveFormats { get; init; } } public sealed class InvidiousAdaptiveFormat { [JsonPropertyName("url")] public required string Url { get; init; } [JsonPropertyName("audioQuality")] public string? AudioQuality { get; init; } } public sealed class InvidiousPlaylistResponse { [JsonPropertyName("title")] public required string Title { get; init; } [JsonPropertyName("videos")] public required List<InvidiousVideoResponse> Videos { get; init; } } public sealed class InvidiousThumbnail { [JsonPropertyName("url")] public required string Url { get; init; } }