improved manual import

pull/3344/head
adechant 4 months ago
parent 652f2c41dd
commit 9335788f40

1
.gitignore vendored

@ -2,6 +2,7 @@
src/**/[Bb]in/
src/**/[Oo]bj/
db/*
books/*
## Ignore Visual Studio temporary files, build results, and

@ -37,6 +37,9 @@ namespace NzbDrone.Core.MediaFiles.BookImport.Identification
.First()
.First();
var folderAuthors = localTracks.Where(a => a.FolderTrackInfo.AuthorName.IsNotNullOrWhiteSpace()).Select(a => a.FolderTrackInfo.AuthorName).ToList();
fileAuthors.AddRange(folderAuthors);
var authors = GetAuthorVariants(fileAuthors);
dist.AddString("author", authors, edition.Book.Value.AuthorMetadata.Value.Name);
@ -65,6 +68,11 @@ namespace NzbDrone.Core.MediaFiles.BookImport.Identification
titleOptions.Add($"{l.Series.Value.Title} Book {l.Position} {edition.Title}");
titleOptions.Add($"{edition.Title} {l.Series.Value.Title} {l.Position}");
titleOptions.Add($"{edition.Title} {l.Series.Value.Title} Book {l.Position}");
titleOptions.Add($"{l.Series.Value.Title} {l.Position} - {edition.Title}");
titleOptions.Add($"{l.Series.Value.Title} Book {l.Position} - {edition.Title}");
titleOptions.Add($"{edition.Title} - {l.Series.Value.Title} {l.Position}");
titleOptions.Add($"{edition.Title} - {l.Series.Value.Title} Book {l.Position}");
}
}
}
@ -168,6 +176,25 @@ namespace NzbDrone.Core.MediaFiles.BookImport.Identification
authors.AddRange(SplitAuthor(fileAuthors[0]));
}
foreach (var author in fileAuthors)
{
if (author.Contains('-'))
{
var splits = author.Split('-', 2).Select(x => x.Trim());
foreach (var split in splits)
{
if (split.Contains(','))
{
var newSplit = split.Split(',', 2).Select(x => x.Trim());
if (!newSplit.First().Contains(' '))
{
authors.Add(newSplit.Reverse().ConcatToString(" "));
}
}
}
}
}
foreach (var author in fileAuthors)
{
if (author.Contains(','))

@ -178,16 +178,19 @@ namespace Readarr.Api.V1.BookFiles
var list = _manualImportService.ProcessFile(combined, book, bookAuthor, FilterFilesType.None, false);
if (list.Empty())
{
//delete the directory after manual import
_diskProvider.DeleteFolder(directory, true);
throw new NzbDroneClientException(HttpStatusCode.UnprocessableEntity, "import failed.");
}
else if (!list.First().Rejections.Empty())
{
//delete the directory after manual import
_diskProvider.DeleteFolder(directory, true);
throw new NzbDroneClientException(HttpStatusCode.UnprocessableEntity, "import failed.");
}
//delete the directory after manual import
_diskProvider.DeleteFolder(directory, true);
return Accepted();
}

@ -145,7 +145,7 @@ namespace Readarr.Api.V1.OPDS
return publications;
}
// /opds/monitored
// /opds/unmonitored
[HttpGet("unmonitored")]
public OPDSPublicationsResource GetOPDSUnmonitoredPublications([FromQuery] PagingRequestResource paging)
{
@ -165,7 +165,7 @@ namespace Readarr.Api.V1.OPDS
return publications;
}
// /opds/publications/search
// /opds/unmonitored/search
[HttpGet("unmonitored/search")]
public OPDSPublicationsResource GetOPDSUnmonitoredForQuery([FromQuery] PagingRequestResource paging, [FromQuery] string query, [FromQuery] string title, [FromQuery] string author)
{

Loading…
Cancel
Save