mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-24 23:12:34 +08:00
Add files via upload
添加作者信息
This commit is contained in:
@@ -1,126 +1,128 @@
|
|||||||
const got = require('@/utils/got');
|
const got = require('@/utils/got');
|
||||||
const cache = require('./cache');
|
const cache = require('./cache');
|
||||||
const config = require('@/config').value;
|
const config = require('@/config').value;
|
||||||
const utils = require('./utils');
|
const utils = require('./utils');
|
||||||
const JSONbig = require('json-bigint');
|
const JSONbig = require('json-bigint');
|
||||||
|
|
||||||
module.exports = async (ctx) => {
|
module.exports = async (ctx) => {
|
||||||
const uid = String(ctx.params.uid);
|
const uid = String(ctx.params.uid);
|
||||||
const disableEmbed = ctx.params.disableEmbed;
|
const disableEmbed = ctx.params.disableEmbed;
|
||||||
const name = await cache.getUsernameFromUID(ctx, uid);
|
const name = await cache.getUsernameFromUID(ctx, uid);
|
||||||
|
|
||||||
const cookie = config.bilibili.cookies[uid];
|
const cookie = config.bilibili.cookies[uid];
|
||||||
if (cookie === undefined) {
|
if (cookie === undefined) {
|
||||||
throw Error('缺少对应 uid 的 Bilibili 用户登录后的 Cookie 值');
|
throw Error('缺少对应 uid 的 Bilibili 用户登录后的 Cookie 值');
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await got({
|
const response = await got({
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: `https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=${uid}&type_list=268435455`,
|
url: `https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=${uid}&type_list=268435455`,
|
||||||
headers: {
|
headers: {
|
||||||
Referer: `https://space.bilibili.com/${uid}/`,
|
Referer: `https://space.bilibili.com/${uid}/`,
|
||||||
Cookie: cookie,
|
Cookie: cookie,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
if (response.data.code === -6) {
|
if (response.data.code === -6) {
|
||||||
throw Error('对应 uid 的 Bilibili 用户的 Cookie 已过期');
|
throw Error('对应 uid 的 Bilibili 用户的 Cookie 已过期');
|
||||||
}
|
}
|
||||||
const data = JSONbig.parse(response.body).data.cards;
|
const data = JSONbig.parse(response.body).data.cards;
|
||||||
|
|
||||||
ctx.state.data = {
|
ctx.state.data = {
|
||||||
title: `${name} 关注的动态`,
|
title: `${name} 关注的动态`,
|
||||||
link: `https://t.bilibili.com`,
|
link: `https://t.bilibili.com`,
|
||||||
description: `${name} 关注的所有动态`,
|
description: `${name} 关注的动态`,
|
||||||
item: data.map((item) => {
|
item: data.map((item) => {
|
||||||
const parsed = JSONbig.parse(item.card);
|
const parsed = JSONbig.parse(item.card);
|
||||||
const data = parsed.item || parsed;
|
const data = parsed.item || parsed;
|
||||||
const origin = parsed.origin ? JSONbig.parse(parsed.origin) : null;
|
const origin = parsed.origin ? JSONbig.parse(parsed.origin) : null;
|
||||||
|
//作者
|
||||||
// img
|
author: card.desc.user_profile.info.uname
|
||||||
let imgHTML = '';
|
|
||||||
const getImgs = (data) => {
|
// img
|
||||||
let imgs = '';
|
let imgHTML = '';
|
||||||
// 动态图片
|
const getImgs = (data) => {
|
||||||
if (data.pictures) {
|
let imgs = '';
|
||||||
for (let i = 0; i < data.pictures.length; i++) {
|
// 动态图片
|
||||||
imgs += `<img src="${data.pictures[i].img_src}">`;
|
if (data.pictures) {
|
||||||
}
|
for (let i = 0; i < data.pictures.length; i++) {
|
||||||
}
|
imgs += `<img src="${data.pictures[i].img_src}">`;
|
||||||
// 专栏封面
|
}
|
||||||
if (data.image_urls) {
|
}
|
||||||
for (let i = 0; i < data.image_urls.length; i++) {
|
// 专栏封面
|
||||||
imgs += `<img src="${data.image_urls[i]}">`;
|
if (data.image_urls) {
|
||||||
}
|
for (let i = 0; i < data.image_urls.length; i++) {
|
||||||
}
|
imgs += `<img src="${data.image_urls[i]}">`;
|
||||||
// 视频封面
|
}
|
||||||
if (data.pic) {
|
}
|
||||||
imgs += `<img src="${data.pic}">`;
|
// 视频封面
|
||||||
}
|
if (data.pic) {
|
||||||
// 音频/番剧/直播间封面/小视频封面
|
imgs += `<img src="${data.pic}">`;
|
||||||
if (data.cover && data.cover.unclipped) {
|
}
|
||||||
imgs += `<img src="${data.cover.unclipped}">`;
|
// 音频/番剧/直播间封面/小视频封面
|
||||||
} else if (data.cover) {
|
if (data.cover && data.cover.unclipped) {
|
||||||
imgs += `<img src="${data.cover}">`;
|
imgs += `<img src="${data.cover.unclipped}">`;
|
||||||
}
|
} else if (data.cover) {
|
||||||
// 专题页封面
|
imgs += `<img src="${data.cover}">`;
|
||||||
if (data.sketch && data.sketch.cover_url) {
|
}
|
||||||
imgs += `<img src="${data.sketch.cover_url}">`;
|
// 专题页封面
|
||||||
}
|
if (data.sketch && data.sketch.cover_url) {
|
||||||
return imgs;
|
imgs += `<img src="${data.sketch.cover_url}">`;
|
||||||
};
|
}
|
||||||
|
return imgs;
|
||||||
imgHTML += getImgs(data);
|
};
|
||||||
|
|
||||||
if (origin) {
|
imgHTML += getImgs(data);
|
||||||
imgHTML += getImgs(origin.item || origin);
|
|
||||||
}
|
if (origin) {
|
||||||
// video小视频
|
imgHTML += getImgs(origin.item || origin);
|
||||||
let videoHTML = '';
|
}
|
||||||
if (data.video_playurl) {
|
// video小视频
|
||||||
videoHTML += `<video width="${data.width}" height="${data.height}" controls><source src="${unescape(data.video_playurl).replace(/^http:/, 'https:')}"><source src="${unescape(data.video_playurl)}"></video>`;
|
let videoHTML = '';
|
||||||
}
|
if (data.video_playurl) {
|
||||||
// some rss readers disallow http content.
|
videoHTML += `<video width="${data.width}" height="${data.height}" controls><source src="${unescape(data.video_playurl).replace(/^http:/, 'https:')}"><source src="${unescape(data.video_playurl)}"></video>`;
|
||||||
// 部分 RSS 阅读器要求内容必须使用https传输
|
}
|
||||||
// bilibili short video does support https request, but https request may timeout ocassionally.
|
// some rss readers disallow http content.
|
||||||
// to maximize content availability, here add two source tags.
|
// 部分 RSS 阅读器要求内容必须使用https传输
|
||||||
// bilibili的API中返回的视频地址采用http,然而经验证,短视频地址支持https访问,但偶尔会返回超时错误(可能是网络原因)。
|
// bilibili short video does support https request, but https request may timeout ocassionally.
|
||||||
// 因此保险起见加入两个source标签
|
// to maximize content availability, here add two source tags.
|
||||||
// link
|
// bilibili的API中返回的视频地址采用http,然而经验证,短视频地址支持https访问,但偶尔会返回超时错误(可能是网络原因)。
|
||||||
let link = '';
|
// 因此保险起见加入两个source标签
|
||||||
if (data.dynamic_id) {
|
// link
|
||||||
link = `https://t.bilibili.com/${data.dynamic_id}`;
|
let link = '';
|
||||||
} else if (item.desc && item.desc.dynamic_id) {
|
if (data.dynamic_id) {
|
||||||
link = `https://t.bilibili.com/${item.desc.dynamic_id}`;
|
link = `https://t.bilibili.com/${data.dynamic_id}`;
|
||||||
}
|
} else if (item.desc && item.desc.dynamic_id) {
|
||||||
|
link = `https://t.bilibili.com/${item.desc.dynamic_id}`;
|
||||||
const getTitle = (data) => data.title || data.description || data.content || (data.vest && data.vest.content) || '';
|
}
|
||||||
const getDes = (data) =>
|
|
||||||
data.dynamic || data.desc || data.description || data.content || data.summary || (data.vest && data.vest.content) + (data.sketch && `<br>${data.sketch.title}<br>${data.sketch.desc_text}`) || data.intro || '';
|
const getTitle = (data) => data.title || data.description || data.content || (data.vest && data.vest.content) || '';
|
||||||
const getOriginDes = (data) => (data && (data.apiSeasonInfo && data.apiSeasonInfo.title && `//转发自: ${data.apiSeasonInfo.title}`) + (data.index_title && `<br>${data.index_title}`)) || '';
|
const getDes = (data) =>
|
||||||
const getOriginName = (data) => data.uname || (data.author && data.author.name) || data.upper || (data.user && (data.user.uname || data.user.name)) || (data.owner && data.owner.name) || '';
|
data.dynamic || data.desc || data.description || data.content || data.summary || (data.vest && data.vest.content) + (data.sketch && `<br>${data.sketch.title}<br>${data.sketch.desc_text}`) || data.intro || '';
|
||||||
const getOriginTitle = (data) => (data.title ? `${data.title}<br>` : '');
|
const getOriginDes = (data) => (data && (data.apiSeasonInfo && data.apiSeasonInfo.title && `//转发自: ${data.apiSeasonInfo.title}`) + (data.index_title && `<br>${data.index_title}`)) || '';
|
||||||
const getIframe = (data) => (!disableEmbed && data && data.aid ? `<br><br>${utils.iframe(data.aid)}<br>` : '');
|
const getOriginName = (data) => data.uname || (data.author && data.author.name) || data.upper || (data.user && (data.user.uname || data.user.name)) || (data.owner && data.owner.name) || '';
|
||||||
|
const getOriginTitle = (data) => (data.title ? `${data.title}<br>` : '');
|
||||||
// emoji
|
const getIframe = (data) => (!disableEmbed && data && data.aid ? `<br><br>${utils.iframe(data.aid)}<br>` : '');
|
||||||
let data_content = getDes(data);
|
|
||||||
if (item.display.emoji_info) {
|
// emoji
|
||||||
const emoji = item.display.emoji_info.emoji_details;
|
let data_content = getDes(data);
|
||||||
emoji.forEach(function (item) {
|
if (item.display.emoji_info) {
|
||||||
data_content = data_content.replace(
|
const emoji = item.display.emoji_info.emoji_details;
|
||||||
new RegExp(`\\${item.text}`, 'g'),
|
emoji.forEach(function (item) {
|
||||||
`<img alt="${item.text}" src="${item.url}"style="margin: -1px 1px 0px; display: inline-block; width: 20px; height: 20px; vertical-align: text-bottom;" title="" referrerpolicy="no-referrer">`
|
data_content = data_content.replace(
|
||||||
);
|
new RegExp(`\\${item.text}`, 'g'),
|
||||||
});
|
`<img alt="${item.text}" src="${item.url}"style="margin: -1px 1px 0px; display: inline-block; width: 20px; height: 20px; vertical-align: text-bottom;" title="" referrerpolicy="no-referrer">`
|
||||||
}
|
);
|
||||||
|
});
|
||||||
return {
|
}
|
||||||
title: getTitle(data),
|
|
||||||
description: `${data_content || getDes(data)}${
|
return {
|
||||||
origin && getOriginName(origin) ? `<br><br>//转发自: @${getOriginName(origin)}: ${getOriginTitle(origin.item || origin)}${getDes(origin.item || origin)}` : `${getOriginDes(origin)}`
|
title: getTitle(data),
|
||||||
}${getIframe(data)}${getIframe(origin)}${imgHTML ? `<br>${imgHTML}` : ''}${videoHTML ? `<br>${videoHTML}` : ''}`,
|
description: `${data_content || getDes(data)}${
|
||||||
pubDate: new Date(item.desc.timestamp * 1000).toUTCString(),
|
origin && getOriginName(origin) ? `<br><br>//转发自: @${getOriginName(origin)}: ${getOriginTitle(origin.item || origin)}${getDes(origin.item || origin)}` : `${getOriginDes(origin)}`
|
||||||
link: link,
|
}${getIframe(data)}${getIframe(origin)}${imgHTML ? `<br>${imgHTML}` : ''}${videoHTML ? `<br>${videoHTML}` : ''}`,
|
||||||
};
|
pubDate: new Date(item.desc.timestamp * 1000).toUTCString(),
|
||||||
}),
|
link: link,
|
||||||
};
|
};
|
||||||
};
|
}),
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user