hacker-news

0.0.1 • Public • Published

HackerNews.js

HackerNews.js scrapes Hacker News (or how its HTML was rendered on 5/6/13) for data and exposes it in a Node.js module. This tries to be API compatible with the iHackerNews API, except for two cases: we do not return cachedOnUTC, and the newComments and commentThreads endpoint.

If there's enough demand, I'll add the cachedOnUTC thing, although I'll expose it in the

This module is exposed in a REST API in another Node.js module which is yet to be written. Expect it soon.

Usage

npm install hacker-news

Insert it into your app using:

var hackernews = require('hacker-news')

Use it!

var frontPage = hackernews.news(callback)	

Warning

Hacker News will block your IP if you query their server too much. I'm not quite sure their rate limits (and will update this as I find out), but it may be ~30 seconds. Most pages seem to be regenerated once in a while, anyways, so it shouldn't be a big deal.

API Endpoints

news

Parameters: [nextid, callback]

Lists the front page news articles in the format:

{
	nextId: 'id for next page of links'
	items: [{
		title: 'HackerNews.js',
		url: 'URL of article or item?id=selfpostid',
		postedBy: 'EdJiang',
		postedAgo: '1 day ago',
		points: 123,
		id: 1234567,
		commentCount: 32
		}...]
}

byUsername

Parameters: username, [nextid, callback]

Lists a user's submitted articles in the format:

{
	nextId: 'id for next page of links'
	items: [{
		title: 'HackerNews.js',
		url: 'URL of article or item?id=selfpostid',
		postedBy: 'EdJiang',
		postedAgo: '1 day ago',
		points: 123,
		id: 1234567,
		commentCount: 32
		}...]
}

new

Parameters: [nextid, callback]

Lists newly submited articles articles in the format:

{
	nextId: 'id for next page of links'
	items: [{
		title: 'HackerNews.js',
		url: 'URL of article or item?id=selfpostid',
		postedBy: 'EdJiang',
		postedAgo: '1 day ago',
		points: 123,
		id: 1234567,
		commentCount: 32
		}...]
}

newComments

Parameters: [nextid, callback]

Endpoint differs from the iHackerNews API by adding a object wrapper with nextId info

Lists newly submitted comments in the format:

{
	nextId: 'id for next page of links'
	items: [{
		comment: 'This is awesome!',
		id: 1234567,
		parentID: 1234567,
		points: 0, //Note: HN doesn't show comment score, so this is always zero
		postedAgo: '2 hours ago',
		postedBy: 'pg', 
		postId: 12345678
		}...]
}

ask

Parameters: [nextid, callback]

Lists the Ask HN articles in the format:

{
	nextId: 'id for next page of links'
	items: [{
		title: 'HackerNews.js'
		url: 'URL of article or item?id=selfpostid'
		postedBy: 'EdJiang'
		postedAgo: '1 day ago'
		points: 123
		id: 1234567
		commentCount: 32
		}...]
}

post

Parameters: postId, [callback]

Lists information about a post in the format:

{
	title: 'HackerNews.js'
	url: 'URL of article or item?id=selfpostid'
	postedBy: 'EdJiang'
	postedAgo: '1 day ago'
	points: 123
	id: 1234567
	commentCount: 32
	text: 'This is only used for Ask HN or other self posts, otherwise will be an empty string!'
	comments: [{
		children: [...] 
		comment: 'This is awesome!',
		id: 1234567,
		parentID: 1234567,
		points: 0, //Note: HN doesn't show comment score, so this is always zero
		postedAgo: '2 hours ago',
		postedBy: 'pg', 
		postId: 12345678
	}...]
}

threads

Parameters: userId, [callback]

Lists a user's comments and replies in a threaded format:

{
	nextId: 'id for next page of links'
	comments: [{
		children: [...] 
		comment: 'This is awesome!',
		id: 1234567,
		parentID: 1234567,
		points: 0, //Note: HN doesn't show comment score, so this is always zero
		postedAgo: '2 hours ago',
		postedBy: 'pg', 
		postId: 12345678
	}...]
}

Profile

Parameters: userId, [callback]

Lists a user's profile information:

{
	about: 'I am Edward',
	createdAgo:'2 years ago',
	karma: '9001',
	username: 'EdJiang'
}

Readme

Keywords

none

Package Sidebar

Install

npm i hacker-news

Weekly Downloads

1

Version

0.0.1

License

MIT

Last publish

Collaborators

  • edjiang