MetaCache.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using FNZCM.Shared.MediaModels;
  2. using Newtonsoft.Json;
  3. using System;
  4. using System.Collections.Concurrent;
  5. using System.Collections.Generic;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace FNZCM.ConHost
  11. {
  12. internal static class MetaCache
  13. {
  14. private static readonly string TagFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MediaTag.json.lz4");
  15. public static void Clear() => File.Delete(TagFilePath);
  16. public static void Save(ConcurrentDictionary<string, MediaTag> tags)
  17. {
  18. var json = JsonConvert.SerializeObject(tags);
  19. var u8 = Encoding.UTF8.GetBytes(json);
  20. var lz4 = K4os.Compression.LZ4.LZ4Pickler.Pickle(u8);
  21. File.WriteAllBytes(TagFilePath, lz4);
  22. }
  23. public static ConcurrentDictionary<string, MediaTag> Load()
  24. {
  25. if (File.Exists(TagFilePath) == false) return null;
  26. var lz4 = File.ReadAllBytes(TagFilePath);
  27. var u8 = K4os.Compression.LZ4.LZ4Pickler.Unpickle(lz4);
  28. var json = Encoding.UTF8.GetString(u8);
  29. var tags = JsonConvert.DeserializeObject<ConcurrentDictionary<string, MediaTag>>(json);
  30. return tags;
  31. }
  32. }
  33. }