mirror of
https://github.com/BrenBroZAYT/gameyfin.git
synced 2026-06-16 16:20:04 +00:00
Implement parsing of quarter dates ("Q2 2026") to SteamMetadataPlugin
This commit is contained in:
+17
@@ -27,10 +27,27 @@ class SteamDateSerializer : KSerializer<Instant> {
|
|||||||
override fun serialize(encoder: Encoder, value: Instant) = encoder.encodeString(value.toString())
|
override fun serialize(encoder: Encoder, value: Instant) = encoder.encodeString(value.toString())
|
||||||
|
|
||||||
private fun fromString(dateString: String): Instant {
|
private fun fromString(dateString: String): Instant {
|
||||||
|
// Match "Coming Soon" and return a fallback date
|
||||||
if (dateString.equals(COMING_SOON_TEXT, true)) {
|
if (dateString.equals(COMING_SOON_TEXT, true)) {
|
||||||
return COMING_SOON_FALLBACK_DATE.atStartOfDay().toInstant(ZoneOffset.UTC)
|
return COMING_SOON_FALLBACK_DATE.atStartOfDay().toInstant(ZoneOffset.UTC)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Match quarters like "Q1 2023", "Q2 2023", etc.
|
||||||
|
val quarterMatch = Regex("""Q([1-4]) (\d{4})""").matchEntire(dateString)
|
||||||
|
if (quarterMatch != null) {
|
||||||
|
val (qStr, yearStr) = quarterMatch.destructured
|
||||||
|
val month = when (qStr.toInt()) {
|
||||||
|
1 -> 1
|
||||||
|
2 -> 4
|
||||||
|
3 -> 7
|
||||||
|
4 -> 10
|
||||||
|
else -> 1
|
||||||
|
}
|
||||||
|
return LocalDate.of(yearStr.toInt(), month, 1)
|
||||||
|
.atStartOfDay()
|
||||||
|
.toInstant(ZoneOffset.UTC)
|
||||||
|
}
|
||||||
|
|
||||||
val localDate = LocalDate.parse(dateString, formatter)
|
val localDate = LocalDate.parse(dateString, formatter)
|
||||||
return localDate.atStartOfDay().toInstant(ZoneOffset.UTC)
|
return localDate.atStartOfDay().toInstant(ZoneOffset.UTC)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user