Simple Rest API to retrieve medium stats of a user's stories.

Overview

Advanced Medium API

Advanced Medium API

Contents

1. Overview

Advanced Medium API is a JSON-based API. All requests are made to endpoints beginning (base URL): https://advanced-medium-api.herokuapp.com/ .All requests must be secure, i.e. https, not http. This API aims to retrieve the missing parts of Medium's Rss feed. All the requests are GET Requests.

2. API Details

Users could be able to get 5 types of responses from this API.

2.1 Medium feed in JSON

end point: /medium/user/{userId}

Medium gives public access to get RSS feed for the last 10 medium posts. This end point gives the direct JSON conversion of that RSS Feed.

Sample JSON

description for the feed object's key values

Key Description
url URL of Medium profile
title Title of your feed
link Hyperlink to the feed profile
author Empty string
description Phrase or sentence describing the feed
image Medium profile image

description for the array of items object's key values

Key Description
title Title of the Medium post
pubDate Published date of the Medium post
link Hyperlink of the Medium post
guid Hyperlink of the Medium post which contains Unique Id of the post
author Medium display name of the user
thumbnail Thumbnail of the Medium post
description The medium post synopsis
content The content of the Medium post
enclosure Empty string
categories Tags of the Medium post

2.2 Medium Advanced Data

end point: /advanced/user/{userId}

This endpoint return the response which contains the above Medium feed in JSON and moreover it contains the missing part of the Medium feed such as clapCount, voterCount, responseCount, readingTime.

Sample JSON

description for missing part of Medium object's key values

Key Description
clapCount Number of Claps for the Medium post
voterCount Number of voters clap for the Medium post
responseCount Number of response for the post
readingTime Reading Time for the Medium post

2.3 Medium Customized Data

end point: /customized/user/{userId}

This endpoint return the response which is the customized version of the JSON conversion of the Medium's RSS Feed. Order the Medium post's tags according to their use count among the latest 10 posts and the tagOrder return that tags' order rank. Medium's latest 10 posts were divide by 3 and every 3 posts pushed in an array and those arrays pushed in one array.

Sample JSON

description for customized Medium object's key values

Key Description
author Medium display name of the user
avatar Medium profile image
content The content of the Medium post
link Hyperlink of the Medium post which contains Unique Id of the post
postImage Thumbnail of the Medium post
profileLink Hyperlink to the Medium profile
pubDate Published date of the Medium post
tag Most suitable tag for the Medium post among other tags of a Medium post
tagOrder tags' order rank
title Title of the Medium post

2.4 Medium Customized Advanced Data

end point: /advanced/customized/user/{userId}

This endpoint return the response which contains the above customized Medium feed in JSON and moreover it contains the missing part of the Medium feed such as clapCount, voterCount, responseCount, readingTime.

Sample JSON

2.5 Missing data of particular post.

end point: /medium/post/{postId}

User could able to get only the missing part (clapCount, voterCount, responseCount, readingTime) of Medium feed.

Sample JSON

3. Built with

  • express - A minimal and flexible Node.js web application framework
  • cors - Allows users to relax the security applied to an API
  • cheerio - Tool for parsing HTML and XML in Node. js
  • Axios - Promise based HTTP client
  • request - Simplest way possible to make http calls

4. Installation

To setup the app for development on your local machine, please follow the instructions below:

  1. Clone the repo to your machine

    git clone https://github.com/sabesansathananthan/advanced-medium-api.git
    cd advanced-medium-api
  2. Install packages

    npm install
  3. Run the development server

    node index.js
  4. Visit http://localhost:9002

5. Live Demo

Don't forget to give a star for this repo 🙂

6. License

This project is licensed under the MIT License - see the LICENSE file for details

