Full-proof way of getting a mangadex manga title, update crashlytics

This commit is contained in:
Jobobby04 2022-01-22 22:22:53 -05:00
parent 1c69b066f7
commit 5224988265
3 changed files with 35 additions and 12 deletions

View File

@ -280,7 +280,7 @@ dependencies {
// Firebase (EH)
implementation("com.google.firebase:firebase-analytics-ktx:20.0.2")
implementation("com.google.firebase:firebase-crashlytics-ktx:18.2.6")
implementation("com.google.firebase:firebase-crashlytics-ktx:18.2.7")
// Better logging (EH)
implementation("com.elvishew:xlog:1.11.0")

View File

@ -69,7 +69,7 @@ class ApiMangaParser(
try {
val mangaAttributesDto = mangaDto.data.attributes
mdUuid = mangaDto.data.id
title = MdUtil.cleanString(MdUtil.getFromLangMap(mangaAttributesDto.title.asMdMap(), lang, mangaAttributesDto.originalLanguage))
title = MdUtil.cleanString(MdUtil.getTitleFromManga(mangaAttributesDto, lang,))
altTitles = mangaAttributesDto.altTitles.mapNotNull { it[lang] }.nullIfEmpty()
val mangaRelationshipsDto = mangaDto.data.relationships
@ -81,7 +81,13 @@ class ApiMangaParser(
cover = MdUtil.cdnCoverUrl(mangaDto.data.id, coverFileName)
}
description = MdUtil.cleanDescription(MdUtil.getFromLangMap(mangaAttributesDto.description.asMdMap(), lang, mangaAttributesDto.originalLanguage))
description = MdUtil.cleanDescription(
MdUtil.getFromLangMap(
langMap = mangaAttributesDto.description.asMdMap(),
currentLang = lang,
originalLanguage = mangaAttributesDto.originalLanguage
).orEmpty()
)
authors = mangaRelationshipsDto.filter { relationshipDto ->
relationshipDto.type.equals(MdConstants.Types.author, true)

View File

@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.all.MangaDex
import exh.log.xLogD
import exh.md.dto.LoginBodyTokenDto
import exh.md.dto.MangaAttributesDto
import exh.md.dto.MangaDataDto
import exh.md.network.NoSessionException
import exh.source.getMainSource
@ -266,7 +267,7 @@ class MdUtil {
fun createMangaEntry(json: MangaDataDto, lang: String): MangaInfo {
return MangaInfo(
key = buildMangaUrl(json.id),
title = cleanString(getFromLangMap(json.attributes.title.asMdMap(), lang, json.attributes.originalLanguage)),
title = cleanString(getTitleFromManga(json.attributes, lang)),
cover = json.relationships
.firstOrNull { relationshipDto -> relationshipDto.type == MdConstants.Types.coverArt }
?.attributes
@ -277,14 +278,30 @@ class MdUtil {
)
}
fun getFromLangMap(langMap: Map<String, String?>, currentLang: String, originalLanguage: String): String {
return langMap[currentLang] ?: langMap["en"] ?: langMap[originalLanguage].let {
if (it == null && originalLanguage == "ja") {
langMap["jp"]
} else {
it
}.orEmpty()
}
fun getTitleFromManga(json: MangaAttributesDto, lang: String): String {
return getFromLangMap(json.title.asMdMap(), lang, json.originalLanguage)
?: getAltTitle(json.altTitles, lang, json.originalLanguage)
?: json.title.asMdMap<String>()[json.originalLanguage]
?: json.altTitles.firstNotNullOfOrNull { it[json.originalLanguage] }
.orEmpty()
}
fun getFromLangMap(langMap: Map<String, String>, currentLang: String, originalLanguage: String): String? {
return langMap[currentLang]
?: langMap["en"]
?: if (originalLanguage == "ja") {
langMap["ja-ro"]
?: langMap["jp-ro"]
} else null
}
fun getAltTitle(langMaps: List<Map<String, String>>, currentLang: String, originalLanguage: String): String? {
return langMaps.firstNotNullOfOrNull { it[currentLang] }
?: langMaps.firstNotNullOfOrNull { it["en"] }
?: if (originalLanguage == "ja") {
langMaps.firstNotNullOfOrNull { it["ja-ro"] }
?: langMaps.firstNotNullOfOrNull { it["jp-ro"] }
} else null
}
fun cdnCoverUrl(dexId: String, fileName: String): String {