Skip to content

Commit

Permalink
Tachiyomi + Fixes (Kareadita#1481)
Browse files Browse the repository at this point in the history
* Fixed a bootstrap bug

* Fixed repeating images on collection detail

* Fixed up some logic in library watcher which wasn't processing all of the queue.

* When parsing non-epubs in Book library, use Manga parsing for Volume support to better support Light Novels

* Fixed some bugs with the tachiyomi plugin api's for progress tracking
  • Loading branch information
majora2007 authored Aug 25, 2022
1 parent 36300c5 commit 0cd14b3
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 24 deletions.
2 changes: 2 additions & 0 deletions API.Tests/Parser/BookParserTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@ public class BookParserTests
[Theory]
[InlineData("Gifting The Wonderful World With Blessings! - 3 Side Stories [yuNS][Unknown]", "Gifting The Wonderful World With Blessings!")]
[InlineData("BBC Focus 00 The Science of Happiness 2nd Edition (2018)", "BBC Focus 00 The Science of Happiness 2nd Edition")]
[InlineData("Faust - Volume 01 [Del Rey][Scans_Compressed]", "Faust")]
public void ParseSeriesTest(string filename, string expected)
{
Assert.Equal(expected, API.Parser.Parser.ParseSeries(filename));
}

[Theory]
[InlineData("Harrison, Kim - Dates from Hell - Hollows Vol 2.5.epub", "2.5")]
[InlineData("Faust - Volume 01 [Del Rey][Scans_Compressed]", "1")]
public void ParseVolumeTest(string filename, string expected)
{
Assert.Equal(expected, API.Parser.Parser.ParseVolume(filename));
Expand Down
8 changes: 4 additions & 4 deletions API/Controllers/TachiyomiController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,8 @@ public async Task<ActionResult<ChapterDto>> GetLatestChapter(int seriesId)
// If prevChapterId is -1, this means either nothing is read or everything is read.
if (prevChapterId == -1)
{
var userWithProgress = await _unitOfWork.UserRepository.GetUserByIdAsync(userId, AppUserIncludes.Progress);
var userHasProgress =
userWithProgress.Progresses.Any(x => x.SeriesId == seriesId);
var series = await _unitOfWork.SeriesRepository.GetSeriesDtoByIdAsync(seriesId, userId);
var userHasProgress = series.PagesRead == 0 || series.PagesRead < series.Pages;

// If the user doesn't have progress, then return null, which the extension will catch as 204 (no content) and report nothing as read
if (!userHasProgress) return null;
Expand All @@ -75,7 +74,8 @@ public async Task<ActionResult<ChapterDto>> GetLatestChapter(int seriesId)
// There is progress, we now need to figure out the highest volume or chapter and return that.
var prevChapter = await _unitOfWork.ChapterRepository.GetChapterDtoAsync(prevChapterId);
var volumeWithProgress = await _unitOfWork.VolumeRepository.GetVolumeDtoAsync(prevChapter.VolumeId, userId);
if (volumeWithProgress.Number != 0)
// We only encode for single-file volumes
if (volumeWithProgress.Number != 0 && volumeWithProgress.Chapters.Count == 1)
{
// The progress is on a volume, encode it as a fake chapterDTO
return Ok(new ChapterDto()
Expand Down
6 changes: 3 additions & 3 deletions API/Parser/DefaultParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ public ParserInfo Parse(string filePath, string rootPath, LibraryType type = Lib
{
ret = new ParserInfo()
{
Chapters = type == LibraryType.Manga ? Parser.ParseChapter(fileName) : Parser.ParseComicChapter(fileName),
Series = type == LibraryType.Manga ? Parser.ParseSeries(fileName) : Parser.ParseComicSeries(fileName),
Volumes = type == LibraryType.Manga ? Parser.ParseVolume(fileName) : Parser.ParseComicVolume(fileName),
Chapters = type == LibraryType.Comic ? Parser.ParseComicChapter(fileName) : Parser.ParseChapter(fileName),
Series = type == LibraryType.Comic ? Parser.ParseComicSeries(fileName) : Parser.ParseSeries(fileName),
Volumes = type == LibraryType.Comic ? Parser.ParseComicVolume(fileName) : Parser.ParseVolume(fileName),
Filename = Path.GetFileName(filePath),
Format = Parser.ParseFormat(filePath),
Title = Path.GetFileNameWithoutExtension(fileName),
Expand Down
6 changes: 3 additions & 3 deletions API/Services/Tasks/Scanner/LibraryWatcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ private void ProcessChange(string filePath, bool isDirectoryChange = false)
};
if (!_scanQueue.Contains(queueItem, _folderScanQueueableComparer))
{
_logger.LogDebug("[LibraryWatcher] Queuing job for {Folder}", fullPath);
_logger.LogDebug("[LibraryWatcher] Queuing job for {Folder} at {TimeStamp}", fullPath, DateTime.Now);
_scanQueue.Enqueue(queueItem);
}

Expand All @@ -221,12 +221,12 @@ private void ProcessQueue()
_logger.LogDebug("[LibraryWatcher] Scheduling ScanSeriesFolder for {Folder}", item.FolderPath);
BackgroundJob.Enqueue(() => _scannerService.ScanFolder(item.FolderPath));
_scanQueue.Dequeue();
i++;
}
else
{
break;
i++;
}

}

if (_scanQueue.Count > 0)
Expand Down
23 changes: 13 additions & 10 deletions API/Services/Tasks/Scanner/ProcessSeries.cs
Original file line number Diff line number Diff line change
Expand Up @@ -157,18 +157,21 @@ await _eventHub.SendMessageAsync(MessageFactory.Error,
series.LastFolderScanned = DateTime.Now;
_unitOfWork.SeriesRepository.Attach(series);

try
if (_unitOfWork.HasChanges())
{
await _unitOfWork.CommitAsync();
}
catch (Exception ex)
{
await _unitOfWork.RollbackAsync();
_logger.LogCritical(ex, "[ScannerService] There was an issue writing to the for series {@SeriesName}", series);
try
{
await _unitOfWork.CommitAsync();
}
catch (Exception ex)
{
await _unitOfWork.RollbackAsync();
_logger.LogCritical(ex, "[ScannerService] There was an issue writing to the for series {@SeriesName}", series);

await _eventHub.SendMessageAsync(MessageFactory.Error,
MessageFactory.ErrorEvent($"There was an issue writing to the DB for Series {series}",
string.Empty));
await _eventHub.SendMessageAsync(MessageFactory.Error,
MessageFactory.ErrorEvent($"There was an issue writing to the DB for Series {series}",
ex.Message));
}
}
}
catch (Exception ex)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ <h2 *ngIf="collectionTag !== undefined">
[filterSettings]="filterSettings"
[filterOpen]="filterOpen"
[parentScroll]="scrollingBlock"
[trackByIdentity]="trackByIdentity"
[jumpBarKeys]="jumpbarKeys"
(applyFilter)="updateFilter($event)">
<ng-template #cardItem let-item let-position="idx">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ export class CollectionDetailComponent implements OnInit, OnDestroy, AfterConten
jumpbarKeys: Array<JumpKey> = [];

filterOpen: EventEmitter<boolean> = new EventEmitter();
trackByIdentity = (index: number, item: Series) => `${item.name}_${item.localizedName}_${item.pagesRead}`;


private onDestory: Subject<void> = new Subject<void>();
Expand Down
4 changes: 0 additions & 4 deletions UI/Web/src/theme/components/_modal.scss
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
.modal {
z-index: 1056; // ngb v12 bug: https://github.com/ng-bootstrap/ng-bootstrap/issues/2686
}

.modal-content {
background-color: var(--bs-body-bg);
color: var(--body-text-color);
Expand Down

0 comments on commit 0cd14b3

Please sign in to comment.