新增页码选择
This commit is contained in:
+10
-2
@@ -8,6 +8,7 @@ import config from '../config';
|
||||
import { DomainNotFoundError, statusToHTML, UserNotFoundError, WeiboCookieInvalidError } from './weibo/weibo';
|
||||
import { ThrottledError } from './throttler';
|
||||
import { logger } from './logger';
|
||||
import { PageInvalidError, parsePageSpec } from './page';
|
||||
|
||||
export class UidInvalidError extends Error {
|
||||
constructor(uid: string) {
|
||||
@@ -32,10 +33,12 @@ export const registerRoutes = (
|
||||
throw new UidInvalidError(uid);
|
||||
}
|
||||
|
||||
const pageSpec = parsePageSpec(ctx.query.page);
|
||||
|
||||
// get data
|
||||
let cacheMiss = false;
|
||||
const xmlData = await ctx.cache.memo(async () => {
|
||||
const weiboData = await ctx.weibo.fetchUserLatestWeibo(uid);
|
||||
const weiboData = await ctx.weibo.fetchUserLatestWeibo(uid, pageSpec.pages);
|
||||
if (weiboData) {
|
||||
// basic info
|
||||
const feed = new NodeRSS({
|
||||
@@ -59,7 +62,7 @@ export const registerRoutes = (
|
||||
cacheMiss = true;
|
||||
return feed.xml();
|
||||
}
|
||||
}, `xml-${uid}`, config.cacheTTL.rssXml);
|
||||
}, `xml-${uid}-page-${pageSpec.key}`, config.cacheTTL.rssXml);
|
||||
|
||||
// send data
|
||||
ctx.set('Content-Type', 'text/xml');
|
||||
@@ -78,6 +81,11 @@ export const registerRoutes = (
|
||||
ctx.body = `找不到用户,可能用户仅登录可见,不支持订阅。可以通过打开 https://m.weibo.cn/u/:uid 验证(<a href="https://m.weibo.cn/u/${uid}" target="_blank">uid: ${uid}</a>)`;
|
||||
return;
|
||||
}
|
||||
if (error instanceof PageInvalidError) {
|
||||
ctx.status = 400;
|
||||
ctx.body = `page 参数格式有误。支持单页如 7,范围如 1-10,或列表如 1,3,5。page: ${error.message.replace(/^page:\s*/, '')}`;
|
||||
return;
|
||||
}
|
||||
if (error instanceof WeiboCookieInvalidError) {
|
||||
ctx.status = 401;
|
||||
ctx.body = `微博 Cookie 可能已过期或失效,请更新 WEIBO_COOKIE 后重试。uid: ${uid}`;
|
||||
|
||||
Reference in New Issue
Block a user