tytd-server/Server/Models/SavedPlaylist.cs

44 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TessesYoutubeDownloader.Server.Models
{
class SavedPlaylist
{
public static async Task<SavedPlaylist> FromPlaylistId(Resolution res,YoutubeExplode.YoutubeClient ytc,YoutubeExplode.Playlists.PlaylistId id,Action<YoutubeExplode.Videos.VideoId,Resolution> addToQueue, Action<int, int, string,string> downloadThumbnail)
{
SavedPlaylist pl2 = new SavedPlaylist();
pl2.Videos = new List<string>();
var pl=await ytc.Playlists.GetAsync(id);
var a = pl.Author;
pl2.AuthorChannelId = a.ChannelId;
pl2.AuthorTitle = a.Title;
pl2.Id= pl.Id;
pl2.Description = pl.Description;
pl2.Title = pl.Title;
foreach (var thumb in pl.Thumbnails)
{
downloadThumbnail(thumb.Resolution.Width, thumb.Resolution.Height,id, thumb.Url);
}
var plv = ytc.Playlists.GetVideosAsync(id).GetAsyncEnumerator();
while(await plv.MoveNextAsync())
{
addToQueue(plv.Current.Id,res);
pl2.Videos.Add(plv.Current.Id);
}
return pl2;
}
public List<string> Videos { get; set; }
public string AuthorTitle { get; set; }
public string AuthorChannelId { get; set; }
public string Id { get; set; }
public string Description { get; set; }
public string Title { get; set; }
}
}