mirror of
https://github.com/ourongxing/newsnow.git
synced 2025-01-19 11:19:14 +08:00
35 lines
983 B
TypeScript
35 lines
983 B
TypeScript
|
import * as cheerio from "cheerio"
|
||
|
import type { NewsItem } from "@shared/types"
|
||
|
|
||
|
const trending = defineSource(async () => {
|
||
|
const baseURL = "https://github.com"
|
||
|
const html: any = await $fetch("https://github.com/trending?spoken_language_code=")
|
||
|
const $ = cheerio.load(html)
|
||
|
const $main = $("main .Box div[data-hpc] > article")
|
||
|
const news: NewsItem[] = []
|
||
|
$main.each((_, el) => {
|
||
|
const a = $(el).find(">h2 a")
|
||
|
const title = a.text().replace(/\n+/g, "").trim()
|
||
|
const url = a.attr("href")
|
||
|
const star = $(el).find("[href$=stargazers]").text().replace(/\s+/g, "").trim()
|
||
|
const desc = $(el).find(">p").text().replace(/\n+/g, "").trim()
|
||
|
if (url && title) {
|
||
|
news.push({
|
||
|
url: `${baseURL}${url}`,
|
||
|
title,
|
||
|
id: url,
|
||
|
extra: {
|
||
|
info: `✰ ${star}`,
|
||
|
hover: desc,
|
||
|
},
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
return news
|
||
|
})
|
||
|
|
||
|
export default defineSource({
|
||
|
"github": trending,
|
||
|
"github-trending-today": trending,
|
||
|
})
|