Comments
  • docs: updateReadME 2.5

    docs: updateReadME 2.5

    Advanced Medium API

    GitHub Flow PR Image

    Thank you so much for opening a pull request! :smiley:

    Please provide the following information where possible to help the pull request reviewer merge your PR quicker!

    Relevant Project Issue Numbers :hash:

    Add any related issue numbers from the GitHub project. Append the # symbol before issue numbers.

    e.g. #58

    Involved Project Members :bust_in_silhouette:

    Tag any GitHub usernames involved or directly responsible for reviewing the proposed changes. Append the @ symbol before usernames.

    e.g @Charlotteis

    An Explanation of Your Changes :speech_balloon:

    Your explanation goes here!

    Any Screenshots of Your Changes :camera:

    Your screenshots go here! Use Markdown Syntax to embed images.

    opened by sabesansathananthan 0
  • feat: reterive stats for a story

    feat: reterive stats for a story

    Advanced Medium API

    GitHub Flow PR Image

    Thank you so much for opening a pull request! :smiley:

    Please provide the following information where possible to help the pull request reviewer merge your PR quicker!

    Relevant Project Issue Numbers :hash:

    Add any related issue numbers from the GitHub project. Append the # symbol before issue numbers.

    N/A

    Involved Project Members :bust_in_silhouette:

    Tag any GitHub usernames involved or directly responsible for reviewing the proposed changes. Append the @ symbol before usernames.

    @sabesansathananthan

    An Explanation of Your Changes :speech_balloon:

    Created an end point to retrieve medium stats by giving post ID

    Any Screenshots of Your Changes :camera:

    Screenshot from 2022-04-27 10-36-18

    opened by sabesansathananthan 0
  • align logo

    align logo

    Advanced Medium API

    GitHub Flow PR Image

    Thank you so much for opening a pull request! :smiley:

    Please provide the following information where possible to help the pull request reviewer merge your PR quicker!

    Relevant Project Issue Numbers :hash:

    Add any related issue numbers from the GitHub project. Append the # symbol before issue numbers.

    e.g. #58

    Involved Project Members :bust_in_silhouette:

    Tag any GitHub usernames involved or directly responsible for reviewing the proposed changes. Append the @ symbol before usernames.

    e.g @Charlotteis

    An Explanation of Your Changes :speech_balloon:

    Your explanation goes here!

    Any Screenshots of Your Changes :camera:

    Your screenshots go here! Use Markdown Syntax to embed images.

    opened by sabesansathananthan 0
  • Merge pull request #7 from sabesansathananthan/develop

    Merge pull request #7 from sabesansathananthan/develop

    Develop

    Advanced Medium API

    GitHub Flow PR Image

    Thank you so much for opening a pull request! :smiley:

    Please provide the following information where possible to help the pull request reviewer merge your PR quicker!

    Relevant Project Issue Numbers :hash:

    Add any related issue numbers from the GitHub project. Append the # symbol before issue numbers.

    e.g. #58

    Involved Project Members :bust_in_silhouette:

    Tag any GitHub usernames involved or directly responsible for reviewing the proposed changes. Append the @ symbol before usernames.

    e.g @Charlotteis

    An Explanation of Your Changes :speech_balloon:

    Your explanation goes here!

    Any Screenshots of Your Changes :camera:

    Your screenshots go here! Use Markdown Syntax to embed images.

    opened by sabesansathananthan 0
  • Develop

    Develop

    Advanced Medium API

    GitHub Flow PR Image

    Thank you so much for opening a pull request! :smiley:

    Please provide the following information where possible to help the pull request reviewer merge your PR quicker!

    Relevant Project Issue Numbers :hash:

    Add any related issue numbers from the GitHub project. Append the # symbol before issue numbers.

    e.g. #58

    Involved Project Members :bust_in_silhouette:

    Tag any GitHub usernames involved or directly responsible for reviewing the proposed changes. Append the @ symbol before usernames.

    e.g @Charlotteis

    An Explanation of Your Changes :speech_balloon:

    Your explanation goes here!

    Any Screenshots of Your Changes :camera:

    Your screenshots go here! Use Markdown Syntax to embed images.

    opened by sabesansathananthan 0
  • feat: add Logo

    feat: add Logo

    Advanced Medium API

    GitHub Flow PR Image

    Thank you so much for opening a pull request! :smiley:

    Please provide the following information where possible to help the pull request reviewer merge your PR quicker!

    Relevant Project Issue Numbers :hash:

    Add any related issue numbers from the GitHub project. Append the # symbol before issue numbers.

    N/A

    Involved Project Members :bust_in_silhouette:

    Tag any GitHub usernames involved or directly responsible for reviewing the proposed changes. Append the @ symbol before usernames.

    @sabesansathananthan

    An Explanation of Your Changes :speech_balloon:

    API Logo Added

    Any Screenshots of Your Changes :camera:

    Logo

    opened by sabesansathananthan 0
  • feat: healthChecker

    feat: healthChecker

    Advanced Medium API

    GitHub Flow PR Image

    Thank you so much for opening a pull request! :smiley:

    Please provide the following information where possible to help the pull request reviewer merge your PR quicker!

    Relevant Project Issue Numbers :hash:

    Add any related issue numbers from the GitHub project. Append the # symbol before issue numbers.

    No

    Involved Project Members :bust_in_silhouette:

    Tag any GitHub usernames involved or directly responsible for reviewing the proposed changes. Append the @ symbol before usernames.

    @sabesansathananthan

    An Explanation of Your Changes :speech_balloon:

    Add health checker end point

    Any Screenshots of Your Changes :camera:

    Screenshot from 2022-04-26 18-00-36

    opened by sabesansathananthan 0
  • reduce the response time

    reduce the response time

    The below end points takes more response time. As a developer, you need to reduce the response time and retrieve the response in a reasonable response time.

    end points: /advanced/user/{userId}, /advanced/customized/user/{userId}.

    enhancement help wanted good first issue 
    opened by sabesansathananthan 0
