Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -228,13 +228,20 @@ public List<ManualImportItem> UpdateItems(List<ManualImportItem> items)
{
var item = pair.Item;
var decision = pair.Decision;
var explicitBook = item.Book;
var explicitEdition = item.Edition;

if (decision.Item.Author != null)
{
item.Author = decision.Item.Author;
}

if (decision.Item.Book != null)
if (explicitEdition != null)
{
item.Book = explicitBook;
item.Edition = explicitEdition;
}
else if (decision.Item.Book != null)
{
item.Book = decision.Item.Book;
item.Edition = decision.Item.Edition;
Expand Down
33 changes: 31 additions & 2 deletions src/Readarr.Api.V1/ManualImport/ManualImportController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using NzbDrone.Core.Books;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.BookImport.Manual;
using NzbDrone.Core.MetadataSource;
using NzbDrone.Core.Qualities;
using Readarr.Http;

Expand All @@ -17,18 +18,21 @@ public class ManualImportController : Controller
private readonly IBookService _bookService;
private readonly IEditionService _editionService;
private readonly IManualImportService _manualImportService;
private readonly IProvideBookInfo _bookInfo;
private readonly Logger _logger;

public ManualImportController(IManualImportService manualImportService,
IAuthorService authorService,
IEditionService editionService,
IBookService bookService,
IProvideBookInfo bookInfo,
Logger logger)
{
_authorService = authorService;
_bookService = bookService;
_editionService = editionService;
_manualImportService = manualImportService;
_bookInfo = bookInfo;
_logger = logger;
}

Expand Down Expand Up @@ -65,19 +69,44 @@ private ManualImportResource AddQualityWeight(ManualImportResource item)
return item;
}

private Edition ResolveEdition(Book book, string foreignEditionId)
{
if (foreignEditionId == null)
{
return null;
}

var edition = _editionService.GetEditionByForeignEditionId(foreignEditionId);
if (edition != null)
{
return edition;
}

if (book?.ForeignBookId == null)
{
return null;
}

var tuple = _bookInfo.GetBookInfo(book.ForeignBookId);
return tuple.Item2.Editions.Value.SingleOrDefault(x => x.ForeignEditionId == foreignEditionId);
}

private List<ManualImportResource> UpdateImportItems(List<ManualImportUpdateResource> resources)
{
var items = new List<ManualImportItem>();
foreach (var resource in resources)
{
var book = resource.BookId.HasValue ? _bookService.GetBook(resource.BookId.Value) : null;
var edition = ResolveEdition(book, resource.ForeignEditionId);

items.Add(new ManualImportItem
{
Id = resource.Id,
Path = resource.Path,
Name = resource.Name,
Author = resource.AuthorId.HasValue ? _authorService.GetAuthor(resource.AuthorId.Value) : null,
Book = resource.BookId.HasValue ? _bookService.GetBook(resource.BookId.Value) : null,
Edition = resource.ForeignEditionId == null ? null : _editionService.GetEditionByForeignEditionId(resource.ForeignEditionId),
Book = book,
Edition = edition,
Quality = resource.Quality,
ReleaseGroup = resource.ReleaseGroup,
IndexerFlags = resource.IndexerFlags,
Expand Down
Loading