This repository has been archived on 2024-12-22. You can view files and clone it, but cannot push or open issues or pull requests.
elliebot/src/EllieBot/Modules/Searches/Search/Youtube/InvidiousSearchResponse.cs
2024-09-21 14:42:25 +12:00

63 lines
No EOL
1.7 KiB
C#

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; }
}