Files
RSSHub/lib/v2/lanqiao/author.js
T
8666d77953 fix(route): 蓝桥云课新增课程排序规则并修复多个错误 (#8986)
* 新增:蓝桥云课作者发布的课程

* 新增:蓝桥云课最新发布的课程

* 修复:新增 pubDate 避免某些 RSS 解析服务失败

* 新增:社区技术问题

* 修复:过滤置顶的帖子

* 新增:社区问答支持主题 ID

* 修复:Route 文档错误

* 更新:优化源链接

* 优化:对 RSSHub Radar 的支持

* 新增 RSS <image> Element

* 移除 image

* fix: /lanqiao 文档路径错误

* 优化:蓝桥云课新增课程排序规则

* 修复:蓝桥云课课程发布日期字段

* style: auto format

* 优化:课程标题展示课程类型

* style: auto format

* Update docs/programming.md

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* 修复:数据源无日期已移除

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Tony <TonyRL@users.noreply.github.com>
2022-02-05 18:27:00 +08:00

62 lines
1.9 KiB
JavaScript

const got = require('@/utils/got');
const utils = require('./utils');
const MarkdownIt = require('markdown-it');
async function getUserName(uid) {
// 获取用户信息
const response = await got({
method: 'get',
url: `https://www.lanqiao.cn/api/v2/users/${uid}/`,
headers: {
Referer: `https://www.lanqiao.cn/users/${uid}/`,
},
});
return response.data.name;
}
module.exports = async (ctx) => {
const uid = ctx.params.uid;
const userName = await getUserName(uid);
// 发起 HTTP GET 请求
const response = await got({
method: 'get',
url: `https://www.lanqiao.cn/api/v2/users/${uid}/courses/?type=published`,
headers: {
Referer: `https://www.lanqiao.cn/users/${uid}/`,
},
});
const data = response.data.results; // response.data 为 HTTP GET 请求返回的数据对象
const md = new MarkdownIt();
const items = await Promise.all(
data.map((item) =>
ctx.cache.tryGet(`https://www.lanqiao.cn/api/v2/courses/${item.id}/`, async () => {
const courseResponse = await got({
method: 'get',
url: `https://www.lanqiao.cn/api/v2/courses/${item.id}/`,
});
const course = courseResponse.data;
item.title = course.name;
item.description = utils.courseDesc(course.picture_url, md.render(course.long_description));
item.author = course.teacher.name;
item.link = `https://www.lanqiao.cn/courses/${course.id}/`;
return item;
})
)
);
ctx.state.data = {
// 源标题
title: `${userName} 发布的课程`,
// 源链接
link: `https://www.lanqiao.cn/users/${uid}`,
// 源说明
description: `${userName} 发布的课程`,
// 遍历此前获取的数据
item: items,
};
};