mirror of
https://github.com/lidarr/Lidarr
synced 2025-02-21 21:47:05 +00:00
Partially implemented artist overview. Needs review
This commit is contained in:
parent
5302c0915e
commit
f97ed62fae
7 changed files with 114 additions and 18 deletions
|
@ -98,7 +98,6 @@ private List<ArtistResource> AllArtist()
|
|||
{
|
||||
//var seriesStats = _seriesStatisticsService.SeriesStatistics();
|
||||
var artistResources = _artistService.GetAllArtists().ToResource();
|
||||
Console.WriteLine("[DEBUG] Returning {0} Artists", artistResources.Count);
|
||||
MapCoversToLocal(artistResources.ToArray());
|
||||
//LinkSeriesStatistics(seriesResources, seriesStats);
|
||||
//PopulateAlternateTitles(seriesResources);
|
||||
|
@ -106,9 +105,9 @@ private List<ArtistResource> AllArtist()
|
|||
return artistResources;
|
||||
}
|
||||
|
||||
private int AddArtist(ArtistResource seriesResource)
|
||||
private int AddArtist(ArtistResource artistResource)
|
||||
{
|
||||
var model = seriesResource.ToModel();
|
||||
var model = artistResource.ToModel();
|
||||
|
||||
return _addSeriesService.AddArtist(model).Id;
|
||||
}
|
||||
|
@ -175,16 +174,6 @@ public void Handle(ArtistRenamedEvent message)
|
|||
BroadcastResourceChange(ModelAction.Updated, message.Artist.Id);
|
||||
}
|
||||
|
||||
//public void Handle(ArtistDeletedEvent message)
|
||||
//{
|
||||
// BroadcastResourceChange(ModelAction.Deleted, message.Artist.ToResource());
|
||||
//}
|
||||
|
||||
//public void Handle(ArtistRenamedEvent message)
|
||||
//{
|
||||
// BroadcastResourceChange(ModelAction.Updated, message.Artist.Id);
|
||||
//}
|
||||
|
||||
//public void Handle(MediaCoversUpdatedEvent message)
|
||||
//{
|
||||
// BroadcastResourceChange(ModelAction.Updated, message.Artist.Id);
|
||||
|
|
|
@ -22,6 +22,7 @@ public ArtistResource()
|
|||
public int ItunesId { get; set; }
|
||||
//public List<AlternateTitleResource> AlternateTitles { get; set; }
|
||||
//public string SortTitle { get; set; }
|
||||
public string Overview { get; set; }
|
||||
|
||||
public int AlbumCount
|
||||
{
|
||||
|
@ -82,7 +83,7 @@ public static ArtistResource ToResource(this Core.Music.Artist model)
|
|||
//EpisodeFileCount
|
||||
//SizeOnDisk
|
||||
//Status = resource.Status,
|
||||
//Overview = resource.Overview,
|
||||
Overview = model.Overview,
|
||||
//NextAiring
|
||||
//PreviousAiring
|
||||
//Network = resource.Network,
|
||||
|
@ -135,7 +136,7 @@ public static Core.Music.Artist ToModel(this ArtistResource resource)
|
|||
//EpisodeFileCount
|
||||
//SizeOnDisk
|
||||
//Status = resource.Status,
|
||||
//Overview = resource.Overview,
|
||||
Overview = resource.Overview,
|
||||
//NextAiring
|
||||
//PreviousAiring
|
||||
//Network = resource.Network,
|
||||
|
|
|
@ -6,6 +6,7 @@ public interface ILidarrCloudRequestBuilder
|
|||
{
|
||||
IHttpRequestBuilderFactory Services { get; }
|
||||
IHttpRequestBuilderFactory Search { get; }
|
||||
IHttpRequestBuilderFactory InternalSearch { get; }
|
||||
IHttpRequestBuilderFactory SkyHookTvdb { get; }
|
||||
}
|
||||
|
||||
|
@ -19,6 +20,9 @@ public LidarrCloudRequestBuilder()
|
|||
Search = new HttpRequestBuilder("https://itunes.apple.com/{route}/")
|
||||
.CreateFactory();
|
||||
|
||||
InternalSearch = new HttpRequestBuilder("https://itunes.apple.com/WebObjects/MZStore.woa/wa/{route}") //viewArtist or search
|
||||
.CreateFactory();
|
||||
|
||||
SkyHookTvdb = new HttpRequestBuilder("http://skyhook.lidarr.tv/v1/tvdb/{route}/{language}/")
|
||||
.SetSegment("language", "en")
|
||||
.CreateFactory();
|
||||
|
@ -28,6 +32,8 @@ public LidarrCloudRequestBuilder()
|
|||
|
||||
public IHttpRequestBuilderFactory Search { get; }
|
||||
|
||||
public IHttpRequestBuilderFactory InternalSearch { get; }
|
||||
|
||||
public IHttpRequestBuilderFactory SkyHookTvdb { get; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ protected override void MainDbUpgrade()
|
|||
.WithColumn("ArtistSlug").AsString().Nullable() //.Unique()
|
||||
.WithColumn("CleanTitle").AsString().Nullable() // Do we need this?
|
||||
.WithColumn("Monitored").AsBoolean()
|
||||
.WithColumn("Overview").AsString().Nullable()
|
||||
.WithColumn("AlbumFolder").AsBoolean().Nullable()
|
||||
.WithColumn("ArtistFolder").AsBoolean().Nullable()
|
||||
.WithColumn("LastInfoSync").AsDateTime().Nullable()
|
||||
|
|
|
@ -5,6 +5,42 @@
|
|||
|
||||
namespace NzbDrone.Core.MetadataSource.SkyHook.Resource
|
||||
{
|
||||
public class StorePlatformDataResource
|
||||
{
|
||||
public StorePlatformDataResource() { }
|
||||
public ArtistInfoResource Artist { get; set; }
|
||||
//public Lockup lockup { get; set; }
|
||||
}
|
||||
|
||||
public class ArtistInfoResource
|
||||
{
|
||||
public ArtistInfoResource() { }
|
||||
public Dictionary<int, ArtistInfoResource> Results { get; set; }
|
||||
|
||||
public bool HasArtistBio { get; set; }
|
||||
|
||||
public string url { get; set; }
|
||||
public string shortUrl { get; set; }
|
||||
|
||||
public List<string> artistContemporaries { get; set; }
|
||||
public List<string> genreNames { get; set; }
|
||||
public bool hasSocialPosts { get; set; }
|
||||
public string artistBio { get; set; }
|
||||
public bool isGroup { get; set; }
|
||||
public string id { get; set; }
|
||||
public string bornOrFormed { get; set; }
|
||||
public string name { get; set; }
|
||||
public string latestAlbumContentId { get; set; }
|
||||
public string nameRaw { get; set; }
|
||||
|
||||
//public string kind { get; set; }
|
||||
//public List<Gallery> gallery { get; set; }
|
||||
//public List<Genre> genres { get; set; }
|
||||
public List<object> artistInfluencers { get; set; }
|
||||
public List<object> artistFollowers { get; set; }
|
||||
//public string umcArtistImageUrl { get; set; }
|
||||
}
|
||||
|
||||
public class AlbumResource
|
||||
{
|
||||
public AlbumResource()
|
||||
|
@ -37,5 +73,6 @@ public ArtistResource()
|
|||
public List<AlbumResource> Results { get; set; }
|
||||
//public string ArtistName { get; set; }
|
||||
//public List<AlbumResource> Albums { get; set; }
|
||||
public StorePlatformDataResource StorePlatformData { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,11 +22,13 @@ public class SkyHookProxy : IProvideSeriesInfo, IProvideArtistInfo, ISearchForNe
|
|||
private readonly Logger _logger;
|
||||
|
||||
private readonly IHttpRequestBuilderFactory _requestBuilder;
|
||||
private readonly IHttpRequestBuilderFactory _internalRequestBuilder;
|
||||
|
||||
public SkyHookProxy(IHttpClient httpClient, ILidarrCloudRequestBuilder requestBuilder, Logger logger)
|
||||
{
|
||||
_httpClient = httpClient;
|
||||
_requestBuilder = requestBuilder.Search;
|
||||
_internalRequestBuilder = requestBuilder.InternalSearch;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
|
@ -124,14 +126,59 @@ public List<Series> SearchForNewSeries(string title)
|
|||
}
|
||||
}
|
||||
|
||||
//public Artist GetArtistInfo(int itunesId)
|
||||
//{
|
||||
// Console.WriteLine("[GetArtistInfo] id:" + itunesId);
|
||||
// //https://itunes.apple.com/lookup?id=909253
|
||||
// //var httpRequest = _requestBuilder.Create()
|
||||
// // .SetSegment("route", "lookup")
|
||||
// // .AddQueryParam("id", itunesId.ToString())
|
||||
// // .Build();
|
||||
|
||||
// // TODO: Add special header, add Overview to Artist model
|
||||
// var httpRequest = _requestBuilder.Create()
|
||||
// .SetSegment("route", "viewArtist")
|
||||
// .AddQueryParam("id", itunesId.ToString())
|
||||
// .Build();
|
||||
// httpRequest.Headers.Add("X-Apple-Store-Front", "143459-2,32 t:music3");
|
||||
|
||||
// httpRequest.AllowAutoRedirect = true;
|
||||
// httpRequest.SuppressHttpError = true;
|
||||
|
||||
// var httpResponse = _httpClient.Get<ArtistResource>(httpRequest);
|
||||
|
||||
// if (httpResponse.HasHttpError)
|
||||
// {
|
||||
// if (httpResponse.StatusCode == HttpStatusCode.NotFound)
|
||||
// {
|
||||
// throw new ArtistNotFoundException(itunesId);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// throw new HttpException(httpRequest, httpResponse);
|
||||
// }
|
||||
// }
|
||||
|
||||
// Console.WriteLine("GetArtistInfo, GetArtistInfo");
|
||||
// return MapArtists(httpResponse.Resource)[0];
|
||||
//}
|
||||
|
||||
public Tuple<Artist, List<Track>> GetArtistInfo(int itunesId)
|
||||
{
|
||||
Console.WriteLine("[GetArtistInfo] id:" + itunesId);
|
||||
//https://itunes.apple.com/lookup?id=909253
|
||||
var httpRequest = _requestBuilder.Create()
|
||||
.SetSegment("route", "lookup")
|
||||
//var httpRequest = _requestBuilder.Create()
|
||||
// .SetSegment("route", "lookup")
|
||||
// .AddQueryParam("id", itunesId.ToString())
|
||||
// .Build();
|
||||
|
||||
// TODO: Add special header, add Overview to Artist model
|
||||
var httpRequest = _internalRequestBuilder.Create()
|
||||
.SetSegment("route", "viewArtist")
|
||||
.AddQueryParam("id", itunesId.ToString())
|
||||
.Build();
|
||||
httpRequest.Headers.Add("X-Apple-Store-Front", "143459-2,32 t:music3");
|
||||
httpRequest.Headers.ContentType = "application/json";
|
||||
|
||||
httpRequest.AllowAutoRedirect = true;
|
||||
httpRequest.SuppressHttpError = true;
|
||||
|
@ -154,7 +201,7 @@ public Tuple<Artist, List<Track>> GetArtistInfo(int itunesId)
|
|||
//var tracks = httpResponse.Resource.Episodes.Select(MapEpisode);
|
||||
//var artist = MapArtist(httpResponse.Resource);
|
||||
// I don't know how we are getting tracks from iTunes yet.
|
||||
return new Tuple<Artist, List<Track>>(MapArtists(httpResponse.Resource)[0], new List<Track>());
|
||||
return new Tuple<Artist, List<Track>>(MapArtistInfo(httpResponse.Resource.StorePlatformData.Artist.Results[0]), new List<Track>());
|
||||
//return new Tuple<Artist, List<Track>>(artist, tracks.ToList());
|
||||
}
|
||||
public List<Artist> SearchForNewArtist(string title)
|
||||
|
@ -208,6 +255,20 @@ public List<Artist> SearchForNewArtist(string title)
|
|||
}
|
||||
}
|
||||
|
||||
private Artist MapArtistInfo(ArtistInfoResource resource)
|
||||
{
|
||||
// This expects ArtistInfoResource, thus just need to populate one artist
|
||||
Artist artist = new Artist();
|
||||
artist.Overview = resource.artistBio;
|
||||
artist.ArtistName = resource.name;
|
||||
foreach(var genre in resource.genreNames)
|
||||
{
|
||||
artist.Genres.Add(genre);
|
||||
}
|
||||
|
||||
return artist;
|
||||
}
|
||||
|
||||
private List<Artist> MapArtists(ArtistResource resource)
|
||||
{
|
||||
Album tempAlbum;
|
||||
|
|
|
@ -26,6 +26,7 @@ public Artist()
|
|||
public string ArtistName { get; set; }
|
||||
public string ArtistSlug { get; set; }
|
||||
public string CleanTitle { get; set; }
|
||||
public string Overview { get; set; }
|
||||
public bool Monitored { get; set; }
|
||||
public bool AlbumFolder { get; set; }
|
||||
public bool ArtistFolder { get; set; }
|
||||
|
|
Loading…
Reference in a new issue