From 5a0c7e6ad2b84ec2e0f2fd21dff50eea54444e58 Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Sat, 14 Jan 2023 13:44:53 +0100 Subject: [PATCH] Add source filter to marin.moe (#1166) * Add source filters, include source in desc * Add source filters, include source in desc --- src/en/marinmoe/build.gradle | 2 +- .../animeextension/en/marinmoe/DataModel.kt | 3 +- .../animeextension/en/marinmoe/MarinMoe.kt | 2 ++ .../en/marinmoe/MarinMoeFilters.kt | 31 ++++++++++++++++++- 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/en/marinmoe/build.gradle b/src/en/marinmoe/build.gradle index 112343400..0d8a02222 100644 --- a/src/en/marinmoe/build.gradle +++ b/src/en/marinmoe/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'marin.moe' pkgNameSuffix = 'en.marinmoe' extClass = '.MarinMoe' - extVersionCode = 1 + extVersionCode = 2 libVersion = '13' } diff --git a/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/DataModel.kt b/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/DataModel.kt index 6d318aa75..c99d7a445 100644 --- a/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/DataModel.kt +++ b/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/DataModel.kt @@ -50,7 +50,8 @@ data class AnimeDetails( val release_date: String, val description: String, val genre_list: List, - val production_list: List + val production_list: List, + val source_list: List ) { @Serializable data class InfoType( diff --git a/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoe.kt b/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoe.kt index 8d3233d3f..9c3f0f828 100644 --- a/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoe.kt +++ b/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoe.kt @@ -96,6 +96,7 @@ class MarinMoe : ConfigurableAnimeSource, AnimeHttpSource() { if (filters.status.isNotBlank()) url += "&${filters.status}" if (filters.contentRating.isNotBlank()) url += "&${filters.contentRating}" if (filters.genre.isNotBlank()) url += "&${filters.genre}" + if (filters.source.isNotBlank()) url += "&${filters.source}" if (filters.group.isNotBlank()) url += "&filter[group][0][id]=${filters.group}&filter[group][0][opr]=include" if (filters.studio.isNotBlank()) url += "&filter[production][0][id]=${filters.studio}&filter[production][0][opr]=include" @@ -129,6 +130,7 @@ class MarinMoe : ConfigurableAnimeSource, AnimeHttpSource() { description += "\nContent Rating: ${details.content_rating.name}" description += "\nRelease Date: ${details.release_date}" description += "\nType: ${details.type.name}" + description += "\nSource: ${details.source_list.joinToString(separator = ", ") { it.name }}" anime.description = description return anime diff --git a/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoeFilters.kt b/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoeFilters.kt index c0113b4e9..dbdec4aee 100644 --- a/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoeFilters.kt +++ b/src/en/marinmoe/src/eu/kanade/tachiyomi/animeextension/en/marinmoe/MarinMoeFilters.kt @@ -40,6 +40,11 @@ object MarinMoeFilters { MarinMoeFiltersData.contentRating.map { CheckBoxVal(it.first, true) } ) + class SourceFilter : CheckBoxFilterList( + "Source", + MarinMoeFiltersData.source.map { CheckBoxVal(it.first, false) } + ) + class GenreFilter : CheckBoxFilterList( "Genre", MarinMoeFiltersData.genre.map { CheckBoxVal(it.first, false) } @@ -55,6 +60,7 @@ object MarinMoeFilters { TypeFilter(), StatusFilter(), ContentRatingFilter(), + SourceFilter(), AnimeFilter.Separator(), GenreFilter(), GroupFilter(), @@ -66,6 +72,7 @@ object MarinMoeFilters { val type: String = "", val status: String = "", val contentRating: String = "", + val source: String = "", val genre: String = "", val group: String = "", val studio: String = "" @@ -113,7 +120,17 @@ object MarinMoeFilters { } ) - val genre = filters.filterIsInstance() + val source: String = filters.filterIsInstance() + .first() + .state.mapNotNull { format -> + if (format.state) { + MarinMoeFiltersData.source.find { it.first == format.name }!!.second + } else { null } + }.withIndex().joinToString(separator = "&") { + "filter[source][${it.index}][id]=${it.value}&filter[source][${it.index}][opr]=include" + } + + val genre: String = filters.filterIsInstance() .first() .state.mapNotNull { format -> if (format.state) { @@ -128,6 +145,7 @@ object MarinMoeFilters { type, status, contentRating, + source, genre, filters.asQueryPart(), filters.asQueryPart(), @@ -182,6 +200,17 @@ object MarinMoeFilters { Pair("G - All Ages", "7"), ) + val source = arrayOf( + Pair("Blu-ray", "5"), + Pair("DVD", "4"), + Pair("LD", "8"), + Pair("N/A", "1"), + Pair("TV", "2"), + Pair("VCD", "7"), + Pair("VHS", "6"), + Pair("Web", "3") + ) + val genre = arrayOf( Pair("Action", "1"), Pair("Adult Cast", "55"),