FnzDataSet.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using FNZCM.Shared.MediaModels;
  2. namespace FNZCM.BlazorWasm
  3. {
  4. internal static class FnzDataSet
  5. {
  6. public static Dictionary<string, Library> Libraries { get; set; }
  7. public static Dictionary<string, MediaTag> MediaTags { get; set; }
  8. public static int GetDuration(string lib, string disc = null, string subSet = null)
  9. {
  10. if (disc == null && subSet == null)
  11. {
  12. return Libraries[lib].Discs.Sum(d
  13. => d.Value.MainTracks.Sum(t
  14. => MediaTags.TryGetValue($"/media/{lib}/{d.Key}/{t.Key}", out var tag)
  15. ? tag.Duration
  16. : 0)
  17. );
  18. }
  19. if (disc == null)
  20. {
  21. return Libraries[lib].Discs.Sum(d
  22. => d.Value.SubTracks.ContainsKey(subSet)
  23. ? d.Value.SubTracks[subSet].Tracks.Sum(t
  24. => MediaTags.TryGetValue($"/media/{lib}/{d.Key}/{subSet}/{t.Key}", out var tag)
  25. ? tag.Duration
  26. : 0)
  27. : 0
  28. );
  29. }
  30. if (subSet == null)
  31. {
  32. return Libraries[lib].Discs[disc].MainTracks
  33. .Sum(t => MediaTags.TryGetValue($"/media/{lib}/{disc}/{t.Key}", out var tag)
  34. ? tag.Duration
  35. : 0
  36. );
  37. }
  38. return
  39. Libraries[lib].Discs[disc].SubTracks.ContainsKey(subSet)
  40. ? Libraries[lib].Discs[disc].SubTracks[subSet].Tracks
  41. .Sum(t => MediaTags.TryGetValue($"/media/{lib}/{disc}/{subSet}/{t.Key}", out var tag)
  42. ? tag.Duration
  43. : 0
  44. )
  45. : 0;
  46. }
  47. public static long GetFileSize(string lib, string disc = null, string subSet = null)
  48. {
  49. if (disc == null && subSet == null)
  50. {
  51. return Libraries[lib].Discs.Sum(d
  52. => d.Value.MainTracks.Sum(t
  53. => MediaTags.TryGetValue($"/media/{lib}/{d.Key}/{t.Key}", out var tag)
  54. ? tag.Length
  55. : 0)
  56. );
  57. }
  58. if (disc == null)
  59. {
  60. return Libraries[lib].Discs.Sum(d
  61. => d.Value.SubTracks.ContainsKey(subSet)
  62. ? d.Value.SubTracks[subSet].Tracks.Sum(t
  63. => MediaTags.TryGetValue($"/media/{lib}/{d.Key}/{subSet}/{t.Key}", out var tag)
  64. ? tag.Length
  65. : 0)
  66. : 0
  67. );
  68. }
  69. if (subSet == null)
  70. {
  71. return Libraries[lib].Discs[disc].MainTracks
  72. .Sum(t => MediaTags.TryGetValue($"/media/{lib}/{disc}/{t.Key}", out var tag)
  73. ? tag.Length
  74. : 0
  75. );
  76. }
  77. return Libraries[lib].Discs[disc].SubTracks.ContainsKey(subSet)
  78. ? Libraries[lib].Discs[disc].SubTracks[subSet].Tracks
  79. .Sum(t => MediaTags.TryGetValue($"/media/{lib}/{disc}/{subSet}/{t.Key}", out var tag)
  80. ? tag.Length
  81. : 0
  82. )
  83. : 0;
  84. }
  85. public static MediaTag? GetMediaTag(string lib, string disc, string track, string subSet = null)
  86. {
  87. if (subSet == null)
  88. return true == MediaTags?.TryGetValue($"/media/{lib}/{disc}/{track}", out var tagD)
  89. ? tagD : null;
  90. return true == MediaTags?.TryGetValue($"/media/{lib}/{disc}/{subSet}/{track}", out var tagS)
  91. ? tagS : null;
  92. }
  93. }
  94. }