diff --git a/main.js b/main.js index 955c82f..3d49f3b 100644 --- a/main.js +++ b/main.js @@ -8,6 +8,7 @@ class 计数 { 周 = new Map() 月 = new Map() 年 = new Map() + 总 = new Map() } class 类型 { @@ -25,6 +26,24 @@ 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', { year: 'numeric', @@ -60,7 +79,7 @@ const 存档 = async (message = '正在存档...') => { } -export default function () { +export function main() { console.log(当前日期, '启动时加载当日数据...') if (fs.existsSync(`./data/${当前日期}.json`)) { 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_article', '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) } await new Promise(resolve => setTimeout(resolve, 10 * 60 * 1000)) } } - + // 启动定时任务 startScheduledTask() diff --git a/server.js b/server.js index 5454b44..5622ca0 100644 --- a/server.js +++ b/server.js @@ -1,10 +1,19 @@ import fs from 'fs' import express from 'express' -import main from './main.js' +import { main, get_search, get_views } from './main.js' const app = express() 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) => { const { start, end } = req.query console.log(req.query)