Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import com.github.damontecres.stashapp.api.type.CircumcisionCriterionInput
import com.github.damontecres.stashapp.api.type.CircumisedEnum
import com.github.damontecres.stashapp.api.type.CriterionModifier
import com.github.damontecres.stashapp.api.type.DateCriterionInput
import com.github.damontecres.stashapp.api.type.DuplicationCriterionInput
import com.github.damontecres.stashapp.api.type.FloatCriterionInput
import com.github.damontecres.stashapp.api.type.GenderCriterionInput
import com.github.damontecres.stashapp.api.type.GenderEnum
Expand All @@ -26,7 +27,6 @@ import com.github.damontecres.stashapp.api.type.IntCriterionInput
import com.github.damontecres.stashapp.api.type.MultiCriterionInput
import com.github.damontecres.stashapp.api.type.OrientationCriterionInput
import com.github.damontecres.stashapp.api.type.OrientationEnum
import com.github.damontecres.stashapp.api.type.PHashDuplicationCriterionInput
import com.github.damontecres.stashapp.api.type.PhashDistanceCriterionInput
import com.github.damontecres.stashapp.api.type.ResolutionCriterionInput
import com.github.damontecres.stashapp.api.type.ResolutionEnum
Expand Down Expand Up @@ -368,7 +368,8 @@ fun filterSummary(f: PhashDistanceCriterionInput): String {
}
}

