LastfmBaseArtistProvider.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using MediaBrowser.Common.Net;
  8. using MediaBrowser.Controller.Configuration;
  9. using MediaBrowser.Controller.Entities.Audio;
  10. using MediaBrowser.Model.Logging;
  11. using MediaBrowser.Model.Net;
  12. using MediaBrowser.Model.Serialization;
  13. namespace MediaBrowser.Controller.Providers.Music
  14. {
  15. public abstract class LastfmBaseArtistProvider : LastfmBaseProvider
  16. {
  17. protected LastfmBaseArtistProvider(IJsonSerializer jsonSerializer, IHttpClient httpClient, ILogManager logManager, IServerConfigurationManager configurationManager)
  18. : base(jsonSerializer, httpClient, logManager, configurationManager)
  19. {
  20. LocalMetaFileName = "MBArtist.json";
  21. }
  22. public override bool Supports(Entities.BaseItem item)
  23. {
  24. return item is MusicArtist;
  25. }
  26. protected void ProcessArtistData(MusicArtist artist, LastfmArtist data)
  27. {
  28. artist.Overview = data.bio.summary;
  29. foreach (var tag in data.tags.tag)
  30. {
  31. artist.AddGenre(tag.name);
  32. }
  33. }
  34. }
  35. #region Result Objects
  36. public class LastfmStats
  37. {
  38. public string listeners { get; set; }
  39. public string playcount { get; set; }
  40. }
  41. public class LastfmTag
  42. {
  43. public string name { get; set; }
  44. public string url { get; set; }
  45. }
  46. public class LastfmTags
  47. {
  48. public List<LastfmTag> tag { get; set; }
  49. }
  50. public class LastfmFormationInfo
  51. {
  52. public string yearfrom { get; set; }
  53. public string yearto { get; set; }
  54. }
  55. public class LastFmBio
  56. {
  57. public string published { get; set; }
  58. public string summary { get; set; }
  59. public string content { get; set; }
  60. public string placeformed { get; set; }
  61. public string yearformed { get; set; }
  62. public List<LastfmFormationInfo> formationlist { get; set; }
  63. }
  64. public class LastfmArtist
  65. {
  66. public string name { get; set; }
  67. public string mbid { get; set; }
  68. public string url { get; set; }
  69. public string streamable { get; set; }
  70. public string ontour { get; set; }
  71. public LastfmStats stats { get; set; }
  72. public List<LastfmArtist> similar { get; set; }
  73. public LastfmTags tags { get; set; }
  74. public LastFmBio bio { get; set; }
  75. }
  76. public class LastfmGetArtistResult
  77. {
  78. public LastfmArtist artist { get; set; }
  79. }
  80. public class Artistmatches
  81. {
  82. public List<LastfmArtist> artist { get; set; }
  83. }
  84. public class LastfmArtistSearchResult
  85. {
  86. public Artistmatches artistmatches { get; set; }
  87. }
  88. public class LastfmArtistSearchResults
  89. {
  90. public LastfmArtistSearchResult results { get; set; }
  91. }
  92. #endregion
  93. }