Rename downloaded chapters (#3216)

This commit is contained in:
Chris Allan 2020-05-20 19:42:30 -07:00 committed by GitHub
parent 067627b51a
commit 0fccbbc0ca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 0 deletions

View file

@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.model.Page
import rx.Observable
import timber.log.Timber
import uy.kohesive.injekt.injectLazy
/**
@ -239,4 +240,26 @@ class DownloadManager(private val context: Context) {
deleteChapters(chapters, manga, source)
}
}
/**
* Renames an already downloaded chapter
*
* @param source the source of the manga.
* @param manga the manga of the chapter.
* @param oldChapter the existing chapter with the old name.
* @param newChapter the target chapter with the new name.
*/
fun renameChapter(source: Source, manga: Manga, oldChapter: Chapter, newChapter: Chapter) {
val oldName = provider.getChapterDirName(oldChapter)
val newName = provider.getChapterDirName(newChapter)
val mangaDir = provider.getMangaDir(manga, source)
val oldFolder = mangaDir.findFile(oldName)
if (oldFolder?.renameTo(newName) == true) {
cache.removeChapter(oldChapter, manga)
cache.addChapter(newName, mangaDir, manga)
} else {
Timber.e("Could not rename downloaded chapter: %s.", oldName)
}
}
}

View file

@ -3,11 +3,14 @@ package eu.kanade.tachiyomi.util.chapter
import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Chapter
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.online.HttpSource
import java.util.Date
import java.util.TreeSet
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
/**
* Helper method for syncing the list of chapters from the source with the ones from the database.
@ -28,6 +31,8 @@ fun syncChaptersWithSource(
throw Exception("No chapters found")
}
val downloadManager: DownloadManager = Injekt.get()
// Chapters from db.
val dbChapters = db.getChapters(manga).executeAsBlocking()
@ -60,6 +65,9 @@ fun syncChaptersWithSource(
ChapterRecognition.parseChapterNumber(sourceChapter, manga)
if (shouldUpdateDbChapter(dbChapter, sourceChapter)) {
if (dbChapter.name != sourceChapter.name && downloadManager.isChapterDownloaded(dbChapter, manga)) {
downloadManager.renameChapter(source, manga, dbChapter, sourceChapter)
}
dbChapter.scanlator = sourceChapter.scanlator
dbChapter.name = sourceChapter.name
dbChapter.date_upload = sourceChapter.date_upload