Files
archy/packages/app/src/composables/useRssFetch.ts
T

27 lines
957 B
TypeScript
Raw Normal View History

import type { WebSearchResult } from '@aiui/core/types/message'
export async function fetchRssFromUrls(urls: string[]): Promise<WebSearchResult[]> {
const safe = urls.filter((u) => typeof u === 'string' && /^https?:\/\//i.test(u.trim())).slice(0, 8)
if (safe.length === 0) return []
try {
const params = new URLSearchParams()
safe.forEach((u) => params.append('url', u))
const res = await fetch(`/api/rss-articles?${params}`, { signal: AbortSignal.timeout(15000) })
if (!res.ok) return []
const data = (await res.json()) as { articles?: Array<{ title?: string; url?: string; content?: string; imgSrc?: string }> }
const articles = data.articles ?? []
return articles
.filter((a) => a.title && a.url)
.map((a) => ({
title: a.title ?? '',
url: a.url ?? '',
content: a.content,
imgSrc: a.imgSrc,
}))
} catch (err) {
console.warn('[AIUI rss]', err)
return []
}
}