LastfmHelper.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using MediaBrowser.Controller.Entities;
  2. using MediaBrowser.Controller.Entities.Audio;
  3. using MediaBrowser.Controller.Providers.Music;
  4. using MediaBrowser.Model.Entities;
  5. using System;
  6. using System.Linq;
  7. namespace MediaBrowser.Providers.Music
  8. {
  9. public static class LastfmHelper
  10. {
  11. public static string LocalArtistMetaFileName = "lastfmartist.json";
  12. public static string LocalAlbumMetaFileName = "lastfmalbum.json";
  13. public static void ProcessArtistData(BaseItem artist, LastfmArtist data)
  14. {
  15. var yearFormed = 0;
  16. if (data.bio != null)
  17. {
  18. Int32.TryParse(data.bio.yearformed, out yearFormed);
  19. if (!artist.LockedFields.Contains(MetadataFields.Overview))
  20. {
  21. artist.Overview = data.bio.content;
  22. }
  23. if (!string.IsNullOrEmpty(data.bio.placeformed) && !artist.LockedFields.Contains(MetadataFields.ProductionLocations))
  24. {
  25. artist.AddProductionLocation(data.bio.placeformed);
  26. }
  27. }
  28. artist.PremiereDate = yearFormed > 0 ? new DateTime(yearFormed, 1, 1, 0, 0, 0, DateTimeKind.Utc) : (DateTime?)null;
  29. artist.ProductionYear = yearFormed;
  30. if (data.tags != null && !artist.LockedFields.Contains(MetadataFields.Tags))
  31. {
  32. AddTags(artist, data.tags);
  33. }
  34. }
  35. public static void ProcessArtistData(MusicArtist source, Artist target)
  36. {
  37. target.PremiereDate = source.PremiereDate;
  38. target.ProductionYear = source.ProductionYear;
  39. target.Tags = source.Tags.ToList();
  40. target.Overview = source.Overview;
  41. target.ProductionLocations = source.ProductionLocations.ToList();
  42. target.Genres = source.Genres.ToList();
  43. }
  44. public static void ProcessAlbumData(BaseItem item, LastfmAlbum data)
  45. {
  46. if (!string.IsNullOrWhiteSpace(data.mbid)) item.SetProviderId(MetadataProviders.Musicbrainz, data.mbid);
  47. var overview = data.wiki != null ? data.wiki.content : null;
  48. if (!item.LockedFields.Contains(MetadataFields.Overview))
  49. {
  50. item.Overview = overview;
  51. }
  52. DateTime release;
  53. DateTime.TryParse(data.releasedate, out release);
  54. item.PremiereDate = release;
  55. item.ProductionYear = release.Year;
  56. if (data.toptags != null && !item.LockedFields.Contains(MetadataFields.Tags))
  57. {
  58. AddTags(item, data.toptags);
  59. }
  60. }
  61. private static void AddTags(BaseItem item, LastfmTags tags)
  62. {
  63. var itemTags = (from tag in tags.tag where !string.IsNullOrEmpty(tag.name) select tag.name).ToList();
  64. item.Tags = itemTags;
  65. }
  66. }
  67. }