Changing the downloads folder naming AGAIN

This time folders are named just the chapter, or scanlator_chapterName if there's a scanlator

Migrations now needs a rename to set the chapters from the new to the new new  format
This commit is contained in:
Jay 2020-01-11 04:29:56 -08:00
parent a5120edd0e
commit f475a0882b
4 changed files with 41 additions and 5 deletions

View file

@ -1,5 +1,6 @@
package eu.kanade.tachiyomi
import eu.kanade.tachiyomi.data.download.DownloadProvider
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
@ -60,6 +61,8 @@ object Migrations {
}
}
}
if (oldVersion < 54)
DownloadProvider(context).renameChaapters()
return true
}
return false

View file

@ -121,7 +121,7 @@ class DownloadCache(
/**
* Renews the downloads cache.
*/
private fun renew() {
fun renew() {
val onlineSources = sourceManager.getOnlineSources()
val sourceDirs = rootDir.dir.listFiles()

View file

@ -4,11 +4,13 @@ import android.content.Context
import android.net.Uri
import com.hippo.unifile.UniFile
import eu.kanade.tachiyomi.R
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.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.util.DiskUtil
import uy.kohesive.injekt.injectLazy
@ -97,7 +99,37 @@ class DownloadProvider(private val context: Context) {
*/
fun findChapterDirs(chapters: List<Chapter>, manga: Manga, source: Source): List<UniFile> {
val mangaDir = findMangaDir(manga, source) ?: return emptyList()
return chapters.flatMap { getValidChapterDirNames(it) }.mapNotNull { mangaDir.findFile(it) }
return chapters.mapNotNull { chp ->
getValidChapterDirNames(chp).mapNotNull { mangaDir.findFile(it) }.firstOrNull()
}
}
/**
* Renames the chapter folders with id's and removes it + null scanlators
*
* @param chapters the chapters to query.
* @param manga the manga of the chapter.
* @param source the source of the chapter.
*/
fun renameChaapters() {
val db by injectLazy<DatabaseHelper>()
val sourceManager by injectLazy<SourceManager>()
val mangas = db.getLibraryMangas().executeAsBlocking()
mangas.forEach sfor@{ manga ->
val sourceId = manga.source
val source = sourceManager.get(sourceId) ?: return@sfor
val mangaDir = findMangaDir(manga, source) ?: return@sfor
mangaDir.listFiles()?.forEach {
val nameSplit = it.name?.split("_")?.toMutableList() ?: return@sfor
if (nameSplit.size > 2 && nameSplit.first().first().isDigit()) {
nameSplit.removeAt(0)
val newName = nameSplit.joinToString("_").removePrefix("null_")
it.renameTo(newName)
}
}
}
val cache = DownloadCache(context, this, sourceManager)
cache.renew()
}
/**
@ -157,7 +189,10 @@ class DownloadProvider(private val context: Context) {
* @param chapter the chapter to query.
*/
fun getChapterDirName(chapter: Chapter): String {
return DiskUtil.buildValidFilename("${chapter.id}_${chapter.scanlator}_${chapter.name}")
return DiskUtil.buildValidFilename(
if (chapter.scanlator != null) "${chapter.scanlator}_${chapter.name}"
else chapter.name
)
}
/**

View file

@ -9,7 +9,6 @@ import android.graphics.Color
import android.graphics.Rect
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
@ -63,7 +62,6 @@ import kotlinx.android.synthetic.main.main_activity.*
import kotlinx.coroutines.delay
import timber.log.Timber
import uy.kohesive.injekt.injectLazy
import java.lang.Exception
import java.util.Date
class MainActivity : BaseActivity() {