|
@@ -3,6 +3,12 @@
|
|
|
@code {
|
|
|
private FnzBoostrapModal mdl;
|
|
|
private string ExportName { get; set; } = "brrr";
|
|
|
+
|
|
|
+ private bool ExportDomainCheck { get; set; } = true;
|
|
|
+ private string ExportDomain { get; set; } = "brrr";
|
|
|
+ private bool ExportDateCheck { get; set; } = true;
|
|
|
+ private string ExportDate { get; set; } = "brrr";
|
|
|
+
|
|
|
private string ExportExtension { get; set; } = "m3u";
|
|
|
private string ExportMime { get; set; } = "text/mpegurl";
|
|
|
private Guid PlaylistId { get; set; }
|
|
@@ -16,14 +22,33 @@
|
|
|
<InputText class="form-control" placeholder="Filename" ValueExpression="()=>ExportName" Value="@ExportName"></InputText>
|
|
|
</div>
|
|
|
<div class="input-group mb-3">
|
|
|
+ <div class="input-group-text">
|
|
|
+ <input class="form-check-input mt-0" type="checkbox" checked="@ExportDomainCheck" @bind-value="ExportDomainCheck">
|
|
|
+ Host
|
|
|
+ </div>
|
|
|
+ <InputText class="form-control" ValueExpression="()=>ExportDomain" Value="@ExportDomain"></InputText>
|
|
|
+ </div>
|
|
|
+ <div class="input-group mb-3">
|
|
|
+ <div class="input-group-text">
|
|
|
+ <input class="form-check-input mt-0" type="checkbox" checked="@ExportDateCheck" @bind-value="ExportDateCheck">
|
|
|
+ Date
|
|
|
+ </div>
|
|
|
+ <InputText class="form-control" ValueExpression="()=>ExportDate" Value="@ExportDate"></InputText>
|
|
|
+ </div>
|
|
|
+ <div class="input-group mb-3">
|
|
|
<span class="input-group-text">Extension</span>
|
|
|
<InputText type="text" class="form-control" placeholder="Extension" ValueExpression="()=>ExportExtension" Value="@ExportExtension"></InputText>
|
|
|
+ </div>
|
|
|
+ <div class="input-group mb-3">
|
|
|
<span class="input-group-text">Mime</span>
|
|
|
<InputText type="text" class="form-control" placeholder="Extension" ValueExpression="()=>ExportMime" Value="@ExportMime"></InputText>
|
|
|
</div>
|
|
|
</Body>
|
|
|
<Footer>
|
|
|
- <button class="btn btn-primary" @onclick="DoExport">Save</button>
|
|
|
+ <button class="btn btn-primary" @onclick="DoExport">
|
|
|
+ <i class="bi bi-save"></i>
|
|
|
+ Save
|
|
|
+ </button>
|
|
|
</Footer>
|
|
|
</FnzBoostrapModal>
|
|
|
|
|
@@ -32,7 +57,9 @@
|
|
|
{
|
|
|
var playlist = PlaylistHelper.PlayListLoadSave[playlistId];
|
|
|
var uri = new Uri(NavigationManager.Uri);
|
|
|
- ExportName = $"{playlist}-{uri.Host}-{DateTime.Now:yyMMdd}";
|
|
|
+ ExportName = $"{playlist}";
|
|
|
+ ExportDomain = uri.Host;
|
|
|
+ ExportDate = $"{DateTime.Now:yyMMdd}";
|
|
|
|
|
|
PlaylistId = playlistId;
|
|
|
|
|
@@ -43,20 +70,27 @@
|
|
|
public void DoExport()
|
|
|
{
|
|
|
// generate m3u content
|
|
|
- var sb = new StringBuilder();
|
|
|
- sb.WriteM3U8Header();
|
|
|
+ var sbM3 = new StringBuilder();
|
|
|
+ sbM3.WriteM3U8Header();
|
|
|
|
|
|
foreach (var item in PlaylistHelper[PlaylistId])
|
|
|
{
|
|
|
var track = DataSet.AllTracks.FirstOrDefault(p => p.Path == item);
|
|
|
if (track == null) continue;
|
|
|
|
|
|
- sb.AppendLine($"#EXTINF:{track.Tag?.Duration ?? 0} logo=\"{track.Disc.CoverPath.UrlEscape()}\",{track.Tag?.Artist} - {track.Tag?.Title ?? track.Name}");
|
|
|
- sb.AppendLine(track.Path.UrlEscape());
|
|
|
+ sbM3.AppendLine($"#EXTINF:{track.Tag?.Duration ?? 0} logo=\"{track.Disc.CoverPath.UrlEscape()}\",{track.Tag?.Artist} - {track.Tag?.Title ?? track.Name}");
|
|
|
+ sbM3.AppendLine(track.Path.UrlEscape());
|
|
|
}
|
|
|
|
|
|
+ var sbFn = new StringBuilder(ExportName);
|
|
|
+
|
|
|
+ if (ExportDomainCheck) sbFn.Append($"-{ExportDomain}");
|
|
|
+ if (ExportDateCheck) sbFn.Append($"-{ExportDate}");
|
|
|
+
|
|
|
+ sbFn.Append($".{ExportExtension}");
|
|
|
+
|
|
|
// export
|
|
|
- JSRuntime.InvokeVoidAsync("fnz.downloadFile", $"{ExportName}.{ExportExtension}", ExportMime, sb.ToString());
|
|
|
+ JSRuntime.InvokeVoidAsync("fnz.downloadFile", sbFn.ToString(), ExportMime, sbM3.ToString());
|
|
|
mdl.Hide();
|
|
|
}
|
|
|
}
|