The Medium RSS Feed’s Lacking Half | by Sabesan Sathananthan | Geek Tradition

    0
    57


    retrieves the stats (clapCount, voterCount, responseCount, and readingTime) of Medium posts

    Photograph by Ryoji Iwata on Unsplash

    On this article, I’ll clarify the best way to retrieve the stats ( claps depend, voter depend, response depend, and studying time) of Medium feed posts utilizing a REST API, the shortage of this function within the Medium RSS feed is what motivated me to create this superior Medium API. That is my forty first Medium article.

    I needed to acquire the stats ( claps depend, voter depend, response depend, and studying time) of my Medium posts whereas engaged on my private web site improvement. 2 years earlier than once I implement the medium widget to my web site I discovered Pixelpoint.io which generated a widget with clap counts of a medium put up. At that second I puzzled how they carried out it? Then I neglect to analysis it however final month I discovered that pixelpoint.io’s widget will not be working. I regarded in all places for an answer to my wants however couldn’t discover one, so I had no alternative however to code it myself.

    My preliminary instinct was to take a look at the RSS feed however there have been no such particulars are offered then I regarded on the official documentation of the general public REST API by Medium, and nothing was there both. The Medium REST API solely lets you create a Medium article by HTTP POST methodology(cf part 3.3). You’ll be able to’t retrieve or edit a Medium article by utilizing the Medium API 😔.

    With the intention to get an understanding of how the helpful stats are retrieved within the Medium put up, I began to examine the Medium utilizing browser developer instruments. Shockingly, there was no request to acquire the stats amongst all of the XHR calls, which push me to take a look at the HTML response of the Medium put up.

    Inspecting a Medium put up web page.
    curl https://medium.com/p/unique_Id_of_the_post >> put up.html

    As a javascript variable, the claps depend, voter depend, response depend, and studying time are immediately injected into the HTML response. You’ll be able to confirm that by typing console.log(window.__APOLLO_STATE__); within the Javascript console of the Submit web page.

    window.__APOLLO_STATE__ object

    Then I scrape these helpful stats utilizing request and cheerio .

    Photograph by Kike Salazar N on Unsplash

    In a medium put up, information comes as JSON in a script tag. Through the use of javascript, these information are picked up and rendered in DOM on the browser-side. Normally, information in a script tag takes this way:

    Then I scrape Medium put up information with no headless browser.

    First, I get the web site and search for errors. Then I confirmed whether or not the physique exists, and cargo the physique utilizing cheerio in $ . In attempt block, all of the tag script contents are mapped in an array. Then discover the factor which incorporates window.__APOLLO_STATE__ , substitute the task window.__APOLLO_STATE__ = with an empty string. I substitute the /"/g with ‘"’ and parse with JSON.parse . Lastly, get the suitable values from the JSON.

    Some great benefits of this method over headless browsers are tremendous quick and takes manner much less processing and assets.

    You might ready to make use of the Superior Medium API that I developed as follows:

    There are 5 kinds of requests. you would have the ability to get all of the responses by utilizing HTTP GETmethodology.

    Medium feed in JSON

    You might capable of get the RSS feed of the final 10 Medium posts by utilizing the next hyperlinks (substitute your username as an alternative of @username ).

    medium.com/feed/@username 
    or
    username.medium.com/feed

    The next request of the API offers the direct JSON conversion of that RSS Feed.

    curl https://advanced-medium-api.herokuapp.com/medium/person/{userId}

    Medium Superior Knowledge

    You might capable of get the Medium feed in JSON with the lacking a part of the Medium feed similar to clapCount, voterCount, responseCount, readingTime. every lacking information injected in each put up(objects) object.

    The next request of the API offers the JSON conversion of the RSS feed with the injection of lacking information.

    curl https://advanced-medium-api.herokuapp.com/superior/person/{userId}

    Medium Custom-made Knowledge

    JSON conversion of the Medium RSS feed is personalized in keeping with the classes. Order the Medium put up’s tags in keeping with their use depend among the many newest 10 posts and the tagOrder return that tags’ order rank. Medium’s newest 10 posts had been divided by 3 and each 3 posts had been pushed in an array and people arrays had been pushed in a single array. There’s an algorithm that returns probably the most appropriate tag for the Medium put up among the many different tags of that Medium put up.

    The next request of the API offers the personalized model of the Medium feed in JSON

    curl https://advanced-medium-api.herokuapp.com/personalized/person/{userId}

    Medium Custom-made Superior Knowledge

    This response comprises the Medium personalized information with the injection of lacking stats similar to clapCount, voterCount, responseCount, readingTime.

    The next request of the API offers the personalized model of the Medium feed in JSON with the lacking a part of the Medium feed.

    curl https://advanced-medium-api.herokuapp.com/superior/personalized/person/{userId}

    Lacking information of a specific put up.

    This response comprises solely the lacking half (clapCount, voterCount, responseCount, readingTime) of Medium feed for a specific Medium put up.

    Request 💻 ➡ 🌎 :

    curl https://advanced-medium-api.herokuapp.com/medium/put up/{postId}

    Response 🌎➡💻 :

    {
    "clapCount": 98,
    "responseCount": 4,
    "voterCount": 12,
    "readingTime": 4
    }

    This API is Open Supply and I welcome your contributions. final 2 years I used the medium widget from Pixelpoint.io which generated a widget with clap counts of a medium put up. I didn’t do analysis to get the lacking a part of the Medium feed once I used Pixelpoint.io. however 2 months earlier than Pixelpoint.io will not be working and this incident impacts my private web site. Due to this fact I pushed myself and created this API.

    LEAVE A REPLY

    Please enter your comment!
    Please enter your name here