[Tutorial] How to check if a Steem Post is pending initial payout with Node.jssteemCreated with Sketch.

in #utopian-io7 years ago (edited)

node-js-logo

What you will learn

  • how to initialize a NPM project
  • how to install Steem.js using NPM
  • how to use the steem NPM package to get the content and creation date of a steem post
  • calculate when a steem post will be paid or if it was already paid out

What you require

Any operating system or environment with Node.js and NPM installed.

Your level of experience

Basic: You need to know how to use the command line interface of your OS.

Let's get started!

Open the console, create your prefered project directory and navigate into it.

> mkdir -p ~/Development/steem
> cd ~/Development/steem

Now initialize a NPM project by doing this

> npm init -y

It will basically create a package.json file for you. The -y option will use only defaults and not prompt you for any options.

Okay, now install Steem.js, so we can use it in your script.

> npm install --save steem

This command will install the steem package and any dependencies, if there are any. It will also --save Steem.js as dependency in the package.js project file.

Cool. Let's create the script file using your favorite editor.

> nano pending_payout.js

and put the logic there

var steem = require('steem');

var author   = 'aley',
    permlink = 'tutorial-how-to-install-angular-cli-and-show-steemit-posts-in-an-angular-web-app';

steem.api.getContent(author, permlink, function(err, post) {

  var created_days_ago = Math.ceil(
    (Date.now() - Date.parse(post.created)) / 24 /*hr*/ / 60 /*min*/ / 60 /*sec*/ / 1000 /*msec*/
  );

  console.log('The post: ' + post.title);

  if (created_days_ago < 7) {
    console.log('.. will be paid in ' + (7 - created_days_ago) + ' day(s).');
  } else {
    console.log('.. was paid ' + ((created_days_ago - 7) == 0 ? 'today.' : (created_days_ago - 7) + ' day(s) ago.'));
  }
});

In the first line we include the Steem.js library, so we can use the Steem API further down the script. Then we set the author and permalink of the post we want to check. Now as everything is defined, we can call the getContent method of the steem.api to fetch the post info we need. That's the post creation date, so we can make the math.

var created_days_ago = Math.ceil(
  (Date.now() - Date.parse(post.created)) / 24 /*hr*/ / 60 /*min*/ / 60 /*sec*/ / 1000 /*msec*/
);

Let's break it down. We subtract the current timestamp from the timestamp when the post was created and divide this figure by hours of day, minutes of hour, seconds of minute and milliseconds of second, so we have the difference between now and the creation date in days.

At last we simply check if the post is younger or older than 7 day and that's it :)

steem-pending-payout

Feel free to fetch the snippet as Gist: steem-pending-payout.js

Thanks for reading :)

node.js image by pixabay



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Your contribution cannot be approved because it does not follow the Utopian Rules.

Unfortunately, I have to reject this due to the fact that if someone already gets involved in Javascript development for Steem, there are already tens if not hundreds of tutorials and documentation available. The tutorial you have prepared is a good starter, however is very basic and does not give information on how to use steem-js thoroughly.

What we would love to see on Utopian are tutorials that are somewhat a bit too advanced rather than checking when post is going to be paid out or paid.

Thank you. Feel free to contact me for more information.

You can contact us on Discord.
[utopian-moderator]

@deathwing Thanks for your assessment. If I extend the tutorial to show the votes of a user which are pending payout, would that be sufficient, or is it still to basic?

Hey @deathwing, I just gave you a tip for your hard work on moderation. Upvote this comment to support the utopian moderators and increase your future rewards!

Coin Marketplace

STEEM 0.22
TRX 0.20
JST 0.034
BTC 98934.25
ETH 3347.90
USDT 1.00
SBD 3.08