web-dev-qa-db-ja.com

APIからユーザーのミディアムストーリーを取得する方法は?

投稿画像と元のMedium出版物へのリンクが記載されたカードを表示することで、Mediumブログをアプリに統合しようとしています。

Medium APIドキュメントから、パブリケーションを取得して投稿を作成する方法を確認できますが、投稿の取得については言及していません。現在、MediumのAPIを使用して、ユーザーの投稿/ストーリーを取得できますか?

18
Tomas Romero

APIは書き込み専用であり、投稿を取得するためのものではありません(中程度のスタッフが私に言った)

RSSフィードを次のように単純に使用できます。

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

GETでRSSフィードを取得するだけで、JSON形式で必要な場合は、 rss-to-json のようなNPMモジュールを使用するだけで準備完了です。

36
Antonio Brandao

JavaScript、jQuery、Angularなどを使用してクライアント側から取得する場合は、フィードを提供するAPIゲートウェイまたはWebサービスを構築する必要があります。 PHP、RoR、またはそうではないサーバーサイドの場合。

以下に示すように、JSON形式で直接取得できます。

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

私の場合、エクスプレスアプリで簡単なWebサービスを作成し、Herokuでホストしました。 Reactアプリは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);
    }
  });
});
8
Hardik Pithva

RESTメソッドを使用すると、これを実行できます:GET https://api.medium.com/v1/users/{{userId}}/publicationsそして、これはタイトル、画像、アイテムのURLを返します。詳細: https://github.com/Medium/medium-api-docs#32-publications .

MediumのURLの末尾に「?format = json」を追加して、有用なデータを取得することもできます。

5
Casper Voogt
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();
};

const data = await MdFetch( '@ chawki726');

2
Chawki

興味のある方は、AWS LambdaとAWS API Gatewayを使用して基本的な機能を構築しました。詳細な説明は このブログ投稿 にあり、Node.jsで構築されたLambda関数のリポジトリは Github にあります。うまくいけば、ここの誰かがそれを役に立つと思う。

2
Mark Fasel

(JS Fiddleおよび関数の構文をよりクリーンにするためにそれを説明するClay関数の更新)

Githubパッケージ@ mark-faselを以下で言及しているClayマイクロサービスにラップして、これを正確に実行できるようにしました。

簡略化された戻り形式: https://www.clay.run/services/nicoslepicos/medium-get-user-posts-new/code

ユーザーが最後の3つの投稿のタイトルを取得するためにHTMLでエンドポイントを使用する方法を尋ねていたので、ちょっとした工夫をしました。 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);

});

お役に立てば幸いです!

1
nicoslepicos

このチェックボックスをオンにすると、自分の投稿に関するすべての情報が表示されます........

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
        })
    });

}
0
Yash