123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- using FNZCM.BlazorWasm.Helpers;
- using FNZCM.BlazorWasm.Models;
- using FNZCM.Shared.Helpers;
- using FNZCM.Shared.MediaModels;
- namespace FNZCM.BlazorWasm
- {
- internal static class FnzDataSet
- {
- public static FeTrack[] AllTracks { get; set; }
- public static FeTrackSet[] AllTracksSet { get; set; }
- public static FeDisc[] AllDisc { get; set; }
- public static FeLibrary[] AllLibrary { get; set; }
- public static void InitFeModules2(string apiBase, Dictionary<string, Library> Libraries, Dictionary<string, MediaTag> MediaTags)
- {
- var lstAllTrack = new List<FeTrack>();
- var lstAllTrackSet = new List<FeTrackSet>();
- var lstAllDisc = new List<FeDisc>();
- var lstAllLibrry = new List<FeLibrary>();
- foreach (var lib in Libraries.OrderBy(p => p.Key))
- {
- var feLib = new FeLibrary
- {
- Key = lib.Key,
- Name = lib.Value.Name,
- };
- lstAllLibrry.Add(feLib);
- var lstDiscOfLib = new List<FeDisc>();
- foreach (var disc in lib.Value.Discs.OrderByDescending(p => p.Key))
- {
- var feDisc = new FeDisc
- {
- LibKey = lib.Key,
- Lib = feLib,
- Key = disc.Key,
- Name = disc.Value.Name,
- CoverPath = $"{apiBase}/cover/{lib.Key.UrlEscape()}/{disc.Key.UrlEscape()}/cover.jpg",
- };
- lstAllDisc.Add(feDisc);
- lstDiscOfLib.Add(feDisc);
- // BK
- if (disc.Value.Bks?.Any() == true)
- {
- var feBkOfDisc = new List<FeBk>();
- foreach (var item in disc.Value.Bks.OrderBy(p=>p.Key))
- {
- feBkOfDisc.Add(new FeBk
- {
- Key = item.Key,
- Name = item.Value,
- Path = $"{apiBase}/bk/{lib.Key.UrlEscape()}/{disc.Key.UrlEscape()}/{item.Key.UrlEscape()}",
- });
- }
- feDisc.Bks = feBkOfDisc.ToArray();
- }
- // Trask Set
- var lstTrackSetOfDisc = new List<FeTrackSet>();
- // Trask Set Main
- {
- var feTsMain = new FeTrackSet
- {
- LibKey = lib.Key,
- Lib = feLib,
- DiscKey = disc.Key,
- Disc = feDisc,
- Key = "main",
- Name = "Main",
- M3U8Path = $"{apiBase}/list/{lib.Key.UrlEscape()}/{disc.Key.UrlEscape()}/playlist.m3u8",
- };
- lstAllTrackSet.Add(feTsMain);
- lstTrackSetOfDisc.Add(feTsMain);
- var lstTracksOfTsMain = new List<FeTrack>();
- foreach (var t in disc.Value.MainTracks.OrderBy(p => p.Key))
- {
- var fet = new FeTrack
- {
- LibKey = lib.Key,
- Lib = feLib,
- DiscKey = disc.Key,
- Disc = feDisc,
- TrackSetKey = "main",
- TrackSet = feTsMain,
- Key = t.Key,
- Name = t.Value,
- Path = $"{apiBase}/media/{lib.Key.UrlEscape()}/{disc.Key.UrlEscape()}/{t.Key.UrlEscape()}",
- Tag = MediaTags.GetEx($"/media/{lib.Key}/{disc.Key}/{t.Key}")
- };
- lstAllTrack.Add(fet);
- lstTracksOfTsMain.Add(fet);
- }
- feTsMain.Tracks = lstTracksOfTsMain.ToArray();
- feTsMain.TotalBytes = feTsMain.Tracks.Sum(p => p.Tag?.Length ?? 0);
- feTsMain.TotalDuration = feTsMain.Tracks.Sum(p => p.Tag?.Duration ?? 0);
- }
- // Trask Set Sub
- {
- foreach (var tSubSet in disc.Value.SubTracks.OrderBy(p => p.Key))
- {
- var feTsSub = new FeTrackSet
- {
- LibKey = lib.Key,
- Lib = feLib,
- DiscKey = disc.Key,
- Disc = feDisc,
- Key = tSubSet.Key,
- Name = tSubSet.Value.Name,
- M3U8Path = $"{apiBase}/list/{lib.Key.UrlEscape()}/{disc.Key.UrlEscape()}/{tSubSet.Key.UrlEscape()}/playlist.m3u8",
- };
- lstAllTrackSet.Add(feTsSub);
- lstTrackSetOfDisc.Add(feTsSub);
- var lstTracksOfTsSub = new List<FeTrack>();
- foreach (var t in tSubSet.Value.Tracks.OrderBy(p => p.Key))
- {
- var fet = new FeTrack
- {
- LibKey = lib.Key,
- Lib = feLib,
- DiscKey = disc.Key,
- Disc = feDisc,
- TrackSetKey = tSubSet.Key,
- TrackSet = feTsSub,
- Key = t.Key,
- Name = t.Value,
- Path = $"{apiBase}/media/{lib.Key.UrlEscape()}/{disc.Key.UrlEscape()}/{tSubSet.Key.UrlEscape()}/{t.Key.UrlEscape()}",
- Tag = MediaTags.GetEx($"/media/{lib.Key}/{disc.Key}/{tSubSet.Key}/{t.Key}"),
- };
- lstAllTrack.Add(fet);
- lstTracksOfTsSub.Add(fet);
- }
- feTsSub.Tracks = lstTracksOfTsSub.ToArray();
- feTsSub.TotalBytes = feTsSub.Tracks.Sum(p => p.Tag?.Length ?? 0);
- feTsSub.TotalDuration = feTsSub.Tracks.Sum(p => p.Tag?.Duration ?? 0);
- }// end foreach sub track set
- }
- feDisc.TrackSets = lstTrackSetOfDisc.ToArray();
- }// end foreach disc
- feLib.Discs = lstDiscOfLib.ToArray();
- var lstCatalogOfLib = new List<FeLibraryCatalog>();
- var trackSetKeys = feLib.Discs.SelectMany(p => p.TrackSets.Select(q => q.Key)).Distinct().ToArray();
- foreach (var tsKey in trackSetKeys)
- {
- var cat = new FeLibraryCatalog
- {
- Name = tsKey.ToUpper(),
- PlaylistPath = tsKey == "main"
- ? $"{apiBase}/lib_list/{lib.Key.UrlEscape()}/playlist.m3u8"
- : $"{apiBase}/lib_list/{lib.Key.UrlEscape()}/{tsKey.UrlEscape()}/playlist.m3u8",
- TotalBytes = feLib.Discs
- .Sum(p => p.TrackSets
- .Where(p => p.Key == tsKey)
- .Sum(q => q.Tracks
- .Sum(r => r.Tag?.Length ?? 0)
- )
- ),
- TotalDuration = feLib.Discs
- .Sum(p => p.TrackSets
- .Where(p => p.Key == tsKey)
- .Sum(q => q.Tracks
- .Sum(r => r.Tag?.Duration ?? 0)
- )
- ),
- };
- lstCatalogOfLib.Add(cat);
- }
- feLib.Catalogs = lstCatalogOfLib.ToArray();
- }// end foreach lib
- AllTracks = lstAllTrack.ToArray();
- AllTracksSet = lstAllTrackSet.ToArray();
- AllDisc = lstAllDisc.ToArray();
- AllLibrary = lstAllLibrry.ToArray();
- }
- }
- }
|