using Tesses.WebServer; using Scriban; using System.Web; //using YouTubeMusicAPI.Models.Info; //using Acornima.Ast; //using YouTubeMusicAPI.Models; //using YouTubeMusicAPI.Models.Search; using Newtonsoft.Json; namespace Tesses.YouTubeDownloader2025Companion { public class MyAlbumSongLink(int? songNumber,string name, string albumId, string songId, TimeSpan dur, string btn) { public string Songnumber => songNumber.HasValue ? songNumber.Value.ToString() : "-"; public string Duration => dur.ToString( "m\\:ss" ); public string Songname => HttpUtility.HtmlEncode(name); public string Songurl => HttpUtility.HtmlAttributeEncode($"/music/mysong?albumId={HttpUtility.UrlEncode(albumId)}&songId={HttpUtility.UrlEncode(songId)}"); public string Btn => btn; } public static partial class Pages { private static ReloadingScript myalbum_info = new ReloadingScript("wwwroot/pages/music/myalbums/album-info.sbnhtml"); public static string MyAlbumInfo(string name, string id, List songLinks, bool hasAny, string artists) { return Components.Shell($"Album info", myalbum_info.Render(new { Name = HttpUtility.HtmlEncode(name), Songs = songLinks, Addvals = HttpUtility.HtmlAttributeEncode(JsonConvert.SerializeObject(new{id})), Hasanysongs = hasAny, Zipurl = HttpUtility.HtmlAttributeEncode($"/api/v1/album.zip?albumId={HttpUtility.UrlEncode(id)}"), Artists = artists }),Program.DefaultLinks()); } } }