2
0

LastfmHelper.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using MediaBrowser.Common.Configuration;
  2. using MediaBrowser.Model.Logging;
  3. using System;
  4. using System.IO;
  5. using System.Linq;
  6. namespace MediaBrowser.Providers.Music
  7. {
  8. public static class LastfmHelper
  9. {
  10. public static string GetImageUrl(IHasLastFmImages data, out string size)
  11. {
  12. size = null;
  13. if (data.image == null)
  14. {
  15. return null;
  16. }
  17. var validImages = data.image
  18. .Where(i => !string.IsNullOrWhiteSpace(i.url))
  19. .ToList();
  20. var img = validImages
  21. .FirstOrDefault(i => string.Equals(i.size, "mega", StringComparison.OrdinalIgnoreCase)) ??
  22. data.image.FirstOrDefault(i => string.Equals(i.size, "extralarge", StringComparison.OrdinalIgnoreCase)) ??
  23. data.image.FirstOrDefault(i => string.Equals(i.size, "large", StringComparison.OrdinalIgnoreCase)) ??
  24. data.image.FirstOrDefault(i => string.Equals(i.size, "medium", StringComparison.OrdinalIgnoreCase)) ??
  25. data.image.FirstOrDefault();
  26. if (img != null)
  27. {
  28. size = img.size;
  29. return img.url;
  30. }
  31. return null;
  32. }
  33. public static void SaveImageInfo(IApplicationPaths appPaths, ILogger logger, string musicBrainzId, string url, string size)
  34. {
  35. if (appPaths == null)
  36. {
  37. throw new ArgumentNullException("appPaths");
  38. }
  39. if (string.IsNullOrEmpty(musicBrainzId))
  40. {
  41. throw new ArgumentNullException("musicBrainzId");
  42. }
  43. if (string.IsNullOrEmpty(url))
  44. {
  45. throw new ArgumentNullException("url");
  46. }
  47. var cachePath = Path.Combine(appPaths.CachePath, "lastfm", musicBrainzId, "image.txt");
  48. try
  49. {
  50. if (string.IsNullOrEmpty(url))
  51. {
  52. File.Delete(cachePath);
  53. }
  54. else
  55. {
  56. Directory.CreateDirectory(Path.GetDirectoryName(cachePath));
  57. File.WriteAllText(cachePath, url + "|" + size);
  58. }
  59. }
  60. catch (IOException ex)
  61. {
  62. // Don't fail if this is unable to write
  63. logger.ErrorException("Error saving to {0}", ex, cachePath);
  64. }
  65. }
  66. }
  67. }