using Tesses.WebServer; using Scriban; using System.Web; using System.Text; namespace Tesses.YouTubeDownloader2025Companion { public static partial class Pages { private static ReloadingScript mysong = new ReloadingScript("wwwroot/pages/music/mysongs/song.sbnhtml"); private static ReloadingScript isnt_correct = new ReloadingScript("wwwroot/components/music/mysongs/isntcorrect.sbnhtml"); public static string IsntCorrect(string songId, string albumId, string query) { return isnt_correct.Render(new { Cancelurl = HttpUtility.HtmlAttributeEncode($"/music/mysong?songId={HttpUtility.UrlEncode(songId)}&albumId={HttpUtility.UrlEncode(albumId)}"), Albumid = HttpUtility.HtmlAttributeEncode(albumId), Songid = HttpUtility.HtmlAttributeEncode(songId), Searchurl = query == "" ? "" : HttpUtility.HtmlAttributeEncode($"/search_dialog?q={HttpUtility.UrlEncode(query)}") }); } public static string MySong(Song song, Album album, SongVideo video, string tytdEndpoint,bool downloaded, int trackIndex, TimeSpan ts, List contributingArtists) { StringBuilder builder=new StringBuilder(); for(int i = 0; i < contributingArtists.Count; i++) { string link = $"{HttpUtility.HtmlEncode(contributingArtists[i].ArtistName)}"; if(i == 0) builder.Append(link); else if(i == 1) builder.Append($" feat {link}"); else builder.Append($", {link}"); } return Components.Shell("", mysong.Render(new { Songname = HttpUtility.HtmlEncode(song.SongName), Albumurl = HttpUtility.HtmlAttributeEncode($"/music/myalbum?id={HttpUtility.UrlEncode(album.AlbumId)}"), Albumname = HttpUtility.HtmlEncode(album.AlbumName), Trackindex = trackIndex.ToString("D2"), Duration = ts.ToString("m\\:ss"), Albumart = HttpUtility.HtmlAttributeEncode($"/api/v1/album-thumbnail?id={HttpUtility.UrlEncode(album.AlbumId)}"), Artists = builder.ToString(), Videothumbnail = HttpUtility.HtmlAttributeEncode($"/api/v1/video-thumbnail?v={HttpUtility.UrlEncode(video.VideoId)}"), Videotitle = HttpUtility.HtmlEncode($"{video.VideoTitle}-{video.VideoId}"), Incorrectsongurl = HttpUtility.HtmlAttributeEncode($"/music/fix-song?songId={HttpUtility.UrlEncode(song.SongId)}&albumId={HttpUtility.UrlEncode(album.AlbumId)}"), Tytdurl = HttpUtility.HtmlAttributeEncode($"{tytdEndpoint.TrimEnd('/')}/watch?v={HttpUtility.UrlEncode(video.VideoId)}"), Dlbtn = downloaded ? $"download Download" : string.IsNullOrEmpty(video.VideoId) ? "file_download_off Unavailable" : "downloading Downloading", Hasvideo = !string.IsNullOrEmpty(video.VideoId) }),Program.DefaultLinks(2)); } } }