Explorar o código

lib_list order by disc title desc

HOME %!s(int64=2) %!d(string=hai) anos
pai
achega
d8f1d4f10f
Modificáronse 1 ficheiros con 60 adicións e 60 borrados
  1. 60 60
      FNZCM/FNZCM.ConHost/Ver2/Program2.cs

+ 60 - 60
FNZCM/FNZCM.ConHost/Ver2/Program2.cs

@@ -19,7 +19,7 @@ namespace FNZCM.ConHost.Ver2
         //0. start http server
         //1. scan libraries and fill data struct
         //    libs
-        //     albums
+        //     disc
         //      Tracks(FLAC / AAC_*)
         //       Meta(title(artist) / duration)
         //       FSI ( size )
@@ -77,22 +77,22 @@ namespace FNZCM.ConHost.Ver2
 
                     var libPath = kvpLib.Key.ToLower();
                     var lib = Libraries[libPath] = new Library2(kvpLib.Key);
-                    var albDirArray = Directory.GetDirectories(kvpLib.Value);
+                    var discDirArray = Directory.GetDirectories(kvpLib.Value);
 
-                    foreach (var albDir in albDirArray)
+                    foreach (var discDir in discDirArray)
                     {
                         if (_isRunning == false) throw new OperationCanceledException();
 
-                        Console.WriteLine($" Disc {albDir}");
+                        Console.WriteLine($" Disc {discDir}");
 
-                        var albName = Path.GetFileName(albDir);
-                        var albPath = albName.ToLower();
-                        var alb = lib.Discs[albPath] = new Disc(albName);
+                        var discName = Path.GetFileName(discDir);
+                        var discPath = discName.ToLower();
+                        var disc = lib.Discs[discPath] = new Disc(discName);
 
-                        var coverFilePath = Path.Combine(albDir, "cover.jpg");
-                        if (File.Exists(coverFilePath)) PathMapping[$"/cover/{libPath}/{albPath}/cover.jpg"] = coverFilePath;
+                        var coverFilePath = Path.Combine(discDir, "cover.jpg");
+                        if (File.Exists(coverFilePath)) PathMapping[$"/cover/{libPath}/{discPath}/cover.jpg"] = coverFilePath;
 
-                        var bkDir = Path.Combine(albDir, "bk");
+                        var bkDir = Path.Combine(discDir, "bk");
                         if (Directory.Exists(bkDir))
                         {
                             var bkFiles = FileSystem.GetFiles(bkDir, SearchOption.SearchTopLevelOnly, ConfigFile.Instance.BkFilePattern);
@@ -100,29 +100,29 @@ namespace FNZCM.ConHost.Ver2
                             {
                                 var bkName = Path.GetFileName(file);
                                 var bkPath = bkName.ToLower();
-                                alb.Bks[bkPath] = bkName;
+                                disc.Bks[bkPath] = bkName;
 
-                                PathMapping[$"/bk/{libPath}/{albPath}/{bkPath}"] = file;
+                                PathMapping[$"/bk/{libPath}/{discPath}/{bkPath}"] = file;
                             }
                         }
 
-                        var mainTrackFiles = FileSystem.GetFiles(albDir, SearchOption.SearchTopLevelOnly, ConfigFile.Instance.MediaFilePattern);
+                        var mainTrackFiles = FileSystem.GetFiles(discDir, SearchOption.SearchTopLevelOnly, ConfigFile.Instance.MediaFilePattern);
 
                         foreach (var mainTrackFile in mainTrackFiles)
                         {
                             var trackName = Path.GetFileName(mainTrackFile);
                             var trackPath = trackName.ToLower();
-                            alb.MainTracks[trackPath] = trackName;
+                            disc.MainTracks[trackPath] = trackName;
 
-                            PathMapping[$"/media/{libPath}/{albPath}/{trackPath}"] = mainTrackFile;
+                            PathMapping[$"/media/{libPath}/{discPath}/{trackPath}"] = mainTrackFile;
                         }
 
-                        var aacTrackDirArray = Directory.GetDirectories(albDir, "AAC_Q*");
+                        var aacTrackDirArray = Directory.GetDirectories(discDir, "AAC_Q*");
                         foreach (var aacTrackDir in aacTrackDirArray)
                         {
                             var aacTrackSetName = Path.GetFileName(aacTrackDir);
                             var aacTrackSetPath = aacTrackSetName.ToLower();
-                            var aacTrackSet = alb.SubTracks[aacTrackSetPath] = new TrackSet(aacTrackSetName);
+                            var aacTrackSet = disc.SubTracks[aacTrackSetPath] = new TrackSet(aacTrackSetName);
 
                             foreach (var file in Directory.GetFiles(aacTrackDir, "*.m4a"))
                             {
@@ -130,7 +130,7 @@ namespace FNZCM.ConHost.Ver2
                                 var aacTrackPath = aacTrackName.ToLower();
                                 aacTrackSet.Tracks[aacTrackPath] = aacTrackName;
 
-                                PathMapping[$"/media/{libPath}/{albPath}/{aacTrackSetPath}/{aacTrackPath}"] = file;
+                                PathMapping[$"/media/{libPath}/{discPath}/{aacTrackSetPath}/{aacTrackPath}"] = file;
                             }
                         }
                     }
