mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-09 14:40:23 +08:00
feat: add 755 (#3557)
This commit is contained in:
@@ -4,6 +4,12 @@ pageClass: routes
|
||||
|
||||
# 社交媒体
|
||||
|
||||
## 755
|
||||
|
||||
### 用户时间线
|
||||
|
||||
<Route author="hoilc" example="/755/user/akimoto-manatsu" path="/755/user/:username" :paramsDesc="['用户名, 可在 URL 中找到']"/>
|
||||
|
||||
## bilibili
|
||||
|
||||
::: tip Tiny Tiny RSS 用户请注意
|
||||
|
||||
@@ -2024,6 +2024,9 @@ router.get('/bahamut/creation_index/:category?/:subcategory?/:type?', require('.
|
||||
// CentBrowser
|
||||
router.get('/centbrowser/history', require('./routes/centbrowser/history'));
|
||||
|
||||
// 755
|
||||
router.get('/755/user/:username', require('./routes/755/user'));
|
||||
|
||||
// Mastodon
|
||||
router.get('/mastodon/timeline/:site/:only_media?', require('./routes/mastodon/timeline'));
|
||||
|
||||
|
||||
71
lib/routes/755/user.js
Normal file
71
lib/routes/755/user.js
Normal file
@@ -0,0 +1,71 @@
|
||||
const got = require('@/utils/got');
|
||||
|
||||
const postTypes = {
|
||||
1: '文字',
|
||||
2: '表情',
|
||||
3: '纯图片',
|
||||
4: '评论',
|
||||
5: '转发',
|
||||
6: '纯视频',
|
||||
7: '图片文字',
|
||||
8: '视频文字',
|
||||
};
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const username = ctx.params.username;
|
||||
|
||||
const url = `https://api.7gogo.jp/web/v2/talks/${username}/posts?talkId=${username}&direction=PREV`;
|
||||
|
||||
const response = await got.get(url);
|
||||
const list = response.data.data;
|
||||
|
||||
const user_display_name = list[0].user.name;
|
||||
const user_description = list[0].user.description;
|
||||
const user_image = list[0].user.coverImageUrl;
|
||||
|
||||
const GetContent = (post) =>
|
||||
post.body &&
|
||||
post.body
|
||||
.map((item) => {
|
||||
switch (item.bodyType) {
|
||||
case 1:
|
||||
return `<p>${item.text.replace(/\n/gm, '<br/>')}</p>`;
|
||||
case 2:
|
||||
return `<img src="${item.image}">`;
|
||||
case 3:
|
||||
return `<img src="${item.image}">`;
|
||||
case 4:
|
||||
return `<blockquote>${item.comment.user.name}:<br/>${item.comment.comment.body.replace(/\n/gm, '<br/>')}</blockquote>`;
|
||||
case 7:
|
||||
return `<blockquote>${item.talk.name}:<br/>${GetContent(item.post)}</blockquote>`;
|
||||
case 8:
|
||||
return `<video src="${item.movieUrlHq}" poster="${item.thumbnailUrl}" controls loop>Video</video>`;
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
})
|
||||
.join('');
|
||||
|
||||
const GetTitle = (post) => {
|
||||
const texts = post.body.filter((s) => s.bodyType === 1);
|
||||
const type_name = postTypes[post.postType];
|
||||
return texts.length !== 0 ? texts[0].text.split('\n')[0] : type_name;
|
||||
};
|
||||
|
||||
const ProcessFeed = (data) =>
|
||||
data.slice(0, 20).map((item) => ({
|
||||
title: GetTitle(item.post),
|
||||
author: user_display_name,
|
||||
description: GetContent(item.post),
|
||||
pubDate: new Date(item.post.time * 1000).toUTCString(),
|
||||
link: `https://7gogo.jp/${username}/${item.post.postId}`,
|
||||
}));
|
||||
|
||||
ctx.state.data = {
|
||||
title: `${user_display_name} - 755`,
|
||||
image: user_image,
|
||||
description: user_description,
|
||||
link: `https://7gogo.jp/${username}`,
|
||||
item: ProcessFeed(list),
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user