支持输出统计

This commit is contained in:
2024-12-16 09:59:17 +08:00
parent ac8d89454b
commit 409ff2f44a
2 changed files with 32 additions and 4 deletions

25
main.js
View File

@@ -8,6 +8,7 @@ class 计数 {
= new Map() = new Map()
= new Map() = new Map()
= new Map() = new Map()
= new Map()
} }
class 类型 { class 类型 {
@@ -25,6 +26,24 @@ const 截图 = new 类型()
const 收藏 = new 类型() const 收藏 = new 类型()
const 综合 = new 类型() const 综合 = new 类型()
// 获取浏览数
export function get_views(name, ids = []) {
const all = { 文章, 作品, 游戏, 截图, 收藏, 综合 }
const counts = all[name].浏览数.
return ids.map(id => ({ id, count: counts.get(id) || 0 }))
}
// 获取当日热门搜索词
export function get_search(n = 10) {
const ex = new Map()
const all = { 文章, 作品, 游戏, 截图, 收藏, 综合 }
for (const item of all) {
item.搜索词.forEach((value, key) => {
ex.set(key, (ex.get(key) || 0) + value)
})
}
return [...ex.entries()].sort((a, b) => b[1] - a[1]).slice(0, n)
}
const 日期格式 = new Intl.DateTimeFormat('zh-CN', { const 日期格式 = new Intl.DateTimeFormat('zh-CN', {
year: 'numeric', year: 'numeric',
@@ -60,7 +79,7 @@ const 存档 = async (message = '正在存档...') => {
} }
export default function () { export function main() {
console.log(当前日期, '启动时加载当日数据...') console.log(当前日期, '启动时加载当日数据...')
if (fs.existsSync(`./data/${当前日期}.json`)) { if (fs.existsSync(`./data/${当前日期}.json`)) {
const file = fs.readFileSync(`./data/${当前日期}.json`, 'utf8') const file = fs.readFileSync(`./data/${当前日期}.json`, 'utf8')
@@ -84,13 +103,13 @@ export default function () {
await update('web_images', 'day_rank', Object.entries(Object.fromEntries(截图.浏览数.))) await update('web_images', 'day_rank', Object.entries(Object.fromEntries(截图.浏览数.)))
await update('web_article', 'day_rank', Object.entries(Object.fromEntries(文章.浏览数.))) await update('web_article', 'day_rank', Object.entries(Object.fromEntries(文章.浏览数.)))
await update_explorer('web_member_explorer', 'day_rank', Object.entries(Object.fromEntries(收藏.浏览数.))) await update_explorer('web_member_explorer', 'day_rank', Object.entries(Object.fromEntries(收藏.浏览数.)))
} catch(err) { } catch (err) {
console.error(err) console.error(err)
} }
await new Promise(resolve => setTimeout(resolve, 10 * 60 * 1000)) await new Promise(resolve => setTimeout(resolve, 10 * 60 * 1000))
} }
} }
// 启动定时任务 // 启动定时任务
startScheduledTask() startScheduledTask()

View File

@@ -1,10 +1,19 @@
import fs from 'fs' import fs from 'fs'
import express from 'express' import express from 'express'
import main from './main.js' import { main, get_search, get_views } from './main.js'
const app = express() const app = express()
app.use(express.json()) app.use(express.json())
app.get('/api/get_views/:name', (req, res) => {
res.json(get_views(req.params.name, req.query.ids))
})
app.get('/api/get_search/hot', (req, res) => {
res.json(get_search(req.query.page || 10))
})
app.get('/api', (req, res) => { app.get('/api', (req, res) => {
const { start, end } = req.query const { start, end } = req.query
console.log(req.query) console.log(req.query)