mirror of
https://github.com/ourongxing/newsnow.git
synced 2025-01-19 03:09:14 +08:00
62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
|
interface Res {
|
||
|
topic_list: {
|
||
|
can_create_topic: boolean
|
||
|
more_topics_url: string
|
||
|
per_page: number
|
||
|
top_tags: string[]
|
||
|
topics: {
|
||
|
id: number
|
||
|
title: string
|
||
|
fancy_title: string
|
||
|
posts_count: number
|
||
|
reply_count: number
|
||
|
highest_post_number: number
|
||
|
image_url: null | string
|
||
|
created_at: Date
|
||
|
last_posted_at: Date
|
||
|
bumped: boolean
|
||
|
bumped_at: Date
|
||
|
unseen: boolean
|
||
|
pinned: boolean
|
||
|
excerpt?: string
|
||
|
visible: boolean
|
||
|
closed: boolean
|
||
|
archived: boolean
|
||
|
like_count: number
|
||
|
has_summary: boolean
|
||
|
last_poster_username: string
|
||
|
category_id: number
|
||
|
pinned_globally: boolean
|
||
|
}[]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const hot = defineSource(async () => {
|
||
|
const res = await myFetch<Res>("https://linux.do/top/daily.json")
|
||
|
return res.topic_list.topics
|
||
|
.filter(k => k.visible && !k.archived && !k.pinned)
|
||
|
.map(k => ({
|
||
|
id: k.id,
|
||
|
title: k.title,
|
||
|
url: `https://linux.do/t/topic/${k.id}`,
|
||
|
}))
|
||
|
})
|
||
|
|
||
|
const latest = defineSource(async () => {
|
||
|
const res = await myFetch<Res>("https://linux.do/latest.json?order=created")
|
||
|
return res.topic_list.topics
|
||
|
.filter(k => k.visible && !k.archived && !k.pinned)
|
||
|
.map(k => ({
|
||
|
id: k.id,
|
||
|
title: k.title,
|
||
|
pubDate: new Date(k.created_at).valueOf(),
|
||
|
url: `https://linux.do/t/topic/${k.id}`,
|
||
|
}))
|
||
|
})
|
||
|
|
||
|
export default defineSource({
|
||
|
"linuxdo": latest,
|
||
|
"linuxdo-latest": latest,
|
||
|
"linuxdo-hot": hot,
|
||
|
})
|