fix(rss): get enclosure from SyndEntry attributes first (#799)

This commit is contained in:
Ash 2024-07-12 18:52:29 +08:00 committed by GitHub
parent 1578ba6887
commit 26b8bc2e14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 1 deletions

View File

@ -120,12 +120,19 @@ class RssHelper @Inject constructor(
rawDescription = (content ?: desc) ?: "", rawDescription = (content ?: desc) ?: "",
shortDescription = Readability.parseToText(desc ?: content, syndEntry.link).take(110), shortDescription = Readability.parseToText(desc ?: content, syndEntry.link).take(110),
fullContent = content, fullContent = content,
img = findThumbnail(content ?: desc), img = findThumbnail(syndEntry) ?: findThumbnail(content ?: desc),
link = syndEntry.link ?: "", link = syndEntry.link ?: "",
updateAt = preDate, updateAt = preDate,
) )
} }
fun findThumbnail(syndEntry: SyndEntry): String? {
if (syndEntry.enclosures.isNullOrEmpty()) {
return null
}
return syndEntry.enclosures.first()?.url
}
fun findThumbnail(text: String?): String? { fun findThumbnail(text: String?): String? {
text ?: return null text ?: return null
val enclosure = enclosureRegex.find(text)?.groupValues?.get(1) val enclosure = enclosureRegex.find(text)?.groupValues?.get(1)

View File

@ -71,4 +71,13 @@ class RssHelperTest {
Assert.assertEquals(enclosureUrlString1, rssHelper.findThumbnail(imageHtmlCase1)) Assert.assertEquals(enclosureUrlString1, rssHelper.findThumbnail(imageHtmlCase1))
Assert.assertEquals(imageUrlString, rssHelper.findThumbnail(imageHtmlCase2)) Assert.assertEquals(imageUrlString, rssHelper.findThumbnail(imageHtmlCase2))
} }
@Test
fun testEnclosureNoFilenameExtension() {
val result = "https://pic.clubic.com/v1/images/1882727/raw"
val case = """
<enclosure url="$result" type="image/jpeg" length="0"/>
"""
Assert.assertEquals(result, rssHelper.findThumbnail(case))
}
} }