mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-02 01:58:11 +08:00
* feat(route): support medium * docs(route): support medium * feat(medium): add radar.js * Update docs/blog.md Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update docs/blog.md Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update docs/blog.md Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update docs/blog.md Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update docs/en/blog.md Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/medium/tag.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/medium/router.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/medium/maintainer.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update docs/en/blog.md Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update docs/en/blog.md Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update docs/en/blog.md Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/medium/following.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/medium/for-you.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * Update lib/v2/medium/list.js Co-authored-by: Tony <TonyRL@users.noreply.github.com> * chore(medium): update graphql --------- Co-authored-by: Tony <TonyRL@users.noreply.github.com>
33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
const config = require('@/config').value;
|
||
|
||
const parseArticle = require('./parse-article.js');
|
||
const { getUserCatalogMainContentQuery } = require('./graphql.js');
|
||
|
||
module.exports = async (ctx) => {
|
||
const user = ctx.params.user;
|
||
const catalogId = ctx.params.catalogId;
|
||
|
||
const cookie = config.medium.cookies[user];
|
||
|
||
const catalog = await getUserCatalogMainContentQuery(user, catalogId, cookie);
|
||
ctx.state.json = catalog;
|
||
|
||
if (catalog && catalog.__typename === 'Forbidden') {
|
||
throw Error(`无权访问 id 为 ${catalogId} 的 List(可能是未设置 Cookie 或 Cookie 已过期)`);
|
||
}
|
||
if (!catalog || !catalog.itemsConnection) {
|
||
throw Error(`id 为 ${catalogId} 的 List 不存在`);
|
||
}
|
||
|
||
const name = catalog.name;
|
||
const urls = catalog.itemsConnection.items.map((item) => item.entity.mediumUrl);
|
||
|
||
const parsedArticles = await Promise.all(urls.map((url) => parseArticle(ctx, url)));
|
||
|
||
ctx.state.data = {
|
||
title: `List: ${name}`,
|
||
link: `https://medium.com/@${user}/list/${catalogId}`,
|
||
item: parsedArticles,
|
||
};
|
||
};
|