mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-29 19:18:30 -07:00
It works now when we request an album when we do not have the artist in Lidarr. Waiting on https://github.com/lidarr/Lidarr/issues/459 to do when we have the artist
This commit is contained in:
parent
0b7a7a6bbb
commit
e02c8e4014
5 changed files with 27 additions and 9 deletions
|
@ -113,7 +113,7 @@ namespace Ombi.Api.Lidarr
|
||||||
return Api.Request<ArtistResult>(request);
|
return Api.Request<ArtistResult>(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<AlbumResponse> MontiorAlbum(int albumId, string apiKey, string baseUrl)
|
public async Task<AlbumResponse> MontiorAlbum(int albumId, string apiKey, string baseUrl)
|
||||||
{
|
{
|
||||||
var request = new Request($"{ApiVersion}/album/monitor", baseUrl, HttpMethod.Put);
|
var request = new Request($"{ApiVersion}/album/monitor", baseUrl, HttpMethod.Put);
|
||||||
request.AddJsonBody(new
|
request.AddJsonBody(new
|
||||||
|
@ -122,7 +122,7 @@ namespace Ombi.Api.Lidarr
|
||||||
monitored = true
|
monitored = true
|
||||||
});
|
});
|
||||||
AddHeaders(request, apiKey);
|
AddHeaders(request, apiKey);
|
||||||
return Api.Request<AlbumResponse>(request);
|
return (await Api.Request<List<AlbumResponse>>(request)).FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<List<AlbumResponse>> GetAllAlbumsByArtistId(int artistId, string apiKey, string baseUrl)
|
public Task<List<AlbumResponse>> GetAllAlbumsByArtistId(int artistId, string apiKey, string baseUrl)
|
||||||
|
|
|
@ -44,5 +44,6 @@ namespace Ombi.Api.Lidarr.Models
|
||||||
public int selectedOption { get; set; }
|
public int selectedOption { get; set; }
|
||||||
public bool monitored { get; set; }
|
public bool monitored { get; set; }
|
||||||
public bool searchForMissingAlbums { get; set; }
|
public bool searchForMissingAlbums { get; set; }
|
||||||
|
public string[] AlbumsToMonitor { get; set; } // Uses the MusicBrainzAlbumId!
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -57,7 +57,8 @@ namespace Ombi.Core.Senders
|
||||||
{
|
{
|
||||||
monitored = true,
|
monitored = true,
|
||||||
searchForMissingAlbums = false,
|
searchForMissingAlbums = false,
|
||||||
selectedOption = 6 // None
|
selectedOption = 6, // None
|
||||||
|
AlbumsToMonitor = new[] {model.ForeignAlbumId}
|
||||||
},
|
},
|
||||||
added = DateTime.Now,
|
added = DateTime.Now,
|
||||||
monitored = true,
|
monitored = true,
|
||||||
|
@ -76,7 +77,7 @@ namespace Ombi.Core.Senders
|
||||||
if (result != null && result.id > 0)
|
if (result != null && result.id > 0)
|
||||||
{
|
{
|
||||||
// Setup the albums
|
// Setup the albums
|
||||||
await SetupAlbum(model, result, settings);
|
return new SenderResult { Message = "Album has been requested!", Sent = true, Success = true };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -91,9 +92,24 @@ namespace Ombi.Core.Senders
|
||||||
{
|
{
|
||||||
// Get the album id
|
// Get the album id
|
||||||
var albums = await _lidarrApi.GetAllAlbumsByArtistId(artist.id, settings.ApiKey, settings.FullUri);
|
var albums = await _lidarrApi.GetAllAlbumsByArtistId(artist.id, settings.ApiKey, settings.FullUri);
|
||||||
// Get the album we want.
|
|
||||||
var album = albums.FirstOrDefault(x =>
|
var album = albums.FirstOrDefault(x =>
|
||||||
x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase));
|
x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase));
|
||||||
|
var maxRetryCount = 10; // 5 seconds
|
||||||
|
var currentRetry = 0;
|
||||||
|
while (!albums.Any() || album == null)
|
||||||
|
{
|
||||||
|
if (currentRetry >= maxRetryCount)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
currentRetry++;
|
||||||
|
await Task.Delay(500);
|
||||||
|
albums = await _lidarrApi.GetAllAlbumsByArtistId(artist.id, settings.ApiKey, settings.FullUri);
|
||||||
|
album = albums.FirstOrDefault(x =>
|
||||||
|
x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase));
|
||||||
|
}
|
||||||
|
// Get the album we want.
|
||||||
|
|
||||||
if (album == null)
|
if (album == null)
|
||||||
{
|
{
|
||||||
return new SenderResult { Message = "Could not find album in Lidarr", Sent = false, Success = false };
|
return new SenderResult { Message = "Could not find album in Lidarr", Sent = false, Success = false };
|
||||||
|
|
|
@ -88,9 +88,10 @@ export class MusicRequestsComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeRequest(request: IAlbumRequest) {
|
public removeRequest(request: IAlbumRequest) {
|
||||||
this.requestService.removeAlbumRequest(request);
|
this.requestService.removeAlbumRequest(request).subscribe(x => {
|
||||||
this.removeRequestFromUi(request);
|
this.removeRequestFromUi(request);
|
||||||
this.loadRequests(this.amountToLoad, this.currentlyLoaded = 0);
|
this.loadRequests(this.amountToLoad, this.currentlyLoaded = 0);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public changeAvailability(request: IAlbumRequest, available: boolean) {
|
public changeAvailability(request: IAlbumRequest, available: boolean) {
|
||||||
|
|
|
@ -167,7 +167,7 @@ export class RequestService extends ServiceHelpers {
|
||||||
return this.http.get<IAlbumRequest[]>(`${this.url}music/search/${search}`, {headers: this.headers});
|
return this.http.get<IAlbumRequest[]>(`${this.url}music/search/${search}`, {headers: this.headers});
|
||||||
}
|
}
|
||||||
|
|
||||||
public removeAlbumRequest(request: IAlbumRequest) {
|
public removeAlbumRequest(request: IAlbumRequest): any {
|
||||||
this.http.delete(`${this.url}music/${request.id}`, {headers: this.headers}).subscribe();
|
this.http.delete(`${this.url}music/${request.id}`, {headers: this.headers}).subscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue