mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
import { applyContentFilter } from '@/components/feeds/api'
|
|
import { VideoCard } from '@/components/feeds/video-card'
|
|
import { getJson, getJsonWithCredentials } from '@/core/ajax'
|
|
import { getUID } from '@/core/utils'
|
|
import { formatDuration, formatCount } from '@/core/utils/formatters'
|
|
|
|
export const getTrendingVideos = async (isPersonalized: boolean) => {
|
|
const api = 'https://api.bilibili.com/x/web-interface/index/top/feed/rcmd'
|
|
|
|
const personalized = Boolean(getUID()) && isPersonalized
|
|
const requestMethod = personalized ? getJsonWithCredentials : getJson
|
|
const { code, message, data } = await requestMethod(api)
|
|
if (code !== 0) {
|
|
throw new Error(`获取${personalized ? '推荐' : '热门'}视频失败: ${message}`)
|
|
}
|
|
const list: any[] = data.item
|
|
const cards = list.map(it => {
|
|
const card: VideoCard = {
|
|
id: it.id,
|
|
aid: it.id,
|
|
bvid: it.bvid,
|
|
coverUrl: it.pic.replace('http:', 'https:'),
|
|
title: it.title,
|
|
description: '',
|
|
dynamic: '',
|
|
duration: it.duration,
|
|
durationText: formatDuration(it.duration),
|
|
timestamp: it.pubdate * 1000,
|
|
time: new Date(it.pubdate * 1000),
|
|
upName: it.owner.name,
|
|
upID: it.owner.mid,
|
|
upFaceUrl: it.owner.face.replace('http:', 'https:'),
|
|
like: formatCount(it.stat.like),
|
|
playCount: formatCount(it.stat.view),
|
|
danmakuCount: formatCount(it.stat.danmaku),
|
|
}
|
|
return card
|
|
})
|
|
return applyContentFilter(cards)
|
|
}
|