mirror of
https://github.com/imsyy/DailyHotApi.git
synced 2026-01-12 05:04:56 +08:00
@@ -15,6 +15,7 @@ DISALLOW_ROBOT=true
|
||||
REDIS_HOST="127.0.0.1"
|
||||
REDIS_PORT=6379
|
||||
REDIS_PASSWORD=""
|
||||
REDIS_DB=0
|
||||
|
||||
# 缓存时长( 秒 )
|
||||
CACHE_TTL=3600
|
||||
@@ -27,3 +28,6 @@ USE_LOG_FILE=true
|
||||
|
||||
# RSS Mode
|
||||
RSS_MODE=false
|
||||
|
||||
# Weibo
|
||||
FILTER_WEIBO_ADVERTISEMENT=false
|
||||
@@ -15,7 +15,9 @@ export type Config = {
|
||||
REDIS_HOST: string;
|
||||
REDIS_PORT: number;
|
||||
REDIS_PASSWORD: string;
|
||||
REDIS_DB: number;
|
||||
ZHIHU_COOKIE: string;
|
||||
FILTER_WEIBO_ADVERTISEMENT: boolean;
|
||||
};
|
||||
|
||||
// 验证并提取环境变量
|
||||
@@ -52,5 +54,7 @@ export const config: Config = {
|
||||
REDIS_HOST: getEnvVariable("REDIS_HOST") || "127.0.0.1",
|
||||
REDIS_PORT: getNumericEnvVariable("REDIS_PORT", 6379),
|
||||
REDIS_PASSWORD: getEnvVariable("REDIS_PASSWORD") || "",
|
||||
REDIS_DB: getNumericEnvVariable("REDIS_DB", 0),
|
||||
ZHIHU_COOKIE: getEnvVariable("ZHIHU_COOKIE") || "",
|
||||
FILTER_WEIBO_ADVERTISEMENT: getBooleanEnvVariable("FILTER_WEIBO_ADVERTISEMENT", false),
|
||||
};
|
||||
|
||||
4
src/router.types.d.ts
vendored
4
src/router.types.d.ts
vendored
@@ -89,8 +89,10 @@ export type RouterType = {
|
||||
word_scheme: string;
|
||||
note: string;
|
||||
flag_desc: string;
|
||||
num: number;
|
||||
// num: number;
|
||||
desc_extr: number;
|
||||
onboard_time: number;
|
||||
pic: string;
|
||||
};
|
||||
zhihu: {
|
||||
target: {
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { RouterData } from "../types.js";
|
||||
import type { RouterType } from "../router.types.js";
|
||||
import { get } from "../utils/getData.js";
|
||||
import { getTime } from "../utils/getTime.js";
|
||||
import { config } from "../config";
|
||||
|
||||
export const handleRoute = async (_: undefined, noCache: boolean) => {
|
||||
const listData = await getList(noCache);
|
||||
@@ -36,18 +37,25 @@ const getList = async (noCache: boolean) => {
|
||||
const list = result.data.data.cards?.[0]?.card_group;
|
||||
return {
|
||||
...result,
|
||||
data: list.map((v: RouterType["weibo"]) => {
|
||||
const key = v.word_scheme ? v.word_scheme : `#${v.desc}`;
|
||||
return {
|
||||
id: v.itemid,
|
||||
title: v.desc,
|
||||
desc: key,
|
||||
// author: v.flag_desc,
|
||||
timestamp: getTime(v.onboard_time),
|
||||
// hot: v.num,
|
||||
url: `https://s.weibo.com/weibo?q=${encodeURIComponent(key)}&t=31&band_rank=1&Refer=top`,
|
||||
mobileUrl: v?.scheme,
|
||||
};
|
||||
}),
|
||||
data: list
|
||||
.filter(
|
||||
(v: RouterType["weibo"]) =>
|
||||
!(
|
||||
v?.pic === "https://simg.s.weibo.com/20210408_search_point_orange.png" &&
|
||||
config.FILTER_WEIBO_ADVERTISEMENT
|
||||
),
|
||||
)
|
||||
.map((v: RouterType["weibo"]) => {
|
||||
const key = v.word_scheme ?? `#${v.desc}`;
|
||||
return {
|
||||
id: v.itemid,
|
||||
title: v.desc,
|
||||
desc: key,
|
||||
timestamp: getTime(v.onboard_time),
|
||||
hot: v.desc_extr,
|
||||
url: `https://s.weibo.com/weibo?q=${encodeURIComponent(key)}&t=31&band_rank=1&Refer=top`,
|
||||
mobileUrl: v?.scheme,
|
||||
};
|
||||
}),
|
||||
};
|
||||
};
|
||||
|
||||
@@ -26,6 +26,7 @@ const redis = new Redis({
|
||||
host: config.REDIS_HOST,
|
||||
port: config.REDIS_PORT,
|
||||
password: config.REDIS_PASSWORD,
|
||||
db: config.REDIS_DB,
|
||||
maxRetriesPerRequest: 5,
|
||||
// 重试策略:最小延迟 50ms,最大延迟 2s
|
||||
retryStrategy: (times) => Math.min(times * 50, 2000),
|
||||
|
||||
Reference in New Issue
Block a user