@@ -209,8 +209,8 @@ namespace FNZCM.ConHost.Ver2
 
             // GET / show all libraries
 
-            // foo=library bar=album
-            // GET /list/foo/ show all album and cover with name, provide m3u path
+            // foo=library bar=disc
+            // GET /list/foo/ show all disc and cover with name, provide m3u path
             // GET /list/foo/bar/bk/ list all picture as grid
             // GET /list/foo/bar/tracks/ list all tracks as text list
 
@@ -388,9 +388,9 @@ namespace FNZCM.ConHost.Ver2
                 else if (pathParts.Count == 4 && pathParts[0] == "list" && pathParts[3] == "tracks")
                 {
                     var libName = pathParts[1];
-                    var albPath = pathParts[2];
+                    var discPath = pathParts[2];
 
-                    if (Libraries.TryGetValue(libName, out var l) && l.Discs.TryGetValue(albPath, out var alb))
+                    if (Libraries.TryGetValue(libName, out var l) && l.Discs.TryGetValue(discPath, out var disc))
                     {
                         var sb = new StringBuilder();
                         sb.Append("<!DOCTYPE html><html lang=\"zh-cn\"><meta charset=\"UTF-8\">");
@@ -398,19 +398,19 @@ namespace FNZCM.ConHost.Ver2
 
                         if (_isLoading) sb.Append("<h4 style=position:fixed;right:0px;top:0px;margin:0>Still Loading...</h4>");
 
-                        sb.Append($"<h2>Tracks of</h2><h1>{alb.Name}</h1>");
+                        sb.Append($"<h2>Tracks of</h2><h1>{disc.Name}</h1>");
                         sb.Append($"<div><a href='/list/{libName.FuckVlcAndEscape()}/'>Back to library</a></div>");
 
                         var durTotal = 0;
                         var sizeTotal = 0L;
 
                         var sbm = new StringBuilder();
-                        foreach (var kvpTrack in alb.MainTracks.OrderBy(p => p.Key))
+                        foreach (var kvpTrack in disc.MainTracks.OrderBy(p => p.Key))
                         {
                             sbm.Append($"<li>");
-                            sbm.Append($"<a href=\"/media/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/{kvpTrack.Key.FuckVlcAndEscape()}\" >{kvpTrack.Value}</a>");
+                            sbm.Append($"<a href=\"/media/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/{kvpTrack.Key.FuckVlcAndEscape()}\" >{kvpTrack.Value}</a>");
 
-                            var tag = GetTag($"/media/{libName}/{albPath}/{kvpTrack.Key}");
+                            var tag = GetTag($"/media/{libName}/{discPath}/{kvpTrack.Key}");
                             durTotal += tag.Duration;
                             sizeTotal += tag.Length;
                             sbm.Append($"<br> &nbsp; &nbsp; &nbsp; {tag.Duration.FormatDuration()} {tag.Length.FormatFileSize()}");
@@ -421,7 +421,7 @@ namespace FNZCM.ConHost.Ver2
                         sb.Append($"<h2>Main ({durTotal.FormatDuration()}) {sizeTotal.FormatFileSize()}</h2>");
                         sb.Append(sbm);
 
-                        foreach (var kvpSubSet in alb.SubTracks.OrderBy(p => p.Key))
+                        foreach (var kvpSubSet in disc.SubTracks.OrderBy(p => p.Key))
                         {
                             durTotal = 0;
                             sizeTotal = 0L;
@@ -430,9 +430,9 @@ namespace FNZCM.ConHost.Ver2
                             foreach (var kvpTrack in kvpSubSet.Value.Tracks.OrderBy(p => p.Key))
                             {
                                 sbm.Append($"<li>");
-                                sbm.Append($"<a href=\"/media/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/{kvpSubSet.Key.FuckVlcAndEscape()}/{kvpTrack.Key.FuckVlcAndEscape()}\" >{kvpTrack.Value}</a>");
+                                sbm.Append($"<a href=\"/media/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/{kvpSubSet.Key.FuckVlcAndEscape()}/{kvpTrack.Key.FuckVlcAndEscape()}\" >{kvpTrack.Value}</a>");
 
-                                var tag = GetTag($"/media/{libName}/{albPath}/{kvpSubSet.Key}/{kvpTrack.Key}");
+                                var tag = GetTag($"/media/{libName}/{discPath}/{kvpSubSet.Key}/{kvpTrack.Key}");
                                 durTotal += tag.Duration;
                                 sizeTotal += tag.Length;
                                 sbm.Append($"<br/> &nbsp; &nbsp; &nbsp; {tag.Duration.FormatDuration()} {tag.Length.FormatFileSize()}");
@@ -457,9 +457,9 @@ namespace FNZCM.ConHost.Ver2
                 else if (pathParts.Count == 4 && pathParts[0] == "list" && pathParts[3] == "bk")
                 {
                     var libName = pathParts[1];
-                    var albPath = pathParts[2];
+                    var discPath = pathParts[2];
 
-                    if (Libraries.TryGetValue(libName, out var lib) && lib.Discs.TryGetValue(albPath, out var alb))
+                    if (Libraries.TryGetValue(libName, out var lib) && lib.Discs.TryGetValue(discPath, out var disc))
                     {
                         var sb = new StringBuilder();
                         sb.Append("<!DOCTYPE html><html lang=\"zh-cn\"><meta charset=\"UTF-8\">");
@@ -467,13 +467,13 @@ namespace FNZCM.ConHost.Ver2
 
                         if (_isLoading) sb.Append("<h4 style=position:fixed;right:0px;top:0px;margin:0>Still Loading...</h4>");
 
-                        sb.Append($"<h2>BK of </h2><h1>{alb.Name}</h1>");
+                        sb.Append($"<h2>BK of </h2><h1>{disc.Name}</h1>");
                         sb.Append($"<div><a href='/list/{libName.FuckVlcAndEscape()}/'>Back to library</a></div>");
 
-                        foreach (var albBk in alb.Bks.OrderBy(p => p.Key))
+                        foreach (var discBk in disc.Bks.OrderBy(p => p.Key))
                         {
                             //TODO: auto gen thumbnail 512x512 jpg 80
-                            sb.Append($"<img src='/bk/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/{albBk.Key.FuckVlcAndEscape()}' style=max-width:24vw;max-height:24vw;margin-right:1vw;margin-bottom:1vh; />");
+                            sb.Append($"<img src='/bk/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/{discBk.Key.FuckVlcAndEscape()}' style=max-width:24vw;max-height:24vw;margin-right:1vw;margin-bottom:1vh; />");
                         }
 
                         context.Response.ContentType = "text/html";
@@ -497,23 +497,23 @@ namespace FNZCM.ConHost.Ver2
 
                         var prefix = $"{request.Url.GetLeftPart(UriPartial.Scheme | UriPartial.Authority)}";
 
-                        foreach (var albKvp in lib.Discs)
+                        foreach (var discKvp in lib.Discs.OrderByDescending(p=>p.Key))
                         {
-                            var alb = albKvp.Value;
-                            var albPath = albKvp.Key;
+                            var disc = discKvp.Value;
+                            var discPath = discKvp.Key;
 
-                            var tracks = alb.MainTracks;
+                            var tracks = disc.MainTracks;
 
                             foreach (var track in tracks.OrderBy(p => p.Key))
                             {
-                                var mediaTag = GetTag($"/media/{libName}/{albPath}/{track.Key}");
+                                var mediaTag = GetTag($"/media/{libName}/{discPath}/{track.Key}");
                                 if (mediaTag != null)
                                 {
-                                    var coverPath = $"/cover/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/cover.jpg";
+                                    var coverPath = $"/cover/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/cover.jpg";
                                     sb.AppendLine($"#EXTINF:{mediaTag.Duration} tvg-logo=\"{prefix + coverPath}\",{mediaTag.Title}");
                                 }
 
-                                var mediaPath = $"/media/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/{track.Key.FuckVlcAndEscape()}";
+                                var mediaPath = $"/media/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/{track.Key.FuckVlcAndEscape()}";
                                 sb.AppendLine(prefix + mediaPath);
                             }
                         }
@@ -540,25 +540,25 @@ namespace FNZCM.ConHost.Ver2
 
                         var prefix = $"{request.Url.GetLeftPart(UriPartial.Scheme | UriPartial.Authority)}";
 
-                        foreach (var albKvp in lib.Discs)
+                        foreach (var discKvp in lib.Discs.OrderByDescending(p => p.Key))
                         {
-                            var alb = albKvp.Value;
-                            var albPath = albKvp.Key;
+                            var disc = discKvp.Value;
+                            var discPath = discKvp.Key;
 
-                            if (alb.SubTracks.TryGetValue(trackSetName, out var tracksSet))
+                            if (disc.SubTracks.TryGetValue(trackSetName, out var tracksSet))
                             {
                                 var tracks = tracksSet.Tracks;
 
                                 foreach (var track in tracks.OrderBy(p => p.Key))
                                 {
-                                    var mediaTag = GetTag($"/media/{libName}/{albPath}/{trackSetName}/{track.Key}");
+                                    var mediaTag = GetTag($"/media/{libName}/{discPath}/{trackSetName}/{track.Key}");
                                     if (mediaTag != null)
                                     {
-                                        var coverPath = $"/cover/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/cover.jpg";
+                                        var coverPath = $"/cover/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/cover.jpg";
                                         sb.AppendLine($"#EXTINF:{mediaTag.Duration} tvg-logo=\"{prefix + coverPath}\",{mediaTag.Title}");
                                     }
 
-                                    var mediaPath = $"/media/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/{track.Key.FuckVlcAndEscape()}";
+                                    var mediaPath = $"/media/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/{track.Key.FuckVlcAndEscape()}";
                                     sb.AppendLine(prefix + mediaPath);
                                 }
                             }
@@ -577,9 +577,9 @@ namespace FNZCM.ConHost.Ver2
                 else if (pathParts.Count == 4 && pathParts[0] == "list" && pathParts[3] == "playlist.m3u8")
                 {
                     var libName = pathParts[1];
-                    var albPath = pathParts[2];
+                    var discPath = pathParts[2];
 
-                    if (Libraries.TryGetValue(libName, out var lib) && lib.Discs.TryGetValue(albPath, out var alb))
+                    if (Libraries.TryGetValue(libName, out var lib) && lib.Discs.TryGetValue(discPath, out var disc))
                     {
                         // ReSharper disable once BitwiseOperatorOnEnumWithoutFlags
                         var prefix = $"{request.Url.GetLeftPart(UriPartial.Scheme | UriPartial.Authority)}";
@@ -587,16 +587,16 @@ namespace FNZCM.ConHost.Ver2
                         var sb = new StringBuilder();
 
                         sb.AppendLine("#EXTM3U");
-                        foreach (var track in alb.MainTracks.OrderBy(p => p.Key))
+                        foreach (var track in disc.MainTracks.OrderBy(p => p.Key))
                         {
-                            var mediaTag = GetTag($"/media/{libName}/{albPath}/{track.Key}");
+                            var mediaTag = GetTag($"/media/{libName}/{discPath}/{track.Key}");
                             if (mediaTag != null)
                             {
-                                var coverPath = $"/cover/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/cover.jpg";
+                                var coverPath = $"/cover/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/cover.jpg";
                                 sb.AppendLine($"#EXTINF:{mediaTag.Duration} tvg-logo=\"{prefix + coverPath}\",{mediaTag.Title}");
                             }
 
-                            var mediaPath = $"/media/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/{track.Key.FuckVlcAndEscape()}";
+                            var mediaPath = $"/media/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/{track.Key.FuckVlcAndEscape()}";
                             sb.AppendLine(prefix + mediaPath);
                         }
 
@@ -613,15 +613,15 @@ namespace FNZCM.ConHost.Ver2
                 else if (pathParts.Count == 5 && pathParts[0] == "list" && pathParts[4] == "playlist.m3u8")
                 {
                     var libName = pathParts[1];
-                    var albPath = pathParts[2];
+                    var discPath = pathParts[2];
                     var subSetPath = pathParts[3];
 
-                    if (Libraries.TryGetValue(libName, out var lib) && lib.Discs.TryGetValue(albPath, out var alb))
+                    if (Libraries.TryGetValue(libName, out var lib) && lib.Discs.TryGetValue(discPath, out var disc))
                     {
                         // ReSharper disable once BitwiseOperatorOnEnumWithoutFlags
                         var prefix = $"{request.Url.GetLeftPart(UriPartial.Scheme | UriPartial.Authority)}";
 
-                        if (false == alb.SubTracks.TryGetValue(subSetPath, out var trackSet))
+                        if (false == disc.SubTracks.TryGetValue(subSetPath, out var trackSet))
                         {
                             context.Response.StatusCode = 404;
                         }
@@ -632,14 +632,14 @@ namespace FNZCM.ConHost.Ver2
                             sb.AppendLine("#EXTM3U");
                             foreach (var track in trackSet.Tracks.OrderBy(p => p.Key))
                             {
-                                var mediaTag = GetTag($"/media/{libName}/{albPath}/{subSetPath}/{track.Key}");
+                                var mediaTag = GetTag($"/media/{libName}/{discPath}/{subSetPath}/{track.Key}");
                                 if (mediaTag != null)
                                 {
-                                    var coverPath = $"/cover/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/cover.jpg";
+                                    var coverPath = $"/cover/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/cover.jpg";
                                     sb.AppendLine($"#EXTINF:{mediaTag.Duration} tvg-logo=\"{prefix + coverPath}\",{mediaTag.Title}");
                                 }
 
-                                var mediaPath = $"/media/{libName.FuckVlcAndEscape()}/{albPath.FuckVlcAndEscape()}/{subSetPath.FuckVlcAndEscape()}/{track.Key.FuckVlcAndEscape()}";
+                                var mediaPath = $"/media/{libName.FuckVlcAndEscape()}/{discPath.FuckVlcAndEscape()}/{subSetPath.FuckVlcAndEscape()}/{track.Key.FuckVlcAndEscape()}";
                                 sb.AppendLine(prefix + mediaPath);
                             }