mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Migrate HentaiCafe IDs and nhentai URLs in backups
This commit is contained in:
		@@ -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>
 | 
			
		||||
)
 | 
			
		||||
		Reference in New Issue
	
	Block a user