mirror of
https://github.com/BrenBroZAYT/gameyfin.git
synced 2026-06-13 16:40:01 +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())
|
||||
|
||||
private fun fromString(dateString: String): Instant {
|
||||
// Match "Coming Soon" and return a fallback date
|
||||
if (dateString.equals(COMING_SOON_TEXT, true)) {
|
||||
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)
|
||||
return localDate.atStartOfDay().toInstant(ZoneOffset.UTC)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user