支持输出统计
This commit is contained in:
21
main.js
21
main.js
@@ -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')
|
||||||
|
11
server.js
11
server.js
@@ -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)
|
||||||
|
Reference in New Issue
Block a user