Owner
Sathananthan Sabesan
Software Engineer @syscolabs, Undergraduate of Computer Science and Engineering at University of Moratuwa.
Sathananthan Sabesan
This is a vanilla Node.js rest API created to show that it is possible to create a rest API using only vanilla Node.js

This is a vanilla Node.js rest API created to show that it is possible to create a rest API using only vanilla Node.js. But in most cases, I would recommend you to use something like Express in a production project for productivity purposes.

Eduardo Dantas 7 Jul 19, 2022
From the Linux Foundation office in New York City, welcome to The Untold Stories of Open Source

From the Linux Foundation office in New York City, welcome to The Untold Stories of Open Source. Each week we explore the people who are supporting Open Source projects, how they became involved with it, and the problems they faced along the way.

The Linux Foundation 77 Jan 5, 2023
Twine, a tool for telling interactive, nonlinear stories

twinejs by Chris Klimas, Leon Arnott, Daithi O Crualaoich, Ingrid Cheung, Thomas Michael Edwards, Micah Fitch, Juhana Leinonen, Michael Savich, and Ro

Chris Klimas 1.3k Jan 4, 2023
Create beautiful interactive stories using Sutori formtted XML.

Sutori Studio An IDE for creating beautiful interactive stories powered by sutori-js. This project is still in an early state, and has a number of kno

Sutori Project 4 Jul 4, 2022
The Open Stories format.

Open Stories Open Stories is a syndication format for distributing stories to friends and families. Stories are small pieces of media – such as images

ddddddddʣzzz 82 Dec 23, 2022
This project is a web app that uses the TVmaze API to retrieve data and display a list of items on the screen.

This project is a web app that uses the TVmaze API to retrieve data and display a list of items on the screen. It also enables people to like and comment on the broadcast. JavaScript, API, Bootstrap, HTML, and CSS3 were used to create this site.

Mihreteab Misganaw 2 Jan 10, 2022
A pure JavaScript Web Page to retrieve real-time OTP through a web page and generate/scan QR codes.

2FA-Solver A pure JavaScript Web Page to retrieve real-time OTP through a web page and generate/scan QR codes. It can be used as an offline web page b

Yuthan K 8 Dec 7, 2022
An event-driven architecture wrapper for Wechaty that applies the CQS principle by using separate Query and Command messages to retrieve and modify the bot state, respectively.

CQRS Wechaty An event-driven architecture wrapper for Wechaty that applies the CQS principle by using separate Query and Command messages to retrieve

Wechaty 3 Mar 23, 2022
Firebase Storage with Angular 14 example: Upload File, Retrieve, Display, Download Url & Delete using @angular/fire AngularFireStorage

Angular 14 File Upload to Firebase Storage example I will show you how to make Angular 14 Firebase Storage: File Upload/Display/Delete Application usi

null 7 Sep 7, 2022
Angular 14 Firebase CRUD with Realtime Database - AngularFireDatabase Object and List example: create, retrieve, update, delete

Angular 14 Firebase CRUD example with Realtime DataBase | AngularFireDatabase Build Angular 14 CRUD example with Firebase Realtime Database that uses

null 7 Dec 26, 2022
A Javascript library that discourages and prevents image theft/download by preventing client ability to retrieve the image.

ProtectImage.js ProtectImage.js is a Javascript library that helps prevent image theft by disabling traditional user interactions to download/copy ima

null 4 Aug 18, 2022
Competidaily Generator lambda function to retrieve a random theme from our database.

Competidaily Generator backend - GET RANDOM THEME This repo contains the GET requisition used as a lambda function to retrieve a random theme from the

Thiago Fernandes 5 Dec 17, 2022
Retrieve paper citatation data from doi.org and Semantic Scholar.

citation-query Retrieve paper citatation data from doi.org and Semantic Scholar. Install Requires at least Node.js v14.14.0. npm install @uwdata/citat

UW Interactive Data Lab 6 Sep 30, 2022
Read Medium content without limit!

Medium Unlocker Read Medium content without limit! Aka replacer for Medium Unlimited. Get more information Please visit Wiki page Features Unlock grap

und3fined 303 Dec 24, 2022
Medium-Clone with Next.JS, Typescript, Tailwindcss, and Sanity!!

Medium Clone ?? Overview /pages ✔️ pages/index.tsx = Homepage and list all Blogs ✔️ pages/post/[slug].tsx = Details Blog /pages/api ✔️ pages/api/creat

argikurnia 23 Nov 16, 2022
Medium.com (Redesign with Next.js & Tailwindcss)

Medium.com (Redesign with Next.js & Tailwindcss) It is a redesign of the popular blogging website Medium.com. It is designed with React and Tailwindcs

Kazem Mirzaei 4 Jun 11, 2022
A progressive image loading library. Inspired by Medium’s similar technique.

Blurry Image Load Synopsis A lightweight, zero-dependency library that loads images on demand. Until the images are loaded, a very small version of ea

Dominic Brant 32 Dec 10, 2022