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? { override suspend fun mapChapterUrlToMangaUrl(uri: Uri): String? {
val id = uri.pathSegments.getOrNull(2) ?: return null 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) return MdUtil.mapMdIdToMangaUrl(mangaId)
} }
override fun fetchMangaDetails(manga: SManga): Observable<SManga> { 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 { 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>> { 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>> { 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) { 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 { override suspend fun fetchFollows(): MangasPage {
@ -272,7 +272,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
} }
override suspend fun fetchRandomMangaUrl(): String { override suspend fun fetchRandomMangaUrl(): String {
return MangaHandler(client, headers, listOf(mdLang)).fetchRandomMangaId() return MangaHandler(client, headers, mdLang).fetchRandomMangaId()
} }
fun fetchMangaSimilar(manga: Manga): Observable<MangasPage> { 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.SourceManager
import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.online.HttpSource 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.base.activity.BaseRxActivity
import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.manga.MangaController 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.Injekt
import uy.kohesive.injekt.api.get 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 db: DatabaseHelper get() = Injekt.get()
val metaClass = MangaDexSearchMetadata::class val metaClass = MangaDexSearchMetadata::class
@ -186,7 +186,7 @@ class ApiMangaParser(private val langs: List<String>) {
private fun filterChapterForChecking(serializer: ApiMangaSerializer): List<ChapterSerializer> { private fun filterChapterForChecking(serializer: ApiMangaSerializer): List<ChapterSerializer> {
return serializer.data.chapters.asSequence() return serializer.data.chapters.asSequence()
.filter { langs.contains(it.language) } .filter { lang == it.language }
.filter { .filter {
it.chapter?.let { chapterNumber -> it.chapter?.let { chapterNumber ->
if (chapterNumber.toDoubleOrNull() == null) { 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 // 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() 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() .map { mapChapter(it, finalChapterNumber, status, chapLangs, networkChapters.size, groups) }.toList()
} }

View File

@ -21,14 +21,14 @@ import okhttp3.Request
import rx.Observable import rx.Observable
import tachiyomi.source.model.MangaInfo 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 // TODO make use of this
suspend fun fetchMangaAndChapterDetails(manga: MangaInfo, sourceId: Long): Pair<MangaInfo, List<SChapter>> { suspend fun fetchMangaAndChapterDetails(manga: MangaInfo, sourceId: Long): Pair<MangaInfo, List<SChapter>> {
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
val response = client.newCall(apiRequest(manga.toSManga())).await() val response = client.newCall(apiRequest(manga.toSManga())).await()
val covers = getCovers(manga, forceLatestCovers) val covers = getCovers(manga, forceLatestCovers)
val parser = ApiMangaParser(langs) val parser = ApiMangaParser(lang)
val jsonData = withContext(Dispatchers.IO) { response.body!!.string() } val jsonData = withContext(Dispatchers.IO) { response.body!!.string() }
if (response.code != 200) { if (response.code != 200) {
@ -58,7 +58,7 @@ class MangaHandler(val client: OkHttpClient, val headers: Headers, val langs: Li
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
val request = GET(MdUtil.apiUrl + MdUtil.newApiChapter + urlChapterId + MdUtil.apiChapterSuffix, headers, CacheControl.FORCE_NETWORK) val request = GET(MdUtil.apiUrl + MdUtil.newApiChapter + urlChapterId + MdUtil.apiChapterSuffix, headers, CacheControl.FORCE_NETWORK)
val response = client.newCall(request).await() 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) { return withContext(Dispatchers.IO) {
val response = client.newCall(apiRequest(manga.toSManga())).await() val response = client.newCall(apiRequest(manga.toSManga())).await()
val covers = getCovers(manga, forceLatestCovers) 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 { .flatMap {
ApiMangaParser(langs).parseToManga(manga, it.first, it.second).andThen( ApiMangaParser(lang).parseToManga(manga, it.first, it.second).andThen(
Observable.just( Observable.just(
manga.apply { manga.apply {
initialized = true initialized = true
@ -95,14 +95,14 @@ class MangaHandler(val client: OkHttpClient, val headers: Headers, val langs: Li
return client.newCall(apiRequest(manga)) return client.newCall(apiRequest(manga))
.asObservableSuccess() .asObservableSuccess()
.map { response -> .map { response ->
ApiMangaParser(langs).chapterListParse(response) ApiMangaParser(lang).chapterListParse(response)
} }
} }
suspend fun fetchChapterList(manga: SManga): List<SChapter> { suspend fun fetchChapterList(manga: SManga): List<SChapter> {
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
val response = client.newCall(apiRequest(manga)).await() 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()) return client.newCall(randomMangaRequest())
.asObservableSuccess() .asObservableSuccess()
.map { response -> .map { response ->
ApiMangaParser(langs).randomMangaIdParse(response) ApiMangaParser(lang).randomMangaIdParse(response)
} }
} }
suspend fun fetchRandomMangaId(): String { suspend fun fetchRandomMangaId(): String {
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
val response = client.newCall(randomMangaRequest()).await() 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 import rx.Observable
// Unused, kept for reference todo // 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> { fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
return when { return when {
@ -29,7 +29,7 @@ class SearchHandler(val client: OkHttpClient, private val headers: Headers, val
.map { response -> .map { response ->
val details = SManga.create() val details = SManga.create()
details.url = "/manga/$realQuery/" details.url = "/manga/$realQuery/"
ApiMangaParser(langs).parseToManga(details, response, emptyList()).await() ApiMangaParser(lang).parseToManga(details, response, emptyList()).await()
MangasPage(listOf(details), false) MangasPage(listOf(details), false)
} }
} }