diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/luscious/Luscious.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/luscious/Luscious.kt index 7f9b731c7..ced405811 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/luscious/Luscious.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/luscious/Luscious.kt @@ -74,6 +74,8 @@ abstract class Luscious( val interestsFilter = filters.findInstance()!! val languagesFilter = filters.findInstance()!! val tagsFilter = filters.findInstance()!! + val creatorFilter = filters.findInstance()!! + val favoriteFilter = filters.findInstance()!! val genreFilter = filters.findInstance()!! val contentTypeFilter = filters.findInstance()!! val albumSizeFilter = filters.findInstance()!! @@ -126,6 +128,24 @@ abstract class Luscious( ) } + if (creatorFilter.state.isNotEmpty()) { + add( + JsonObject().apply { + addProperty("name", "created_by_id") + addProperty("value", creatorFilter.state) + } + ) + } + + if (favoriteFilter.state.isNotEmpty()) { + add( + JsonObject().apply { + addProperty("name", "favorite_by_user_id") + addProperty("value", favoriteFilter.state) + } + ) + } + if (genreFilter.anyNotIgnored()) { add(genreFilter.toJsonObject("genre_ids")) } @@ -364,11 +384,17 @@ abstract class Luscious( // Details override fun mangaDetailsRequest(manga: SManga): Request { - val id = manga.url.substringAfterLast("_").removeSuffix("/") - return buildAlbumInfoRequest(id) + return GET("$baseUrl${manga.url}", headers) } - override fun mangaDetailsParse(response: Response): SManga { + override fun fetchMangaDetails(manga: SManga): Observable { + val id = manga.url.substringAfterLast("_").removeSuffix("/") + return client.newCall(buildAlbumInfoRequest(id)) + .asObservableSuccess() + .map { detailsParse(it) } + } + + private fun detailsParse(response: Response): SManga { val data = gson.fromJson(response.body!!.string()) with(data["data"]["album"]["get"]) { val manga = SManga.create() @@ -400,6 +426,7 @@ abstract class Luscious( return manga } } + override fun mangaDetailsParse(response: Response): SManga = throw UnsupportedOperationException("Not used") // Popular @@ -470,6 +497,8 @@ abstract class Luscious( class RestrictGenresSelectFilter(options: List) : SelectFilter("Restrict Genres", options) class AlbumSizeSelectFilter(options: List) : SelectFilter("Album Size", options) class TagTextFilters : TextFilter("Tags") + class CreatorTextFilters : TextFilter("Uploader") + class FavoriteTextFilters : TextFilter("Favorite by User") override fun getFilterList(): FilterList = getSortFilters(POPULAR_DEFAULT_SORT_STATE) private fun getSortFilters(sortState: Int) = FilterList( @@ -484,6 +513,9 @@ abstract class Luscious( Filter.Header("Separate tags with commas (,)"), Filter.Header("Prepend with dash (-) to exclude"), TagTextFilters(), + Filter.Header("The following require username or ID"), + CreatorTextFilters(), + FavoriteTextFilters(), ) diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/luscious/LusciousGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/luscious/LusciousGenerator.kt index 6dca12420..d797f99ca 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/luscious/LusciousGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/luscious/LusciousGenerator.kt @@ -10,7 +10,7 @@ class LusciousGenerator : ThemeSourceGenerator { override val themeClass = "Luscious" - override val baseVersionCode: Int = 8 + override val baseVersionCode: Int = 9 override val sources = listOf( MultiLang("Luscious", "https://www.luscious.net", listOf("en","ja", "es", "it", "de", "fr", "zh", "ko", "other", "pt", "th", "all"), isNsfw = true, className = "LusciousFactory", overrideVersionCode = 2),