#!/usr/bin/env node var program = require('commander') , read = require('node-readability') , he = require('he') , pkg = require('../package.json') , clc = require('cli-color'); program .version(pkg.version) .option('-c, --color', 'use colors in terminal') .option('-f, --format [format]', 'set the format for the result (text or html)', '') .parse(process.argv); var styles = {}; styles.h1 = styles.h2 = styles.muted = function(s) { return s; }; if(program.color) { styles.h1 = clc.underline.bold; styles.h2 = clc.bold; styles.muted = clc.white; console.log(clc.reset); } var error = function(msg) { if(msg) console.log(clc.red("Error: ")+msg); console.log(); usage(); process.exit(0); } var usage = function() { console.log("Usage: readability [url]"); console.log(); console.log("E.g.: readability http://techcrunch.com/2014/02/12/marc-andreessen-tech-is-still-recovering-from-a-depression"); console.log(); } if(process.argv.length < 2) return error(); var url = process.argv[2]; if(typeof url!='string' || !url.match(/^https?:\/\//)) return error(url+" is an invalid url"); console.log(url); read(url, function(err, article, meta) { // The title of the page. console.log(); console.log(styles.h1(article.title)); console.log(); // The main body of the page. // console.log(article.content); var content = article.content; if(program.format == 'html') return console.log(content); content = content.replace(/([^<])+<\/h[2-9]>/gi, function(match, header) { return styles.h2(match); }); content = content.replace(/ {2,*}|\t/g,' '); var content = content.replace(/<\/?[^>]+(>|$)/g, ""); content = he.decode(content); console.log(content); // The raw HTML code of the page //console.log(article.html); // The document object of the page //console.log(article.document); });