Add source filter to marin.moe (#1166)

* Add source filters, include source in desc

* Add source filters, include source in desc
This commit is contained in:
Secozzi
2023-01-14 13:44:53 +01:00
committed by GitHub
parent a09dc0a8bf
commit 5a0c7e6ad2
4 changed files with 35 additions and 3 deletions

View File

@ -6,7 +6,7 @@ ext {
extName = 'marin.moe' extName = 'marin.moe'
pkgNameSuffix = 'en.marinmoe' pkgNameSuffix = 'en.marinmoe'
extClass = '.MarinMoe' extClass = '.MarinMoe'
extVersionCode = 1 extVersionCode = 2
libVersion = '13' libVersion = '13'
} }

View File

@ -50,7 +50,8 @@ data class AnimeDetails(
val release_date: String, val release_date: String,
val description: String, val description: String,
val genre_list: List<InfoData>, val genre_list: List<InfoData>,
val production_list: List<InfoData> val production_list: List<InfoData>,
val source_list: List<InfoData>
) { ) {
@Serializable @Serializable
data class InfoType( data class InfoType(

View File

@ -96,6 +96,7 @@ class MarinMoe : ConfigurableAnimeSource, AnimeHttpSource() {
if (filters.status.isNotBlank()) url += "&${filters.status}" if (filters.status.isNotBlank()) url += "&${filters.status}"
if (filters.contentRating.isNotBlank()) url += "&${filters.contentRating}" if (filters.contentRating.isNotBlank()) url += "&${filters.contentRating}"
if (filters.genre.isNotBlank()) url += "&${filters.genre}" 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.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" 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 += "\nContent Rating: ${details.content_rating.name}"
description += "\nRelease Date: ${details.release_date}" description += "\nRelease Date: ${details.release_date}"
description += "\nType: ${details.type.name}" description += "\nType: ${details.type.name}"
description += "\nSource: ${details.source_list.joinToString(separator = ", ") { it.name }}"
anime.description = description anime.description = description
return anime return anime

View File

@ -40,6 +40,11 @@ object MarinMoeFilters {
MarinMoeFiltersData.contentRating.map { CheckBoxVal(it.first, true) } MarinMoeFiltersData.contentRating.map { CheckBoxVal(it.first, true) }
) )
class SourceFilter : CheckBoxFilterList(
"Source",
MarinMoeFiltersData.source.map { CheckBoxVal(it.first, false) }
)
class GenreFilter : CheckBoxFilterList( class GenreFilter : CheckBoxFilterList(
"Genre", "Genre",
MarinMoeFiltersData.genre.map { CheckBoxVal(it.first, false) } MarinMoeFiltersData.genre.map { CheckBoxVal(it.first, false) }
@ -55,6 +60,7 @@ object MarinMoeFilters {
TypeFilter(), TypeFilter(),
StatusFilter(), StatusFilter(),
ContentRatingFilter(), ContentRatingFilter(),
SourceFilter(),
AnimeFilter.Separator(), AnimeFilter.Separator(),
GenreFilter(), GenreFilter(),
GroupFilter(), GroupFilter(),
@ -66,6 +72,7 @@ object MarinMoeFilters {
val type: String = "", val type: String = "",
val status: String = "", val status: String = "",
val contentRating: String = "", val contentRating: String = "",
val source: String = "",
val genre: String = "", val genre: String = "",
val group: String = "", val group: String = "",
val studio: String = "" val studio: String = ""
@ -113,7 +120,17 @@ object MarinMoeFilters {
} }
) )
val genre = filters.filterIsInstance<GenreFilter>() val source: String = filters.filterIsInstance<SourceFilter>()
.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<GenreFilter>()
.first() .first()
.state.mapNotNull { format -> .state.mapNotNull { format ->
if (format.state) { if (format.state) {
@ -128,6 +145,7 @@ object MarinMoeFilters {
type, type,
status, status,
contentRating, contentRating,
source,
genre, genre,
filters.asQueryPart<GroupFilter>(), filters.asQueryPart<GroupFilter>(),
filters.asQueryPart<StudioFilter>(), filters.asQueryPart<StudioFilter>(),
@ -182,6 +200,17 @@ object MarinMoeFilters {
Pair("G - All Ages", "7"), 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( val genre = arrayOf(
Pair("Action", "1"), Pair("Action", "1"),
Pair("Adult Cast", "55"), Pair("Adult Cast", "55"),