43

我正在尝试通过显示一些带有帖子图像和指向原始 Medium 出版物的链接的卡片来将 Medium 博客集成到应用程序中。

从 Medium API 文档中,我可以看到如何检索出版物和创建帖子,但它没有提到检索帖子。当前是否可以使用 Medium 的 API 为用户检索帖子/故事?

4

12 回答 12

76

API 是只写的,不打算检索帖子(中型员工告诉我)

您可以像这样简单地使用 RSS 提要:

https://medium.com/feed/@your_profile

您可以简单地通过 GET 获取 RSS 提要,然后如果您需要 JSON 格式的它,只需使用像rss-to-json这样的 NPM 模块就可以了。

于 2016-09-22T18:51:05.473 回答
12

编辑:

可以向以下 URL 发出请求,您将收到响应。不幸的是,响应是 RSS 格式,如果需要,需要对 JSON 进行一些解析。

https://medium.com/feed/@yourhandle

⚠️ 以下方法不再适用,因为它落后于 Cloudflare 的 DDoS 保护。

如果您打算使用 JavaScript、jQuery 或 Angular 等从客户端获取它,那么您需要构建一个 API 网关或 Web 服务来为您的提要提供服务。在 PHP、RoR 或任何不应该出现的服务器端的情况下。

您可以直接以 JSON 格式获取它,如下所示:

https://medium.com/@yourhandle/latest?format=json    

就我而言,我在 express 应用程序中创建了一个简单的 Web 服务,并将其托管在 Heroku 上。React App 访问 Heroku 上公开的 API 并获取数据。

const MEDIUM_URL = "https://medium.com/@yourhandle/latest?format=json";

router.get("/posts", (req, res, next) => {
  request.get(MEDIUM_URL, (err, apiRes, body) => {
    if (!err && apiRes.statusCode === 200) {
      let i = body.indexOf("{");
      const data = body.substr(i);
      res.send(data);
    } else {
      res.sendStatus(500).json(err);
    }
  });
});
于 2018-09-15T06:28:18.313 回答
8

现在这个网址:

https://medium.com/@username/latest?format=json

位于 Cloudflare 的 DDoS 保护服务之后,因此您通常不会始终以 JSON 格式为您的提要提供服务,而是通常会收到一个 HTML,该 HTML 假设呈现一个网站以完成 reCAPTCHA,并且没有来自 API 请求的数据。

以及以下内容:

https://medium.com/feed/@username

有最近 10 个帖子的限制。

我建议我为此目的制作这个免费的 Cloudflare Worker 。它作为一个门面工作,因此您不必担心如何从源、reCAPTCHA 或分页获取帖子。

关于它的完整文章。

活生生的例子。要获取以下项目,请使用 API 提供?next=的 JSON 字段的值添加查询参数。next

于 2020-03-25T23:55:02.263 回答
7
const MdFetch = async (name) => {
  const res = await fetch(
    `https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/${name}`
  );
  return await res.json();
};

常量数据 = 等待 MdFetch('@chawki726');

于 2019-02-26T06:25:58.530 回答
6

使用该 REST 方法,您可以执行以下操作:GET https://api.medium.com/v1/users/{{userId}}/publications这将返回标题、图像和项目的 URL。更多详情:https ://github.com/Medium/medium-api-docs#32-publications 。

您还可以将“?format=json”添加到 Medium 上的任何 URL 的末尾,并获取有用的数据。

于 2016-09-06T21:53:40.343 回答
6

将您的帖子作为 JSON 对象获取

您可以替换您的用户名而不是 @USERNAME。

https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/@USERNAME

于 2019-12-12T15:57:59.020 回答
3

使用这个 url,这个 url 会给出 json 格式的帖子
用你的提要名称替换 studytact

https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/studytact

于 2020-01-06T06:05:14.307 回答
2

如果有人感兴趣,我已经使用 AWS Lambda 和 AWS API Gateway 构建了一个基本功能。详细说明可在此博客文章中找到,使用 Node.js 构建的 Lambda 函数的存储库可在Github上找到。希望这里有人觉得它有用。

于 2017-02-08T21:25:55.313 回答
1

(更新 JS Fiddle 和解释它的 Clay 函数,因为我们更新了函数语法以使其更清晰)

我将下面提到的 Github 包 @mark-fasel 包装到 Clay 微服务中,它使您能够做到这一点:

简化返回格式:https ://www.clay.run/services/nicoslepicos/medium-get-user-posts-new/code

我整理了一个小小提琴,因为用户询问如何使用 HTML 中的端点来获取他们最后 3 个帖子的标题: https ://jsfiddle.net/h405m3ma/3/

您可以将 API 调用为:

curl -i -H "Content-Type: application/json" -X POST -d '{"username":"nicolaerusan"}' https://clay.run/services/nicoslepicos/medium-get-users-posts-simple

您还可以使用 clay-client npm 包在您的节点代码中轻松使用它,只需编写:

Clay.run('nicoslepicos/medium-get-user-posts-new', {"profile":"profileValue"})
.then((result) => {

  // Do what you want with returned result
  console.log(result);

})
.catch((error) => {

  console.log(error);

});

希望这会有所帮助!

于 2017-03-06T21:34:04.753 回答
0

检查这个你会得到关于你自己的帖子的所有信息............

mediumController.getBlogs = (req, res) => {
    parser('https://medium.com/feed/@profileName', function (err, rss) {
        if (err) {
            console.log(err);
        }

        var stories = [];

        for (var i = rss.length - 1; i >= 0; i--) {

            var new_story = {};

            new_story.title = rss[i].title;
            new_story.description = rss[i].description;
            new_story.date = rss[i].date;
            new_story.link = rss[i].link;
            new_story.author = rss[i].author;
            new_story.comments = rss[i].comments;

            stories.push(new_story);
        }
        console.log('stories:');
        console.dir(stories);
        res.json(200, {
            Data: stories
        })
    });

}
于 2017-02-15T08:57:59.660 回答
0

我创建了一个自定义 REST API 来检索 Medium 上给定帖子的统计信息,您只需向我的自定义 API 发送一个 GET 请求,您将检索作为 Json abject 的统计信息,如下所示: 请求:

curl https://endpoint/api/stats?story_url=THE_URL_OF_THE_MEDIUM_STORY

回复:

{
   "claps": 78,
   "comments": 1
}

API 在合理的响应时间(< 2 秒)内响应,您可以在下面的 Medium 文章中找到更多相关信息。

于 2020-12-23T14:11:16.860 回答
0
于 2021-11-26T06:45:51.290 回答