PatNeedham/google-it

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# google-it [![Build Status](https://travis-ci.org/PatNeedham/google-it.svg?branch=master)](https://travis-ci.org/PatNeedham/google-it) [![npm version](https://badge.fury.io/js/google-it.svg)](https://www.npmjs.com/package/google-it) [![Codecov Coverage](https://img.shields.io/codecov/c/github/PatNeedham/google-it/master.svg?style=flat-square)](https://codecov.io/gh/PatNeedham/google-it/) [![Maintainability](https://api.codeclimate.com/v1/badges/fe8329b7641ea86326e4/maintainability)](https://codeclimate.com/github/PatNeedham/google-it/maintainability)

A simple library to convert Google search results to JSON output, with an interactive display option coming in the near future.

## Install

`$ npm install --save -g google-it`

## Example Usage

`$ google-it --query="Latvian unicorn"`

![GIF of google-it](./images/google-it-demo.gif?raw=true "google-it")

Prevent display in the terminal, and save results to a JSON file:

`$ google-it --query="PWAs with react-router and redux" -o results.json -n`

![GIF of google-it w/o display, results saved to file](./images/google-it-output-no-display.gif?raw=true "google-it")

`$ google-it --query="open whisper systems" -O 5`

![GIF of opening-in-browser](./images/open-results-in-browser.gif?raw=true "google-it-to-browser")

`$ google-it --query="mechanical turk" --only-urls`

![Screenshot of only-urls option](./images/onlyUrls.png?raw=true "onlyUrls")

### Command Line Arguments
- [x] *query* - the query that should be sent to the Google search
- [x] *output* - name of the JSON file to save results to
- [x] *no-display* - prevent results from appearing in the terminal output. Should only be used with --output (-o) command when saving results to a file
- [ ] *save* - name of the html file if you want to save the actual response from the html request (useful for debugging purposes)
- [x] *limit* - number of search results to be returned
- [x] *only-urls* - only display the URLs, instead of the titles and snippets
- [ ] *verbose* - console.log useful statements to show what's currently taking place
- [ ] *interactive* - once results are returned, show them in an interactive prompt where user can scroll through them
- [ ] *bold-matching-text* - only takes effect when interactive (-i) flag is set as well, will bold test in results that matched the query
- [x] *includeSites* - option to limit results to comma-separated list of sites
- [x] *excludeSites* - option to exclude results that appear in comma-separated list of sites
- [x] *open* - opens the first X number of results in the browser after finishing query
- [x] *disableConsole* - intended to be used with programmatic use, so that the color-coded search results are not displayed in the terminal (via console.log) when not wanted.

### Programmatic Use in NodeJS environment

- [x] something like:

```js
const  googleIt = require('google-it')

googleIt({'query': 'covfefe irony'}).then(results => {
  // access to results object here
}).catch(e => {
  // any possible errors that might have occurred (like no Internet connection)
})

// with request options
const options = {
  'proxy': 'http://localhost:8118'
};
googleIt({options, 'query': 'covfefe irony'}).then(results => {
  // access to results object here
}).catch(e => {
  // any possible errors that might have occurred (like no Internet connection)
})
```