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:
@ -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'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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(
|
||||||
|
@ -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
|
||||||
|
@ -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"),
|
||||||
|
Reference in New Issue
Block a user