Create entities to TA playlists
This commit is contained in:
@@ -0,0 +1,116 @@
|
|||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Jellyfin.Plugin.TubeArchivistMetadata.TubeArchivist
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Enum representing whether the playlist on TubeArchivist belongs from YouTube or is created by the user.
|
||||||
|
/// </summary>
|
||||||
|
public enum PlaylistType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Playlist belongs from YouTube.
|
||||||
|
/// </summary>
|
||||||
|
Regular,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Playlist created by the user.
|
||||||
|
/// </summary>
|
||||||
|
Custom
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A class representing TubeArchivist API playlist data.
|
||||||
|
/// </summary>
|
||||||
|
public class Playlist
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the <see cref="Playlist"/> class.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="isActive">URL of the channel banner image.</param>
|
||||||
|
/// <param name="channel">Playlist channel name.</param>
|
||||||
|
/// <param name="channelId">Playlist channel YouTube id.</param>
|
||||||
|
/// <param name="description">Playlist description.</param>
|
||||||
|
/// <param name="entries">Playlist videos.</param>
|
||||||
|
/// <param name="id">Playlist YouTube id.</param>
|
||||||
|
/// <param name="name">Playlist name.</param>
|
||||||
|
/// <param name="thumbnailUrl">URL of the playlist thumbnail.</param>
|
||||||
|
/// <param name="type">Type of the playlist. See <see cref="PlaylistType"/>.</param>
|
||||||
|
public Playlist(
|
||||||
|
bool isActive,
|
||||||
|
string channel,
|
||||||
|
string channelId,
|
||||||
|
string description,
|
||||||
|
Collection<PlaylistEntry> entries,
|
||||||
|
string id,
|
||||||
|
string name,
|
||||||
|
string thumbnailUrl, // TODO: Check if settable on Jellyfin
|
||||||
|
PlaylistType type)
|
||||||
|
{
|
||||||
|
this.IsActive = isActive;
|
||||||
|
this.Channel = channel;
|
||||||
|
this.ChannelId = channelId;
|
||||||
|
this.Description = description;
|
||||||
|
this.Entries = entries;
|
||||||
|
this.Id = id;
|
||||||
|
this.Name = name;
|
||||||
|
this.ThumbnailUrl = thumbnailUrl;
|
||||||
|
this.Type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a value indicating whether the playlist is active or not.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "playlist_active")]
|
||||||
|
public bool IsActive { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the playlist channel name.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "playlist_channel")]
|
||||||
|
public string Channel { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the playlist channel YouTube id.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "playlist_channel_id")]
|
||||||
|
public string ChannelId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the playlist description.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "playlist_description")]
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the playlist videos.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "playlist_entries")]
|
||||||
|
public Collection<PlaylistEntry> Entries { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the playlist YouTube id.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "playlist_id")]
|
||||||
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the playlist name.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "playlist_name")]
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the playlist thumbnail URL.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "playlist_thumbnail")]
|
||||||
|
public string ThumbnailUrl { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the playlist type.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>One of the <see cref="PlaylistType"/> values indicating the playlist's type.</value>
|
||||||
|
[JsonProperty(PropertyName = "playlist_type")]
|
||||||
|
public PlaylistType Type { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
using ICU4N.Text;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Jellyfin.Plugin.TubeArchivistMetadata.TubeArchivist
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A class representing TubeArchivist API playlist entries data.
|
||||||
|
/// </summary>
|
||||||
|
public class PlaylistEntry
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the <see cref="PlaylistEntry"/> class.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="youtubeId">Video YouTube id.</param>
|
||||||
|
/// <param name="title">Video title.</param>
|
||||||
|
/// <param name="uploader">Video uploader.</param>
|
||||||
|
/// <param name="index">Video index in the playlist.</param>
|
||||||
|
/// <param name="isDownloaded">A value indicating whether the video has been already downloaded or not.</param>
|
||||||
|
public PlaylistEntry(
|
||||||
|
string youtubeId,
|
||||||
|
string title,
|
||||||
|
string uploader,
|
||||||
|
int index,
|
||||||
|
bool isDownloaded)
|
||||||
|
{
|
||||||
|
this.YoutubeId = youtubeId;
|
||||||
|
this.Title = title;
|
||||||
|
this.Uploader = uploader;
|
||||||
|
this.Index = index;
|
||||||
|
this.IsDownloaded = isDownloaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the video YouTube id.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "youtube_id")]
|
||||||
|
public string YoutubeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the video title.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "title")]
|
||||||
|
public string Title { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the video uploader.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "uploader")]
|
||||||
|
public string Uploader { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the video index in the playlist.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "idx")]
|
||||||
|
public int Index { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a value indicating whether the video has been already downloaded or not.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(PropertyName = "downloaded")]
|
||||||
|
public bool IsDownloaded { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user