Mangadex replace list of langs with just the source lang

This commit is contained in:
Jobobby04 2021-01-10 17:28:20 -05:00
parent 6bb7b676bd
commit 73e861ec9e
5 changed files with 21 additions and 22 deletions

View File

@ -119,20 +119,20 @@ class MangaDex(delegate: HttpSource, val context: Context) :
override suspend fun mapChapterUrlToMangaUrl(uri: Uri): String? {
val id = uri.pathSegments.getOrNull(2) ?: return null
val mangaId = MangaHandler(client, headers, listOf(mdLang)).getMangaIdFromChapterId(id)
val mangaId = MangaHandler(client, headers, mdLang).getMangaIdFromChapterId(id)
return MdUtil.mapMdIdToMangaUrl(mangaId)
}
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
return MangaHandler(client, headers, listOf(mdLang), preferences.mangaDexForceLatestCovers().get()).fetchMangaDetailsObservable(manga)
return MangaHandler(client, headers, mdLang, preferences.mangaDexForceLatestCovers().get()).fetchMangaDetailsObservable(manga)
}
override suspend fun getMangaDetails(manga: MangaInfo): MangaInfo {
return MangaHandler(client, headers, listOf(mdLang), preferences.mangaDexForceLatestCovers().get()).getMangaDetails(manga, id)
return MangaHandler(client, headers, mdLang, preferences.mangaDexForceLatestCovers().get()).getMangaDetails(manga, id)
}
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
return MangaHandler(client, headers, listOf(mdLang), preferences.mangaDexForceLatestCovers().get()).fetchChapterListObservable(manga)
return MangaHandler(client, headers, mdLang, preferences.mangaDexForceLatestCovers().get()).fetchChapterListObservable(manga)
}
override fun fetchPageList(chapter: SChapter): Observable<List<Page>> {
@ -165,7 +165,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
}
override fun parseIntoMetadata(metadata: MangaDexSearchMetadata, input: Response) {
ApiMangaParser(listOf(mdLang)).parseIntoMetadata(metadata, input, emptyList())
ApiMangaParser(mdLang).parseIntoMetadata(metadata, input, emptyList())
}
override suspend fun fetchFollows(): MangasPage {
@ -272,7 +272,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
}
override suspend fun fetchRandomMangaUrl(): String {
return MangaHandler(client, headers, listOf(mdLang)).fetchRandomMangaId()
return MangaHandler(client, headers, mdLang).fetchRandomMangaId()
}
fun fetchMangaSimilar(manga: Manga): Observable<MangasPage> {

View File

@ -40,7 +40,6 @@ import eu.kanade.tachiyomi.databinding.ReaderActivityBinding
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.source.online.all.EHentai
import eu.kanade.tachiyomi.ui.base.activity.BaseRxActivity
import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.manga.MangaController

View File

@ -29,7 +29,7 @@ import tachiyomi.source.model.MangaInfo
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
class ApiMangaParser(private val langs: List<String>) {
class ApiMangaParser(private val lang: String) {
val db: DatabaseHelper get() = Injekt.get()
val metaClass = MangaDexSearchMetadata::class
@ -186,7 +186,7 @@ class ApiMangaParser(private val langs: List<String>) {
private fun filterChapterForChecking(serializer: ApiMangaSerializer): List<ChapterSerializer> {
return serializer.data.chapters.asSequence()
.filter { langs.contains(it.language) }
.filter { lang == it.language }
.filter {
it.chapter?.let { chapterNumber ->
if (chapterNumber.toDoubleOrNull() == null) {
@ -244,9 +244,9 @@ class ApiMangaParser(private val langs: List<String>) {
// Skip chapters that don't match the desired language, or are future releases
val chapLangs = MdLang.values().filter { langs.contains(it.dexLang) }
val chapLangs = MdLang.values().filter { lang == it.dexLang }
return networkChapters.asSequence()
.filter { langs.contains(it.language) && (it.timestamp * 1000) <= now }
.filter { lang == it.language && (it.timestamp * 1000) <= now }
.map { mapChapter(it, finalChapterNumber, status, chapLangs, networkChapters.size, groups) }.toList()
}

View File

@ -21,14 +21,14 @@ import okhttp3.Request
import rx.Observable
import tachiyomi.source.model.MangaInfo
class MangaHandler(val client: OkHttpClient, val headers: Headers, val langs: List<String>, val forceLatestCovers: Boolean = false) {
class MangaHandler(val client: OkHttpClient, val headers: Headers, val lang: String, val forceLatestCovers: Boolean = false) {
// TODO make use of this
suspend fun fetchMangaAndChapterDetails(manga: MangaInfo, sourceId: Long): Pair<MangaInfo, List<SChapter>> {
return withContext(Dispatchers.IO) {
val response = client.newCall(apiRequest(manga.toSManga())).await()
val covers = getCovers(manga, forceLatestCovers)
val parser = ApiMangaParser(langs)
val parser = ApiMangaParser(lang)
val jsonData = withContext(Dispatchers.IO) { response.body!!.string() }
if (response.code != 200) {
@ -58,7 +58,7 @@ class MangaHandler(val client: OkHttpClient, val headers: Headers, val langs: Li
return withContext(Dispatchers.IO) {
val request = GET(MdUtil.apiUrl + MdUtil.newApiChapter + urlChapterId + MdUtil.apiChapterSuffix, headers, CacheControl.FORCE_NETWORK)
val response = client.newCall(request).await()
ApiMangaParser(langs).chapterParseForMangaId(response)
ApiMangaParser(lang).chapterParseForMangaId(response)
}
}
@ -66,7 +66,7 @@ class MangaHandler(val client: OkHttpClient, val headers: Headers, val langs: Li
return withContext(Dispatchers.IO) {
val response = client.newCall(apiRequest(manga.toSManga())).await()
val covers = getCovers(manga, forceLatestCovers)
ApiMangaParser(langs).parseToManga(manga, response, covers, sourceId)
ApiMangaParser(lang).parseToManga(manga, response, covers, sourceId)
}
}
@ -81,7 +81,7 @@ class MangaHandler(val client: OkHttpClient, val headers: Headers, val langs: Li
}
}
.flatMap {
ApiMangaParser(langs).parseToManga(manga, it.first, it.second).andThen(
ApiMangaParser(lang).parseToManga(manga, it.first, it.second).andThen(
Observable.just(
manga.apply {
initialized = true
@ -95,14 +95,14 @@ class MangaHandler(val client: OkHttpClient, val headers: Headers, val langs: Li
return client.newCall(apiRequest(manga))
.asObservableSuccess()
.map { response ->
ApiMangaParser(langs).chapterListParse(response)
ApiMangaParser(lang).chapterListParse(response)
}
}
suspend fun fetchChapterList(manga: SManga): List<SChapter> {
return withContext(Dispatchers.IO) {
val response = client.newCall(apiRequest(manga)).await()
ApiMangaParser(langs).chapterListParse(response)
ApiMangaParser(lang).chapterListParse(response)
}
}
@ -110,14 +110,14 @@ class MangaHandler(val client: OkHttpClient, val headers: Headers, val langs: Li
return client.newCall(randomMangaRequest())
.asObservableSuccess()
.map { response ->
ApiMangaParser(langs).randomMangaIdParse(response)
ApiMangaParser(lang).randomMangaIdParse(response)
}
}
suspend fun fetchRandomMangaId(): String {
return withContext(Dispatchers.IO) {
val response = client.newCall(randomMangaRequest()).await()
ApiMangaParser(langs).randomMangaIdParse(response)
ApiMangaParser(lang).randomMangaIdParse(response)
}
}

View File

@ -18,7 +18,7 @@ import org.jsoup.nodes.Element
import rx.Observable
// Unused, kept for reference todo
class SearchHandler(val client: OkHttpClient, private val headers: Headers, val langs: List<String>, private val useLowQualityCovers: Boolean) {
class SearchHandler(val client: OkHttpClient, private val headers: Headers, val lang: String, private val useLowQualityCovers: Boolean) {
fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
return when {
@ -29,7 +29,7 @@ class SearchHandler(val client: OkHttpClient, private val headers: Headers, val
.map { response ->
val details = SManga.create()
details.url = "/manga/$realQuery/"
ApiMangaParser(langs).parseToManga(details, response, emptyList()).await()
ApiMangaParser(lang).parseToManga(details, response, emptyList()).await()
MangasPage(listOf(details), false)
}
}