Improve external plugins support
This commit is contained in:
@@ -22,6 +22,7 @@ import org.koitharu.kotatsu.parsers.model.SortOrder
|
|||||||
import org.koitharu.kotatsu.parsers.util.find
|
import org.koitharu.kotatsu.parsers.util.find
|
||||||
import org.koitharu.kotatsu.parsers.util.ifNullOrEmpty
|
import org.koitharu.kotatsu.parsers.util.ifNullOrEmpty
|
||||||
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
|
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
|
||||||
|
import org.koitharu.kotatsu.parsers.util.nullIfEmpty
|
||||||
import org.koitharu.kotatsu.parsers.util.splitTwoParts
|
import org.koitharu.kotatsu.parsers.util.splitTwoParts
|
||||||
import java.util.EnumSet
|
import java.util.EnumSet
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
@@ -76,15 +77,15 @@ class ExternalPluginContentSource(
|
|||||||
return Manga(
|
return Manga(
|
||||||
id = manga.id,
|
id = manga.id,
|
||||||
title = details.title.ifBlank { manga.title },
|
title = details.title.ifBlank { manga.title },
|
||||||
altTitle = details.altTitle.ifNullOrEmpty { manga.altTitle },
|
altTitles = details.altTitles.ifEmpty { manga.altTitles },
|
||||||
url = details.url.ifEmpty { manga.url },
|
url = details.url.ifEmpty { manga.url },
|
||||||
publicUrl = details.publicUrl.ifEmpty { manga.publicUrl },
|
publicUrl = details.publicUrl.ifEmpty { manga.publicUrl },
|
||||||
rating = maxOf(details.rating, manga.rating),
|
rating = maxOf(details.rating, manga.rating),
|
||||||
isNsfw = details.isNsfw,
|
contentRating = details.contentRating,
|
||||||
coverUrl = details.coverUrl.ifNullOrEmpty { manga.coverUrl },
|
coverUrl = details.coverUrl.ifNullOrEmpty { manga.coverUrl },
|
||||||
tags = details.tags + manga.tags,
|
tags = details.tags + manga.tags,
|
||||||
state = details.state ?: manga.state,
|
state = details.state ?: manga.state,
|
||||||
author = details.author.ifNullOrEmpty { manga.author },
|
authors = details.authors.ifEmpty { manga.authors },
|
||||||
largeCoverUrl = details.largeCoverUrl.ifNullOrEmpty { manga.largeCoverUrl },
|
largeCoverUrl = details.largeCoverUrl.ifNullOrEmpty { manga.largeCoverUrl },
|
||||||
description = details.description.ifNullOrEmpty { manga.description },
|
description = details.description.ifNullOrEmpty { manga.description },
|
||||||
chapters = chapters,
|
chapters = chapters,
|
||||||
@@ -247,18 +248,24 @@ class ExternalPluginContentSource(
|
|||||||
private fun ExternalPluginCursor.getManga() = Manga(
|
private fun ExternalPluginCursor.getManga() = Manga(
|
||||||
id = getLong(COLUMN_ID),
|
id = getLong(COLUMN_ID),
|
||||||
title = getString(COLUMN_TITLE),
|
title = getString(COLUMN_TITLE),
|
||||||
altTitle = getStringOrNull(COLUMN_ALT_TITLE),
|
altTitles = setOfNotNull(getStringOrNull(COLUMN_ALT_TITLE)),
|
||||||
url = getString(COLUMN_URL),
|
url = getString(COLUMN_URL),
|
||||||
publicUrl = getString(COLUMN_PUBLIC_URL),
|
publicUrl = getString(COLUMN_PUBLIC_URL),
|
||||||
rating = getFloat(COLUMN_RATING),
|
rating = getFloat(COLUMN_RATING),
|
||||||
isNsfw = getBooleanOrDefault(COLUMN_IS_NSFW, false),
|
contentRating = if (getBooleanOrDefault(COLUMN_IS_NSFW, false)) {
|
||||||
|
ContentRating.ADULT
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
},
|
||||||
coverUrl = getStringOrNull(COLUMN_COVER_URL),
|
coverUrl = getStringOrNull(COLUMN_COVER_URL),
|
||||||
tags = getStringOrNull(COLUMN_TAGS)?.split(':')?.mapNotNullToSet {
|
tags = getStringOrNull(COLUMN_TAGS)?.split(':')?.mapNotNullToSet {
|
||||||
val parts = it.splitTwoParts('=') ?: return@mapNotNullToSet null
|
val parts = it.splitTwoParts('=') ?: return@mapNotNullToSet null
|
||||||
MangaTag(key = parts.first, title = parts.second, source = source)
|
MangaTag(key = parts.first, title = parts.second, source = source)
|
||||||
}.orEmpty(),
|
}.orEmpty(),
|
||||||
state = getStringOrNull(COLUMN_STATE)?.let { MangaState.entries.find(it) },
|
state = getStringOrNull(COLUMN_STATE)?.let { MangaState.entries.find(it) },
|
||||||
author = getStringOrNull(COLUMN_AUTHOR),
|
authors = getStringOrNull(COLUMN_AUTHOR)?.split(',')?.mapNotNullToSet {
|
||||||
|
it.trim().nullIfEmpty()
|
||||||
|
}.orEmpty(),
|
||||||
largeCoverUrl = getStringOrNull(COLUMN_LARGE_COVER_URL),
|
largeCoverUrl = getStringOrNull(COLUMN_LARGE_COVER_URL),
|
||||||
description = getStringOrNull(COLUMN_DESCRIPTION),
|
description = getStringOrNull(COLUMN_DESCRIPTION),
|
||||||
chapters = emptyList(),
|
chapters = emptyList(),
|
||||||
|
|||||||
Reference in New Issue
Block a user