Rename downloaded chapters (#3216)
This commit is contained in:
parent
067627b51a
commit
0fccbbc0ca
2 changed files with 31 additions and 0 deletions
|
@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.source.Source
|
||||||
import eu.kanade.tachiyomi.source.SourceManager
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
import eu.kanade.tachiyomi.source.model.Page
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
|
import timber.log.Timber
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -239,4 +240,26 @@ class DownloadManager(private val context: Context) {
|
||||||
deleteChapters(chapters, manga, source)
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,11 +3,14 @@ package eu.kanade.tachiyomi.util.chapter
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
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.Source
|
||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.util.TreeSet
|
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.
|
* 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")
|
throw Exception("No chapters found")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val downloadManager: DownloadManager = Injekt.get()
|
||||||
|
|
||||||
// Chapters from db.
|
// Chapters from db.
|
||||||
val dbChapters = db.getChapters(manga).executeAsBlocking()
|
val dbChapters = db.getChapters(manga).executeAsBlocking()
|
||||||
|
|
||||||
|
@ -60,6 +65,9 @@ fun syncChaptersWithSource(
|
||||||
ChapterRecognition.parseChapterNumber(sourceChapter, manga)
|
ChapterRecognition.parseChapterNumber(sourceChapter, manga)
|
||||||
|
|
||||||
if (shouldUpdateDbChapter(dbChapter, sourceChapter)) {
|
if (shouldUpdateDbChapter(dbChapter, sourceChapter)) {
|
||||||
|
if (dbChapter.name != sourceChapter.name && downloadManager.isChapterDownloaded(dbChapter, manga)) {
|
||||||
|
downloadManager.renameChapter(source, manga, dbChapter, sourceChapter)
|
||||||
|
}
|
||||||
dbChapter.scanlator = sourceChapter.scanlator
|
dbChapter.scanlator = sourceChapter.scanlator
|
||||||
dbChapter.name = sourceChapter.name
|
dbChapter.name = sourceChapter.name
|
||||||
dbChapter.date_upload = sourceChapter.date_upload
|
dbChapter.date_upload = sourceChapter.date_upload
|
||||||
|
|
Reference in a new issue