First commit
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
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<Artist> contributingArtists)
|
||||
{
|
||||
StringBuilder builder=new StringBuilder();
|
||||
|
||||
for(int i = 0; i < contributingArtists.Count; i++)
|
||||
{
|
||||
string link = $"<a hx-target=\"body\" hx-push-url=\"true\" hx-get=\"{HttpUtility.HtmlAttributeEncode($"/music/myartist?id={HttpUtility.UrlEncode(contributingArtists[i].ArtistId)}")}\" href=\"{HttpUtility.HtmlAttributeEncode($"/music/myartist?id={HttpUtility.UrlEncode(contributingArtists[i].ArtistId)}")}\">{HttpUtility.HtmlEncode(contributingArtists[i].ArtistName)}</a>";
|
||||
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 ? $"<a class=\"button\" href=\"/api/v1/song?albumId={HttpUtility.UrlEncode(album.AlbumId)}&songId={HttpUtility.UrlEncode(song.SongId)}\"><i>download</i> Download</a>" : string.IsNullOrEmpty(video.VideoId) ? "<span><i>file_download_off</i> Unavailable</span>" : "<span><i>downloading</i> Downloading</span>",
|
||||
Hasvideo = !string.IsNullOrEmpty(video.VideoId)
|
||||
}),Program.DefaultLinks());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using Tesses.WebServer;
|
||||
using Scriban;
|
||||
using System.Web;
|
||||
namespace Tesses.YouTubeDownloader2025Companion
|
||||
{
|
||||
public class MySongLink(string name, string id, string btn) {
|
||||
public string Name => HttpUtility.HtmlEncode(name);
|
||||
public string Songname => HttpUtility.HtmlEncode(name);
|
||||
public string Songurl => HttpUtility.HtmlAttributeEncode($"/music/mysong?songId={HttpUtility.UrlEncode(id)}");
|
||||
|
||||
public string Btn => btn;
|
||||
|
||||
}
|
||||
public static partial class Pages {
|
||||
|
||||
private static ReloadingScript mysongs_listing = new ReloadingScript("wwwroot/pages/music/mysongs/songs.sbnhtml");
|
||||
public static string MySongListing(string query, List<MySongLink> links, int page)
|
||||
{
|
||||
return Components.Shell($"Artist search {query}", mysongs_listing.Render(new {
|
||||
Songs = links,
|
||||
Q = HttpUtility.HtmlAttributeEncode(query),
|
||||
Prev = HttpUtility.HtmlAttributeEncode($"/music/mysongs?q={HttpUtility.UrlEncode(query)}&page={(page == 1 ? 1 : page - 1)}"),
|
||||
Current = page,
|
||||
Next = HttpUtility.HtmlAttributeEncode($"/music/mysongs?q={HttpUtility.UrlEncode(query)}&page={page + 1}")
|
||||
}),Program.DefaultLinks());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user