Fix parsing the publish date of RSS items
This commit is contained in:
parent
77974c1d8b
commit
6fb60c8dc4
|
@ -14,6 +14,8 @@ import net.dankito.readability4j.Readability4J
|
||||||
import net.dankito.readability4j.extended.Readability4JExtended
|
import net.dankito.readability4j.extended.Readability4JExtended
|
||||||
import okhttp3.*
|
import okhttp3.*
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
import java.text.ParsePosition
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@ -40,7 +42,13 @@ class RssHelper @Inject constructor(
|
||||||
id = accountId.spacerDollar(UUID.randomUUID().toString()),
|
id = accountId.spacerDollar(UUID.randomUUID().toString()),
|
||||||
accountId = accountId,
|
accountId = accountId,
|
||||||
feedId = feed.id,
|
feedId = feed.id,
|
||||||
date = Date(it.publishDate.toString()),
|
date = it.publishDate.toString().let {
|
||||||
|
try {
|
||||||
|
Date(it)
|
||||||
|
} catch (e: IllegalArgumentException) {
|
||||||
|
parseDate(it) ?: Date()
|
||||||
|
}
|
||||||
|
},
|
||||||
title = it.title.toString(),
|
title = it.title.toString(),
|
||||||
author = it.author,
|
author = it.author,
|
||||||
rawDescription = it.description.toString(),
|
rawDescription = it.description.toString(),
|
||||||
|
@ -171,4 +179,26 @@ class RssHelper @Inject constructor(
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun parseDate(
|
||||||
|
inputDate: String, patterns: Array<String?> = arrayOf(
|
||||||
|
"yyyy-MM-dd",
|
||||||
|
"yyyy-MM-dd HH:mm:ss",
|
||||||
|
"yyyyMMdd",
|
||||||
|
"yyyy/MM/dd",
|
||||||
|
"yyyy年MM月dd日",
|
||||||
|
"yyyy MM dd"
|
||||||
|
)
|
||||||
|
): Date? {
|
||||||
|
val df = SimpleDateFormat()
|
||||||
|
for (pattern in patterns) {
|
||||||
|
df.applyPattern(pattern)
|
||||||
|
df.isLenient = false
|
||||||
|
val date = df.parse(inputDate, ParsePosition(0))
|
||||||
|
if (date != null) {
|
||||||
|
return date
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user