fun filterSummary(f: PHashDuplicationCriterionInput): String {
fun filterSummary(f: DuplicationCriterionInput): String {
// TODO update to new fields
val duplicated = f.duplicated.getOrNull()
val distance = f.distance.getOrNull()
return if (distance != null) {
Expand Down Expand Up @@ -553,7 +554,7 @@ fun filterSummary(
filterSummary(value)
}

is PHashDuplicationCriterionInput -> {
is DuplicationCriterionInput -> {
filterSummary(value)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1253,6 +1253,15 @@ private val GroupFilterOptions =
{ filter, value -> filter.copy(rating100 = value) },
TwoValueCriterionModifiers,
),
FilterOption<GroupFilterType, IntCriterionInput>(
"scene_count",
R.string.stashapp_scene_count,
null,
IntCriterionInput::class,
{ it.scene_count },
{ filter, value -> filter.copy(scene_count = value) },
TwoValueCriterionModifiers,
),
FilterOption<GroupFilterType, HierarchicalMultiCriterionInput>(
"studios",
R.string.stashapp_studios,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.github.damontecres.stashapp.api.type.CircumisedEnum
import com.github.damontecres.stashapp.api.type.CriterionModifier
import com.github.damontecres.stashapp.api.type.CustomFieldCriterionInput
import com.github.damontecres.stashapp.api.type.DateCriterionInput
import com.github.damontecres.stashapp.api.type.DuplicationCriterionInput
import com.github.damontecres.stashapp.api.type.FloatCriterionInput
import com.github.damontecres.stashapp.api.type.GenderCriterionInput
import com.github.damontecres.stashapp.api.type.GenderEnum
Expand All @@ -13,11 +14,11 @@ import com.github.damontecres.stashapp.api.type.IntCriterionInput
import com.github.damontecres.stashapp.api.type.MultiCriterionInput
import com.github.damontecres.stashapp.api.type.OrientationCriterionInput
import com.github.damontecres.stashapp.api.type.OrientationEnum
import com.github.damontecres.stashapp.api.type.PHashDuplicationCriterionInput
import com.github.damontecres.stashapp.api.type.PhashDistanceCriterionInput
import com.github.damontecres.stashapp.api.type.ResolutionCriterionInput
import com.github.damontecres.stashapp.api.type.ResolutionEnum
import com.github.damontecres.stashapp.api.type.StashIDCriterionInput
import com.github.damontecres.stashapp.api.type.StashIDsCriterionInput
import com.github.damontecres.stashapp.api.type.StringCriterionInput
import com.github.damontecres.stashapp.api.type.TimestampCriterionInput

Expand Down Expand Up @@ -143,14 +144,19 @@ fun PhashDistanceCriterionInput.toMap(): Map<String, Any> =
)
}

fun PHashDuplicationCriterionInput.toMap(): Map<String, Any> =
fun DuplicationCriterionInput.toMap(): Map<String, Any> =
buildMap {
put("modifier", CriterionModifier.EQUALS.rawValue)
if (duplicated.getOrNull() == false) {
put("value", false)
} else {
put("value", true)
}
distance.getOrNull()?.let { put("distance", it) }
phash.getOrNull()?.let { put("phash", it) }
stash_id.getOrNull()?.let { put("stash_id", it) }
title.getOrNull()?.let { put("title", it) }
url.getOrNull()?.let { put("url", it) }
}

fun ResolutionCriterionInput.toMap(): Map<String, Any> =
Expand Down Expand Up @@ -206,6 +212,18 @@ fun StashIDCriterionInput.toMap(): Map<String, Any> =
)
}

fun StashIDsCriterionInput.toMap(): Map<String, Any> =
buildMap {
put("modifier", modifier.rawValue)
put(
"value",
buildMap {
put("stashIDs", stash_ids.getOrNull() ?: "")
put("endpoint", endpoint.getOrNull() ?: "")
},
)
}

fun TimestampCriterionInput.toMap(): Map<String, Any> =
buildMap {
put("modifier", modifier.rawValue)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,18 @@ import com.github.damontecres.stashapp.api.type.CircumcisionCriterionInput
import com.github.damontecres.stashapp.api.type.CriterionModifier
import com.github.damontecres.stashapp.api.type.CustomFieldCriterionInput
import com.github.damontecres.stashapp.api.type.DateCriterionInput
import com.github.damontecres.stashapp.api.type.DuplicationCriterionInput
import com.github.damontecres.stashapp.api.type.FloatCriterionInput
import com.github.damontecres.stashapp.api.type.GenderCriterionInput
import com.github.damontecres.stashapp.api.type.HierarchicalMultiCriterionInput
import com.github.damontecres.stashapp.api.type.IntCriterionInput
import com.github.damontecres.stashapp.api.type.MultiCriterionInput
import com.github.damontecres.stashapp.api.type.OrientationCriterionInput
import com.github.damontecres.stashapp.api.type.PHashDuplicationCriterionInput
import com.github.damontecres.stashapp.api.type.PhashDistanceCriterionInput
import com.github.damontecres.stashapp.api.type.ResolutionCriterionInput
import com.github.damontecres.stashapp.api.type.StashDataFilter
import com.github.damontecres.stashapp.api.type.StashIDCriterionInput
import com.github.damontecres.stashapp.api.type.StashIDsCriterionInput
import com.github.damontecres.stashapp.api.type.StringCriterionInput
import com.github.damontecres.stashapp.api.type.TimestampCriterionInput
import com.github.damontecres.stashapp.data.DataType
Expand Down Expand Up @@ -60,7 +61,7 @@ class FilterWriter(
o.toMap()
}

is PHashDuplicationCriterionInput -> {
is DuplicationCriterionInput -> {
o.toMap()
}

Expand All @@ -76,6 +77,10 @@ class FilterWriter(
o.toMap()
}

is StashIDsCriterionInput -> {
o.toMap()
}

is TimestampCriterionInput -> {
o.toMap()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import com.github.damontecres.stashapp.api.type.CircumisedEnum
import com.github.damontecres.stashapp.api.type.CriterionModifier
import com.github.damontecres.stashapp.api.type.CustomFieldCriterionInput
import com.github.damontecres.stashapp.api.type.DateCriterionInput
import com.github.damontecres.stashapp.api.type.DuplicationCriterionInput
import com.github.damontecres.stashapp.api.type.FileDuplicationCriterionInput
import com.github.damontecres.stashapp.api.type.FloatCriterionInput
import com.github.damontecres.stashapp.api.type.GenderCriterionInput
import com.github.damontecres.stashapp.api.type.GenderEnum
Expand All @@ -14,13 +16,13 @@ import com.github.damontecres.stashapp.api.type.IntCriterionInput
import com.github.damontecres.stashapp.api.type.MultiCriterionInput
import com.github.damontecres.stashapp.api.type.OrientationCriterionInput
import com.github.damontecres.stashapp.api.type.OrientationEnum
import com.github.damontecres.stashapp.api.type.PHashDuplicationCriterionInput
import com.github.damontecres.stashapp.api.type.PhashDistanceCriterionInput
import com.github.damontecres.stashapp.api.type.ResolutionCriterionInput
import com.github.damontecres.stashapp.api.type.ResolutionEnum
import com.github.damontecres.stashapp.api.type.SortDirectionEnum
import com.github.damontecres.stashapp.api.type.StashDataFilter
import com.github.damontecres.stashapp.api.type.StashIDCriterionInput
import com.github.damontecres.stashapp.api.type.StashIDsCriterionInput
import com.github.damontecres.stashapp.api.type.StringCriterionInput
import com.github.damontecres.stashapp.api.type.TimestampCriterionInput
import com.github.damontecres.stashapp.data.DataType
Expand Down Expand Up @@ -233,6 +235,18 @@ class FilterParser(
null
}

fun convertStashIDsCriterionInput(it: Map<String, *>?): StashIDsCriterionInput? =
if (it != null) {
val values = it["value"] as Map<String, Any?>?
StashIDsCriterionInput(
endpoint = Optional.presentIfNotNull(values?.get("endpoint")?.toString()),
stash_ids = Optional.presentIfNotNull(values?.get("stashIDs") as? List<String>),
modifier = CriterionModifier.valueOf(it["modifier"]!! as String),
)
} else {
null
}

fun convertPhashDistanceCriterionInput(it: Map<String, *>?): PhashDistanceCriterionInput? =
if (it != null) {
val values = it["value"] as Map<String, *>?
Expand All @@ -245,11 +259,28 @@ class FilterParser(
null
}

fun convertPHashDuplicationCriterionInput(it: Map<String, *>?): PHashDuplicationCriterionInput? =
fun convertDuplicationCriterionInput(it: Map<String, *>?): DuplicationCriterionInput? =
if (it != null) {
// TODO test
DuplicationCriterionInput(
duplicated = Optional.presentIfNotNull(it["value"]?.toString()?.toBoolean()),
distance = Optional.presentIfNotNull(it["distance"]?.toString()?.toInt()),
phash = Optional.presentIfNotNull(it["phash"]?.toString()?.toBoolean()),
url = Optional.presentIfNotNull(it["url"]?.toString()?.toBoolean()),
stash_id = Optional.presentIfNotNull(it["stash_id"]?.toString()?.toBoolean()),
title = Optional.presentIfNotNull(it["title"]?.toString()?.toBoolean()),
)
} else {
null
}

fun convertFileDuplicationCriterionInput(it: Map<String, *>?): FileDuplicationCriterionInput? =
if (it != null) {
PHashDuplicationCriterionInput(
// TODO test
FileDuplicationCriterionInput(
duplicated = Optional.presentIfNotNull(it["value"]?.toString()?.toBoolean()),
distance = Optional.presentIfNotNull(it["distance"]?.toString()?.toInt()),
phash = Optional.presentIfNotNull(it["phash"]?.toString()?.toBoolean()),
)
} else {
null
Expand Down
Loading
Loading