-
Notifications
You must be signed in to change notification settings - Fork 7.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(route): Weibo Routing Add User Latest Follow Timeline | 微博路由 添加 …
…用户最新关注时间线 (#14385) * feat(route): 微博路由 添加 用户最新关注时间线 * fix(route): 优化 微博最新关注时间线 的标题显示 ---------
- Loading branch information
1 parent
52bcabd
commit 4224b97
Showing
7 changed files
with
146 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
const querystring = require('querystring'); | ||
const got = require('@/utils/got'); | ||
const config = require('@/config').value; | ||
const weiboUtils = require('./utils'); | ||
const { fallback, queryToBoolean } = require('@/utils/readable-social'); | ||
|
||
module.exports = async (ctx) => { | ||
if (!config.weibo.cookies) { | ||
throw 'Weibo Friends Timeline is not available due to the absense of [Weibo Cookies]. Check <a href="https://docs.rsshub.app/install/#pei-zhi-bu-fen-rss-mo-kuai-pei-zhi">relevant config tutorial</a>'; | ||
} | ||
|
||
let displayVideo = '1'; | ||
let displayArticle = '0'; | ||
let displayComments = '0'; | ||
if (ctx.params.routeParams) { | ||
if (ctx.params.routeParams === '1' || ctx.params.routeParams === '0') { | ||
displayVideo = ctx.params.routeParams; | ||
} else { | ||
const routeParams = querystring.parse(ctx.params.routeParams); | ||
displayVideo = fallback(undefined, queryToBoolean(routeParams.displayVideo), true) ? '1' : '0'; | ||
displayArticle = fallback(undefined, queryToBoolean(routeParams.displayArticle), false) ? '1' : '0'; | ||
displayComments = fallback(undefined, queryToBoolean(routeParams.displayComments), false) ? '1' : '0'; | ||
} | ||
} | ||
|
||
const uid = await ctx.cache.tryGet( | ||
`weibo:friends:login-user`, | ||
async () => { | ||
const _r = await got({ | ||
method: 'get', | ||
url: 'https://m.weibo.cn/api/config', | ||
headers: { | ||
Referer: `https://m.weibo.cn/`, | ||
'MWeibo-Pwa': 1, | ||
'X-Requested-With': 'XMLHttpRequest', | ||
Cookie: config.weibo.cookies, | ||
}, | ||
}); | ||
return _r.data.data.uid; | ||
}, | ||
config.cache.routeExpire, | ||
false | ||
); | ||
|
||
const containerData = await ctx.cache.tryGet( | ||
`weibo:user:index:${uid}`, | ||
async () => { | ||
const _r = await got({ | ||
method: 'get', | ||
url: `https://m.weibo.cn/api/container/getIndex?type=uid&value=${uid}`, | ||
headers: { | ||
Referer: `https://m.weibo.cn/u/${uid}`, | ||
'MWeibo-Pwa': 1, | ||
'X-Requested-With': 'XMLHttpRequest', | ||
Cookie: config.weibo.cookies, | ||
}, | ||
}); | ||
return _r.data; | ||
}, | ||
config.cache.routeExpire, | ||
false | ||
); | ||
|
||
const name = containerData.data.userInfo.screen_name; | ||
const title = `${name} 的 最新关注时间线`; | ||
|
||
const responseData = await ctx.cache.tryGet( | ||
`weibo:friends:index:${uid}`, | ||
async () => { | ||
const _r = await got({ | ||
method: 'get', | ||
url: 'https://m.weibo.cn/feed/friends', | ||
headers: { | ||
Referer: `https://m.weibo.cn/`, | ||
'MWeibo-Pwa': 1, | ||
'X-Requested-With': 'XMLHttpRequest', | ||
Cookie: config.weibo.cookies, | ||
}, | ||
}); | ||
return _r.data.data; | ||
}, | ||
config.cache.routeExpire, | ||
false | ||
); | ||
const resultItems = await Promise.all( | ||
responseData.statuses.map(async (item) => { | ||
const retweet = item.retweeted_status; | ||
if (retweet && retweet.isLongText) { | ||
const retweetData = await ctx.cache.tryGet(`weibo:retweeted:${retweet.user.id}:${retweet.bid}`, () => weiboUtils.getShowData(retweet.user.id, retweet.bid)); | ||
if (retweetData !== undefined && retweetData.text) { | ||
item.retweeted_status.text = retweetData.text; | ||
} | ||
} | ||
|
||
const formatExtended = weiboUtils.formatExtended(ctx, item); | ||
let description = formatExtended.description; | ||
|
||
if (displayVideo === '1') { | ||
description = item.retweeted_status ? weiboUtils.formatVideo(description, item.retweeted_status) : weiboUtils.formatVideo(description, item); | ||
} | ||
|
||
if (displayComments === '1') { | ||
description = await weiboUtils.formatComments(ctx, description, item); | ||
} | ||
|
||
if (displayArticle === '1') { | ||
description = await (item.retweeted_status ? weiboUtils.formatArticle(ctx, description, item.retweeted_status) : weiboUtils.formatArticle(ctx, description, item)); | ||
} | ||
|
||
return { | ||
...formatExtended, | ||
description, | ||
}; | ||
}) | ||
); | ||
|
||
ctx.state.data = weiboUtils.sinaimgTvax({ | ||
title, | ||
link: `https://weibo.com`, | ||
item: resultItems, | ||
}); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters