NerdNumber9 603fd84753 Rewrite tag searching to use SQL
Fix EHentai/ExHentai
Fix hitomi.la
Fix hitomi.la crashing application
Rewrite hitomi.la search engine to be faster, use less CPU and require no preloading
Fix nhentai
Add additional filters to nhentai
Fix PervEden
Introduce delegated sources
Rewrite HentaiCafe to be a delegated source
Introduce ability to save/load search presets
Temporarily disable misbehaving native Tachiyomi migrations
Fix tap-to-search-tag breaking on aliased tags
Add debug menu
Add experimental automatic captcha solver
Add app name to wakelock names
Add ability to interrupt metadata migrator
Fix incognito open-in-browser being zoomed in immediately when it's opened
2019-04-06 07:35:36 -04:00

53 lines
2.1 KiB
Kotlin
Executable File

package exh.metadata
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.online.LewdSource
import eu.kanade.tachiyomi.ui.library.LibraryItem
import exh.*
import exh.metadata.models.*
import io.realm.Realm
import io.realm.RealmQuery
import io.realm.RealmResults
import timber.log.Timber
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import kotlin.reflect.KClass
//fun Realm.loadAllMetadata(): Map<KClass<out SearchableGalleryMetadata>, RealmResults<out SearchableGalleryMetadata>> =
// Injekt.get<SourceManager>().getOnlineSources().filterIsInstance<LewdSource<*, *>>().map {
// it.queryAll()
// }.associate {
// it.clazz to it.query(this@loadAllMetadata).sort(SearchableGalleryMetadata::mangaId.name).findAll()
// }.toMap()
//fun Realm.queryMetadataFromManga(manga: Manga,
// meta: RealmQuery<SearchableGalleryMetadata>? = null):
// RealmQuery<out SearchableGalleryMetadata> =
// Injekt.get<SourceManager>().get(manga.source)?.let {
// (it as LewdSource<*, *>).queryFromUrl(manga.url) as GalleryQuery<SearchableGalleryMetadata>
// }?.query(this, meta) ?: throw IllegalArgumentException("Unknown source type!")
/*fun Realm.syncMangaIds(mangas: List<LibraryItem>) {
Timber.d("--> EH: Begin syncing ${mangas.size} manga IDs...")
executeTransaction {
mangas.forEach { manga ->
if(isLewdSource(manga.manga.source)) {
try {
manga.hasMetadata =
queryMetadataFromManga(manga.manga).findFirst()?.let { meta ->
meta.mangaId = manga.manga.id
true
} ?: false
} catch (e: Exception) {
Timber.w(e, "Error syncing manga IDs! Ignoring...")
}
}
}
}
Timber.d("--> EH: Finish syncing ${mangas.size} manga IDs!")
}*/
//val Manga.metadataClass
// get() = (Injekt.get<SourceManager>().get(source) as? LewdSource<*, *>)?.queryAll()?.clazz