using Tesses.WebServer; using Scriban; using System.Web; namespace Tesses.YouTubeDownloader2025Companion { public class SongLink(string name, string id) { public string Name => HttpUtility.HtmlEncode(name); public string Url => HttpUtility.HtmlAttributeEncode($"/music/song?id={HttpUtility.UrlEncode(id)}"); } public static partial class Pages { private static ReloadingScript song_listing = new ReloadingScript("wwwroot/pages/music/songs/song-list.sbnhtml"); public static string SongListing(string query, List links, int page) { return Components.Shell($"Song search {query}", song_listing.Render(new { Songs = links, Q = HttpUtility.HtmlAttributeEncode(query), Prev = HttpUtility.HtmlAttributeEncode($"/music/songs?q={HttpUtility.UrlEncode(query)}&page={(page == 1 ? 1 : page - 1)}"), Current = page, Next = HttpUtility.HtmlAttributeEncode($"/music/songs?q={HttpUtility.UrlEncode(query)}&page={page + 1}") }),Program.DefaultLinks(2)); } } }