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.chop
|
||||||
import eu.kanade.tachiyomi.util.isServiceRunning
|
import eu.kanade.tachiyomi.util.isServiceRunning
|
||||||
import eu.kanade.tachiyomi.util.sendLocalBroadcast
|
import eu.kanade.tachiyomi.util.sendLocalBroadcast
|
||||||
|
import exh.BackupEntry
|
||||||
|
import exh.EXHMigrations
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
import rx.Subscription
|
import rx.Subscription
|
||||||
import rx.schedulers.Schedulers
|
import rx.schedulers.Schedulers
|
||||||
@ -223,7 +225,21 @@ class BackupRestoreService : Service() {
|
|||||||
val history = backupManager.parser.fromJson<List<DHistory>>(obj.get(HISTORY) ?: JsonArray())
|
val history = backupManager.parser.fromJson<List<DHistory>>(obj.get(HISTORY) ?: JsonArray())
|
||||||
val tracks = backupManager.parser.fromJson<List<TrackImpl>>(obj.get(TRACK) ?: 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) {
|
if (observable != null) {
|
||||||
observable
|
observable
|
||||||
} else {
|
} else {
|
||||||
|
@ -2,12 +2,16 @@ package exh
|
|||||||
|
|
||||||
import com.pushtorefresh.storio.sqlite.queries.Query
|
import com.pushtorefresh.storio.sqlite.queries.Query
|
||||||
import com.pushtorefresh.storio.sqlite.queries.RawQuery
|
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.DatabaseHelper
|
||||||
|
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.database.models.Track
|
||||||
import eu.kanade.tachiyomi.data.database.resolvers.MangaUrlPutResolver
|
import eu.kanade.tachiyomi.data.database.resolvers.MangaUrlPutResolver
|
||||||
import eu.kanade.tachiyomi.data.database.tables.MangaTable
|
import eu.kanade.tachiyomi.data.database.tables.MangaTable
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
||||||
|
import rx.Observable
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
import java.net.URISyntaxException
|
import java.net.URISyntaxException
|
||||||
@ -35,7 +39,7 @@ object EXHMigrations {
|
|||||||
db.lowLevel().executeSQL(RawQuery.builder()
|
db.lowLevel().executeSQL(RawQuery.builder()
|
||||||
.query("""
|
.query("""
|
||||||
UPDATE ${MangaTable.TABLE}
|
UPDATE ${MangaTable.TABLE}
|
||||||
SET ${MangaTable.COL_SOURCE} = 260868874183818481
|
SET ${MangaTable.COL_SOURCE} = $HENTAI_CAFE_SOURCE_ID
|
||||||
WHERE ${MangaTable.COL_SOURCE} = 6908
|
WHERE ${MangaTable.COL_SOURCE} = 6908
|
||||||
""".trimIndent())
|
""".trimIndent())
|
||||||
.affectsTables(MangaTable.TABLE)
|
.affectsTables(MangaTable.TABLE)
|
||||||
@ -69,6 +73,22 @@ object EXHMigrations {
|
|||||||
return false
|
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 {
|
private fun getUrlWithoutDomain(orig: String): String {
|
||||||
return try {
|
return try {
|
||||||
val uri = URI(orig)
|
val uri = URI(orig)
|
||||||
@ -82,4 +102,12 @@ object EXHMigrations {
|
|||||||
orig
|
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