mirror of
https://github.com/ourongxing/newsnow.git
synced 2025-01-19 03:09:14 +08:00
29 lines
845 B
TypeScript
29 lines
845 B
TypeScript
import * as cheerio from "cheerio"
|
|
import type { NewsItem } from "@shared/types"
|
|
|
|
export default defineSource(async () => {
|
|
const baseURL = "https://www.producthunt.com/"
|
|
const html: any = await myFetch(baseURL)
|
|
const $ = cheerio.load(html)
|
|
const $main = $("[data-test=homepage-section-0] [data-test^=post-item]")
|
|
const news: NewsItem[] = []
|
|
$main.each((_, el) => {
|
|
const a = $(el).find("a").first()
|
|
const url = a.attr("href")
|
|
const title = $(el).find("a[data-test^=post-name]").text()
|
|
const id = $(el).attr("data-test")?.replace("post-item-", "")
|
|
const vote = $(el).find("[data-test=vote-button]").text()
|
|
if (url && id && title) {
|
|
news.push({
|
|
url: `${baseURL}${url}`,
|
|
title,
|
|
id,
|
|
extra: {
|
|
info: `△︎ ${vote}`,
|
|
},
|
|
})
|
|
}
|
|
})
|
|
return news
|
|
})
|