Add modified J2k manga type detection
This commit is contained in:
parent
a9de6a123e
commit
68b13c6425
104
app/src/main/java/exh/util/MangaType.kt
Normal file
104
app/src/main/java/exh/util/MangaType.kt
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
package exh.util
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import eu.kanade.tachiyomi.R
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
|
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
||||||
|
import java.util.Locale
|
||||||
|
import uy.kohesive.injekt.Injekt
|
||||||
|
import uy.kohesive.injekt.api.get
|
||||||
|
|
||||||
|
fun Manga.mangaType(context: Context): String {
|
||||||
|
return context.getString(
|
||||||
|
when (mangaType()) {
|
||||||
|
MangaType.TYPE_WEBTOON -> R.string.webtoon
|
||||||
|
MangaType.TYPE_MANHWA -> R.string.manhwa
|
||||||
|
MangaType.TYPE_MANHUA -> R.string.manhua
|
||||||
|
MangaType.TYPE_COMIC -> R.string.comic
|
||||||
|
else -> R.string.manga
|
||||||
|
}
|
||||||
|
).toLowerCase(Locale.getDefault())
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type of comic the manga is (ie. manga, manhwa, manhua)
|
||||||
|
*/
|
||||||
|
fun Manga.mangaType(): MangaType {
|
||||||
|
val sourceName = Injekt.get<SourceManager>().getOrStub(source).name
|
||||||
|
val currentTags =
|
||||||
|
genre?.split(",")?.map { it.trim().toLowerCase(Locale.US) } ?: emptyList()
|
||||||
|
return if (currentTags.any { tag -> tag.contains("japanese", ignoreCase = true) || isMangaTag(tag) }) {
|
||||||
|
MangaType.TYPE_MANGA
|
||||||
|
} else if (currentTags.any { tag -> tag.contains("english", ignoreCase = true) || isComicTag(tag) } || isComicSource(sourceName)) {
|
||||||
|
MangaType.TYPE_COMIC
|
||||||
|
} else if (currentTags.any { tag -> tag.contains("chinese", ignoreCase = true) || isManhuaTag(tag) } || isManhuaSource(sourceName)) {
|
||||||
|
MangaType.TYPE_MANHUA
|
||||||
|
} else if (currentTags.any { tag -> tag.contains("korean", ignoreCase = true) || isManhwaTag(tag) } || isWebtoonSource(sourceName)) {
|
||||||
|
MangaType.TYPE_MANHWA
|
||||||
|
} else if (currentTags.any { tag -> isWebtoonTag(tag) }) {
|
||||||
|
MangaType.TYPE_WEBTOON
|
||||||
|
} else {
|
||||||
|
MangaType.TYPE_MANGA
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type the reader should use. Different from manga type as certain manga has different
|
||||||
|
* read types
|
||||||
|
*/
|
||||||
|
fun Manga.defaultReaderType(): Int {
|
||||||
|
val sourceName = Injekt.get<SourceManager>().getOrStub(source).name
|
||||||
|
val type = mangaType()
|
||||||
|
return if (type == MangaType.TYPE_MANHWA || type == MangaType.TYPE_WEBTOON) {
|
||||||
|
ReaderActivity.WEBTOON
|
||||||
|
} else if (type == MangaType.TYPE_MANHUA || (type == MangaType.TYPE_COMIC && !sourceName.contains("tapastic", ignoreCase = true))) {
|
||||||
|
ReaderActivity.LEFT_TO_RIGHT
|
||||||
|
} else 0
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isMangaTag(tag: String): Boolean {
|
||||||
|
return tag.toLowerCase() in listOf("manga", "манга")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isManhuaTag(tag: String): Boolean {
|
||||||
|
return tag.toLowerCase() in listOf("manhua", "маньхуа")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isManhwaTag(tag: String): Boolean {
|
||||||
|
return tag.toLowerCase() in listOf("manhwa", "манхва")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isComicTag(tag: String): Boolean {
|
||||||
|
return tag.toLowerCase() in listOf("comic", "комикс")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isWebtoonTag(tag: String): Boolean {
|
||||||
|
return tag.toLowerCase() in listOf("long strip", "webtoon")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isWebtoonSource(sourceName: String): Boolean {
|
||||||
|
return sourceName.contains("webtoon", true) ||
|
||||||
|
sourceName.contains("manwha", true) ||
|
||||||
|
sourceName.contains("toonily", true)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isComicSource(sourceName: String): Boolean {
|
||||||
|
return sourceName.contains("gunnerkrigg", true) ||
|
||||||
|
sourceName.contains("dilbert", true) ||
|
||||||
|
sourceName.contains("cyanide", true) ||
|
||||||
|
sourceName.contains("xkcd", true) ||
|
||||||
|
sourceName.contains("tapastic", true)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isManhuaSource(sourceName: String): Boolean {
|
||||||
|
return sourceName.contains("manhua", true)
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class MangaType {
|
||||||
|
TYPE_MANGA,
|
||||||
|
TYPE_MANHWA,
|
||||||
|
TYPE_MANHUA,
|
||||||
|
TYPE_COMIC,
|
||||||
|
TYPE_WEBTOON
|
||||||
|
}
|
@ -108,4 +108,11 @@
|
|||||||
<!-- AZ -->
|
<!-- AZ -->
|
||||||
<string name="az_recommends">See Recommendations</string>
|
<string name="az_recommends">See Recommendations</string>
|
||||||
|
|
||||||
|
<!-- Manga Type -->
|
||||||
|
<!--<string name="manga">Manga</string>-->
|
||||||
|
<string name="manhwa">Manhwa</string>
|
||||||
|
<string name="manhua">Manhua</string>
|
||||||
|
<string name="comic">Comic</string>
|
||||||
|
<string name="webtoon">Webtoon</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
Loading…
x
Reference in New Issue
Block a user