Another copy of my dotfiles. Because I don't completely trust GitHub.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
1.8 KiB

#!/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]>([^<])+<\/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);
});