Index

Description

NRAW.js simplifies the use of Reddit's API with an easy-to-use chainable functions.

How to

Start by installing NRAW.js:

$ npm install nraw

Then require it in your server:

var r = require ( " nraw " ) ;

Now, make a new instance of the r -object, which you can do by providing a User-agent.

var Reddit = new r ( " Testbot v0.0.1 by Mobilpadde " ) ;

Or you can fill in three parameters, which are a user-agent, a cookie and the modhash of a Reddit user:

var Reddit = new r ( " Testbot v0.0.1 by Mobilpadde " , cookie , modhash ) ;

Execute requests

Executing requests can be done in two ways:

Reddit . user ( " Mobilpadde " ) . exec ( function ( data ) { } )

Or

Reddit . user ( " Mobilpadde " , function ( data ) { } )

In the examples below, the first method will be applied.

User

Get the 25 latest posts (Links, self-posts or comments) of a given user:

Reddit . user ( " Mobilpadde " ) . exec ( function ( data ) { } )

"That's stupid! Who'd ever need the latest 25 posts of a user?", you say? Well, NRAW.js is smart enough to handle queries too!

Let's make a basic request that gets the top five posts (Links, self-posts and comments) of a user:

Reddit . user ( " Mobilpadde " ) . sort ( " top " ) . limit ( 5 ) . exec ( function ( data ) { } )

Pretty cool, 'eh?

"But what if I want to see seven of my liked posts and comments?" - That's super easy too! Simply use the login -function and the liked -filter:

Reddit . login ( user , pass ) . user ( " Mobilpadde " ) . liked ( ) . limit ( 7 ) . exec ( function ( data ) { } )

Subreddit

Get the 25 latest posts (Links and self-posts) of a given subreddit:

Reddit . subreddit ( " CatReactionGifs " ) . exec ( function ( data ) { } )

"That's not useful at all! I hate you" - You. Well, like last time, we have queries that can be applied, but wait! There's more! Subreddits even have the ability to be filtered!

Let's make a request of the 25 most controversial posts from the last year from a given subreddit, but only the ones after the post with the id t3_2k0r3o :

Reddit . subreddit ( " CatReactionGifs " ) . controversial ( ) . after ( " t3_2k0r3o " ) . exec ( function ( data ) { } )

Or how about we make a request, that finds the 42 top comments of a given subreddit, using the filter comments :

Reddit . subreddit ( " CatReactionGifs " ) . comments ( ) . top ( ) . limit ( 42 ) . exec ( function ( data ) { } )

"Can I get a single post if I know its id?" - Easy peasy!

Reddit . subreddit ( " CatReactionGifs " ) . post ( " 2zmdf9 " ) . exec ( function ( data ) { } )

"Whoa, that's pretty awesome, but can I post a link?" - Of course you can! We just need to login and use the post -function:

Reddit . login ( user , pass ) . subreddit ( " CatReactionGifs " ) . post ( ) . link ( " How I feel when there's only one pizza slice left " , " http://i.imgur.com/CFSwHdq.gif " ) . exec ( function ( data ) { } )

"Wow! C-c-can I subscribe to subreddits then?" - Yea you can! Though we'll have to get our hands a bit dirty:

Reddit . subreddit ( " CatReactionGifs " , function ( info ) { Reddit . login ( user , pass ) . subreddit ( info . data . children [ 0 ] . data . subreddit_id ) . subscribe ( function ( data ) { } ) } )

"Awesome! But what if I don't like a subreddit anymore?" - Well, that's a bit tougher! Ha! Gotcha! You should've seen your face! Priceless! Don't worry, it's super easy too:

Reddit . subreddit ( " DogReactionGifs " , function ( info ) { Reddit . login ( user , pass ) . subreddit ( info . data . children [ 0 ] . data . subreddit_id ) . unsubscribe ( function ( data ) { } ) } )

We can even search through a subreddit:

Reddit . subreddit ( " CatReactionGifs " ) . search ( " Cat " ) . exec ( function ( data ) { } )

"What if I want a random thread from a given subreddit?" - Pure easiness! Simply do:

Reddit . subreddit ( " cats " ) . random ( ) . exec ( function ( data ) { } )

Multireddits

You can also get multireddits:

Reddit . user ( " Mobilpadde " ) . multireddit ( " kittehs " ) . exec ( function ( data ) { } )

Comments

How about we play around with some comments for a while?

Let's get all the new comments (Login so we don't have to wait 30 seconds before we can request new comments):

Reddit . login ( user , pass ) . comments ( ) . exec ( function ( data ) { } )

"Well, now for a tough one! Can I post comments?" - Yes! Yes you can! All you need is an id of the parent (In this case we're gonna use t3_31cvo9 ):

Reddit . login ( user , pass ) . post ( ) . comment ( " t3_31cvo9 " , " I love you! " ) . exec ( function ( data ) { } )

"What if I want to see a specific comment and I have its id?" - Well, that's super easy like everything else:

Reddit . subreddit ( " CatReactionGifs " ) . post ( " 2zmdf9 " ) . comment ( " cpkmvc4 " ) . exec ( function ( data ) { } )

"I want to delete my comment, please help!" - Alrighty! It's as easy as pie:

Reddit . login ( user , pass ) . comment ( " t1_cq0ev3j " ) . delete ( ) . exec ( function ( data ) { } )

Posts

You can also delete a post if you misspelled something:

Reddit . login ( user , pass ) . post ( " t3_31cvo9 " ) . delete ( ) . exec ( function ( data ) { } )

"But I want the related posts of a post to which I know the id" - That's even easier! Take a look at this:

Reddit . post ( " 2v5oi5 " ) . related ( ) . exec ( function ( data ) { } )

Voting

Upvoting:

Reddit . login ( user , pass ) . post ( " t3_2v5oi5 " ) . upvote ( ) . exec ( function ( data ) { } )

Unvoting:

Reddit . login ( user , pass ) . post ( " t3_2v5oi5 " ) . unvote ( ) . exec ( function ( data ) { } )

Downvoting:

Reddit . login ( user , pass ) . post ( " t3_2v5oi5 " ) . downvote ( ) . exec ( function ( data ) { } )

Ps. add .comment("t1_coestfz") , if you want to vote on a comment instead of a post.

Searching

You can also search for every thread - in every subreddit - containing the word cat :

Reddit . search ( " cat " ) . exec ( function ( data ) { } )

Random

How 'bout getting a random thread, you say?

Reddit . random ( ) . exec ( function ( data ) { } )

Queries

after - postId

before - postId

count - 1- 100

limit - 1 - 100

from - "hour", "week", "month", "year", "all"

sort - "hot", "top", "new", "controversial"

Filters (User)

comments

disliked

hidden

liked

overview

saved

submitted

Filters (Subreddit)

comments

controversial

hot

gilded

new

promoted

rising

top

Top