google-it
Advanced tools
Comparing version 1.4.3 to 1.5.0
@@ -39,2 +39,4 @@ "use strict"; | ||
getSnippetSelector = _require2.getSnippetSelector, | ||
getResultStatsSelector = _require2.getResultStatsSelector, | ||
getResultCursorSelector = _require2.getResultCursorSelector, | ||
logIt = _require2.logIt, | ||
@@ -96,3 +98,5 @@ saveToFile = _require2.saveToFile, | ||
linkSelector = _ref.linkSelector, | ||
snippetSelector = _ref.snippetSelector; | ||
snippetSelector = _ref.snippetSelector, | ||
resultStatsSelector = _ref.resultStatsSelector, | ||
cursorSelector = _ref.cursorSelector; | ||
var $ = cheerio.load(data); | ||
@@ -139,3 +143,16 @@ var results = []; | ||
return results; | ||
var resultStats = $(getResultStatsSelector(resultStatsSelector)).html() || ''; | ||
var approximateResults = ((resultStats.split(' results') || [''])[0].split('About ')[1] || '').replace(',', ''); | ||
var seconds = parseFloat((resultStats.split(' (')[1] || '').split(' seconds')[0]); | ||
var cursor = $(getResultCursorSelector(cursorSelector)).html() || ''; | ||
var page = parseInt(cursor.split('</span>')[1], 10); | ||
var stats = { | ||
page: page, | ||
approximateResults: approximateResults, | ||
seconds: seconds | ||
}; | ||
return { | ||
results: results, | ||
stats: stats | ||
}; | ||
} | ||
@@ -145,2 +162,3 @@ | ||
var filePath = _ref2.fromFile, | ||
fromString = _ref2.fromString, | ||
options = _ref2.options, | ||
@@ -152,2 +170,3 @@ htmlFileOutputPath = _ref2.htmlFileOutputPath, | ||
start = _ref2.start; | ||
// eslint-disable-next-line consistent-return | ||
return new Promise(function (resolve, reject) { | ||
@@ -160,23 +179,29 @@ if (filePath) { | ||
return resolve(data); | ||
return resolve({ | ||
body: data | ||
}); | ||
}); | ||
} else { | ||
var defaultOptions = getDefaultRequestOptions({ | ||
limit: limit, | ||
query: query, | ||
userAgent: userAgent, | ||
start: start | ||
} else if (fromString) { | ||
return resolve({ | ||
body: fromString | ||
}); | ||
request(_objectSpread({}, defaultOptions, {}, options), function (error, response, body) { | ||
if (error) { | ||
reject(new Error("Error making web request: ".concat(error))); | ||
} | ||
} | ||
saveResponse(response, htmlFileOutputPath); | ||
resolve({ | ||
body: body, | ||
response: response | ||
}); | ||
var defaultOptions = getDefaultRequestOptions({ | ||
limit: limit, | ||
query: query, | ||
userAgent: userAgent, | ||
start: start | ||
}); | ||
request(_objectSpread({}, defaultOptions, {}, options), function (error, response, body) { | ||
if (error) { | ||
return reject(new Error("Error making web request: ".concat(error))); | ||
} | ||
saveResponse(response, htmlFileOutputPath); | ||
return resolve({ | ||
body: body, | ||
response: response | ||
}); | ||
} | ||
}); | ||
}); | ||
@@ -192,2 +217,4 @@ } | ||
snippetSelector = config.snippetSelector, | ||
resultStatsSelector = config.resultStatsSelector, | ||
cursorSelector = config.cursorSelector, | ||
start = config.start, | ||
@@ -199,3 +226,4 @@ diagnostics = config.diagnostics; | ||
response = _ref3.response; | ||
var results = getResults({ | ||
var _getResults = getResults({ | ||
data: body, | ||
@@ -208,4 +236,9 @@ noDisplay: config['no-display'], | ||
snippetSelector: snippetSelector, | ||
resultStatsSelector: resultStatsSelector, | ||
cursorSelector: cursorSelector, | ||
start: start | ||
}); | ||
}), | ||
results = _getResults.results, | ||
stats = _getResults.stats; | ||
var statusCode = response.statusCode; | ||
@@ -224,3 +257,4 @@ | ||
body: body, | ||
response: response | ||
response: response, | ||
stats: stats | ||
}); | ||
@@ -227,0 +261,0 @@ } |
@@ -9,3 +9,5 @@ "use strict"; | ||
GOOGLE_IT_LINK_SELECTOR = _process$env.GOOGLE_IT_LINK_SELECTOR, | ||
GOOGLE_IT_SNIPPET_SELECTOR = _process$env.GOOGLE_IT_SNIPPET_SELECTOR; // NOTE: | ||
GOOGLE_IT_SNIPPET_SELECTOR = _process$env.GOOGLE_IT_SNIPPET_SELECTOR, | ||
GOOGLE_IT_RESULT_STATS_SELECTOR = _process$env.GOOGLE_IT_RESULT_STATS_SELECTOR, | ||
GOOGLE_IT_CURSOR_SELECTOR = _process$env.GOOGLE_IT_CURSOR_SELECTOR; // NOTE: | ||
// I chose the User-Agent value from http://www.browser-info.net/useragents | ||
@@ -39,2 +41,4 @@ // Not setting one causes Google search to not display results | ||
var snippetSelector = 'div.rc > div.s > div > span'; | ||
var resultStatsSelector = '#resultStats'; | ||
var cursorSelector = '#nav > tbody > tr > td.cur'; | ||
@@ -53,2 +57,10 @@ var getTitleSelector = function getTitleSelector(passedValue) { | ||
var getResultStatsSelector = function getResultStatsSelector(passedValue) { | ||
return passedValue || GOOGLE_IT_RESULT_STATS_SELECTOR || resultStatsSelector; | ||
}; | ||
var getResultCursorSelector = function getResultCursorSelector(passedValue) { | ||
return passedValue || GOOGLE_IT_CURSOR_SELECTOR || cursorSelector; | ||
}; | ||
var logIt = function logIt(message, disableConsole) { | ||
@@ -89,2 +101,5 @@ if (!disableConsole) { | ||
getSnippetSelector: getSnippetSelector, | ||
resultStatsSelector: resultStatsSelector, | ||
getResultStatsSelector: getResultStatsSelector, | ||
getResultCursorSelector: getResultCursorSelector, | ||
logIt: logIt, | ||
@@ -91,0 +106,0 @@ saveToFile: saveToFile, |
{ | ||
"name": "google-it", | ||
"version": "1.4.3", | ||
"version": "1.5.0", | ||
"description": "A CLI and Node.js library to help retrieve, display, and store Google search results", | ||
@@ -13,3 +13,3 @@ "main": "./lib/main.js", | ||
"build": "babel src -d lib", | ||
"lint": "./node_modules/.bin/eslint --ext .js --ignore-path .eslintignore '*.js'", | ||
"lint": "./node_modules/.bin/eslint 'src/*.js'", | ||
"test": "jest", | ||
@@ -48,3 +48,3 @@ "prepublish": "npm run build" | ||
"babel-preset-amex": "^3.3.0", | ||
"codecov": "^3.6.1", | ||
"codecov": "^3.6.2", | ||
"eslint": "^6.8.0", | ||
@@ -51,0 +51,0 @@ "eslint-config-amex": "^11.1.0", |
@@ -1,2 +0,2 @@ | ||
# 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/) | ||
# 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) | ||
@@ -3,0 +3,0 @@ A simple library to convert Google search results to JSON output, with an interactive display option coming in the near future. |
@@ -14,2 +14,4 @@ /* eslint-disable no-console */ | ||
getSnippetSelector, | ||
getResultStatsSelector, | ||
getResultCursorSelector, | ||
logIt, | ||
@@ -72,2 +74,4 @@ saveToFile, | ||
snippetSelector, | ||
resultStatsSelector, | ||
cursorSelector, | ||
}) { | ||
@@ -108,8 +112,27 @@ const $ = cheerio.load(data); | ||
} | ||
return results; | ||
const resultStats = $(getResultStatsSelector(resultStatsSelector)).html() || ''; | ||
const approximateResults = ((resultStats.split(' results') || [''])[0].split('About ')[1] || '').replace(',', ''); | ||
const seconds = parseFloat((resultStats.split(' (')[1] || '').split(' seconds')[0]); | ||
const cursor = $(getResultCursorSelector(cursorSelector)).html() || ''; | ||
const page = parseInt(cursor.split('</span>')[1], 10); | ||
const stats = { | ||
page, | ||
approximateResults, | ||
seconds, | ||
}; | ||
return { results, stats }; | ||
} | ||
export function getResponse({ | ||
fromFile: filePath, options, htmlFileOutputPath, query, limit, userAgent, start, | ||
fromFile: filePath, | ||
fromString, | ||
options, | ||
htmlFileOutputPath, | ||
query, | ||
limit, | ||
userAgent, | ||
start, | ||
}) { | ||
// eslint-disable-next-line consistent-return | ||
return new Promise((resolve, reject) => { | ||
@@ -121,16 +144,17 @@ if (filePath) { | ||
} | ||
return resolve(data); | ||
return resolve({ body: data }); | ||
}); | ||
} else { | ||
const defaultOptions = getDefaultRequestOptions({ | ||
limit, query, userAgent, start, | ||
}); | ||
request({ ...defaultOptions, ...options }, (error, response, body) => { | ||
if (error) { | ||
reject(new Error(`Error making web request: ${error}`)); | ||
} | ||
saveResponse(response, htmlFileOutputPath); | ||
resolve({ body, response }); | ||
}); | ||
} else if (fromString) { | ||
return resolve({ body: fromString }); | ||
} | ||
const defaultOptions = getDefaultRequestOptions({ | ||
limit, query, userAgent, start, | ||
}); | ||
request({ ...defaultOptions, ...options }, (error, response, body) => { | ||
if (error) { | ||
return reject(new Error(`Error making web request: ${error}`)); | ||
} | ||
saveResponse(response, htmlFileOutputPath); | ||
return resolve({ body, response }); | ||
}); | ||
}); | ||
@@ -147,2 +171,4 @@ } | ||
snippetSelector, | ||
resultStatsSelector, | ||
cursorSelector, | ||
start, | ||
@@ -153,3 +179,3 @@ diagnostics, | ||
getResponse(config).then(({ body, response }) => { | ||
const results = getResults({ | ||
const { results, stats } = getResults({ | ||
data: body, | ||
@@ -162,2 +188,4 @@ noDisplay: config['no-display'], | ||
snippetSelector, | ||
resultStatsSelector, | ||
cursorSelector, | ||
start, | ||
@@ -172,3 +200,5 @@ }); | ||
if (returnHtmlBody || diagnostics) { | ||
return resolve({ results, body, response }); | ||
return resolve({ | ||
results, body, response, stats, | ||
}); | ||
} | ||
@@ -175,0 +205,0 @@ return resolve(results); |
@@ -9,2 +9,4 @@ /* eslint-disable no-console */ | ||
GOOGLE_IT_SNIPPET_SELECTOR, | ||
GOOGLE_IT_RESULT_STATS_SELECTOR, | ||
GOOGLE_IT_CURSOR_SELECTOR, | ||
} = process.env; | ||
@@ -37,2 +39,4 @@ | ||
const snippetSelector = 'div.rc > div.s > div > span'; | ||
const resultStatsSelector = '#resultStats'; | ||
const cursorSelector = '#nav > tbody > tr > td.cur'; | ||
@@ -51,2 +55,10 @@ const getTitleSelector = (passedValue) => ( | ||
const getResultStatsSelector = (passedValue) => ( | ||
passedValue || GOOGLE_IT_RESULT_STATS_SELECTOR || resultStatsSelector | ||
); | ||
const getResultCursorSelector = (passedValue) => ( | ||
passedValue || GOOGLE_IT_CURSOR_SELECTOR || cursorSelector | ||
); | ||
const logIt = (message, disableConsole) => { | ||
@@ -87,2 +99,5 @@ if (!disableConsole) { | ||
getSnippetSelector, | ||
resultStatsSelector, | ||
getResultStatsSelector, | ||
getResultCursorSelector, | ||
logIt, | ||
@@ -89,0 +104,0 @@ saveToFile, |
42066
22
866