Migrate HentaiCafe IDs and nhentai URLs in backups
This commit is contained in:
parent
0e4c0fba5c
commit
49833fcc48
@ -27,6 +27,8 @@ import eu.kanade.tachiyomi.source.Source
|
||||
import eu.kanade.tachiyomi.util.chop
|
||||
import eu.kanade.tachiyomi.util.isServiceRunning
|
||||
import eu.kanade.tachiyomi.util.sendLocalBroadcast
|
||||
import exh.BackupEntry
|
||||
import exh.EXHMigrations
|
||||
import rx.Observable
|
||||
import rx.Subscription
|
||||
import rx.schedulers.Schedulers
|
||||
@ -223,7 +225,21 @@ class BackupRestoreService : Service() {
|
||||
val history = backupManager.parser.fromJson<List<DHistory>>(obj.get(HISTORY) ?: JsonArray())
|
||||
val tracks = backupManager.parser.fromJson<List<TrackImpl>>(obj.get(TRACK) ?: JsonArray())
|
||||
|
||||
val observable = getMangaRestoreObservable(manga, chapters, categories, history, tracks)
|
||||
// EXH -->
|
||||
val migrated = EXHMigrations.migrateBackupEntry(
|
||||
BackupEntry(
|
||||
manga,
|
||||
chapters,
|
||||
categories,
|
||||
history,
|
||||
tracks
|
||||
)
|
||||
)
|
||||
|
||||
val observable = migrated.flatMap { (manga, chapters, categories, history, tracks) ->
|
||||
getMangaRestoreObservable(manga, chapters, categories, history, tracks)
|
||||
}
|
||||
// EXH <--
|
||||
if (observable != null) {
|
||||
observable
|
||||
} else {
|
||||
|
@ -2,12 +2,16 @@ package exh
|
||||
|
||||
import com.pushtorefresh.storio.sqlite.queries.Query
|
||||
import com.pushtorefresh.storio.sqlite.queries.RawQuery
|
||||
import eu.kanade.tachiyomi.data.backup.models.DHistory
|
||||
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.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.database.resolvers.MangaUrlPutResolver
|
||||
import eu.kanade.tachiyomi.data.database.tables.MangaTable
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
||||
import rx.Observable
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.net.URI
|
||||
import java.net.URISyntaxException
|
||||
@ -35,7 +39,7 @@ object EXHMigrations {
|
||||
db.lowLevel().executeSQL(RawQuery.builder()
|
||||
.query("""
|
||||
UPDATE ${MangaTable.TABLE}
|
||||
SET ${MangaTable.COL_SOURCE} = 260868874183818481
|
||||
SET ${MangaTable.COL_SOURCE} = $HENTAI_CAFE_SOURCE_ID
|
||||
WHERE ${MangaTable.COL_SOURCE} = 6908
|
||||
""".trimIndent())
|
||||
.affectsTables(MangaTable.TABLE)
|
||||
@ -69,6 +73,22 @@ object EXHMigrations {
|
||||
return false
|
||||
}
|
||||
|
||||
fun migrateBackupEntry(backupEntry: BackupEntry): Observable<BackupEntry> {
|
||||
val (manga, chapters, categories, history, tracks) = backupEntry
|
||||
|
||||
// Migrate HentaiCafe source IDs
|
||||
if(manga.source == 6908L) {
|
||||
manga.source = HENTAI_CAFE_SOURCE_ID
|
||||
}
|
||||
|
||||
// Migrate nhentai URLs
|
||||
if(manga.source == NHENTAI_SOURCE_ID) {
|
||||
manga.url = getUrlWithoutDomain(manga.url)
|
||||
}
|
||||
|
||||
return Observable.just(backupEntry)
|
||||
}
|
||||
|
||||
private fun getUrlWithoutDomain(orig: String): String {
|
||||
return try {
|
||||
val uri = URI(orig)
|
||||
@ -82,4 +102,12 @@ object EXHMigrations {
|
||||
orig
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class BackupEntry(
|
||||
val manga: Manga,
|
||||
val chapters: List<Chapter>,
|
||||
val categories: List<String>,
|
||||
val history: List<DHistory>,
|
||||
val tracks: List<Track>
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user