UNPKG

google-that

Version:

CLI tool to scrape google search results without a api key

3 lines (2 loc) 1.96 kB
#!/usr/bin/env node var f=Object.defineProperty;var o=(e,r)=>f(e,"name",{value:r,configurable:!0});import S from"node:fs/promises";import{ResultTypes as b,search as A}from"google-sr";import x from"yargs/yargs";import{ResultTypes as u}from"google-sr";var a=[u.OrganicResult,u.CurrencyResult,u.DictionaryResult,u.TimeResult,u.TranslateResult];import{CurrencyResult as g,DictionaryResult as m,KnowledgePanelResult as R,OrganicResult as d,ResultTypes as s,TimeResult as T,TranslateResult as q}from"google-sr";function y(e){return!e.query&&!Array.isArray(e.queries)?(console.log("Please specify -q <query> or -Q <queries>"),!1):e.start&&!e.pages&&!e.page?(console.log("Start can only be used when pages (-P) or page (-p) is specified"),!1):!0}o(y,"validateOptions");function w(e){switch(e){case s.OrganicResult:return d;case s.TimeResult:return T;case s.TranslateResult:return q;case s.DictionaryResult:return m;case s.CurrencyResult:return g;case s.KnowledgePanelResult:return R;default:throw new Error(`Unknown selector type: ${e}`)}}o(w,"selectorTypeToSelector");function c(e){let r=[];for(let n of e)r.push(w(n));return r}o(c,"selectorTypeArrayToSelector");var t=x(process.argv.slice(2)).options({query:{type:"string",alias:"q"},queries:{type:"array",alias:"Q"},write:{type:"string",alias:"w"},page:{type:"number",alias:"p"},pages:{type:"number",alias:"P"},start:{type:"number",alias:"s"}}).option("resultTypes",{type:"array",alias:"r",choices:a,default:[b.OrganicResult]}).parseSync();y(t)||process.exit(1);var h=t.query?[t.query]:t.queries,l=[];for(let e of h){let r=String(e),n=c(t.resultTypes),i=await A({query:r,resultTypes:n});i.length&&l.push({query:e,results:i})}if(typeof t.write=="string"){let e="";t.write===""?e="%queryIndex%-%query%.json":e=t.write;for(let r in l){let{query:n,results:i}=l[r],p=e.replace("%query%",n).replace("%queryIndex%",r);await S.writeFile(p,JSON.stringify(i,null,1))}}else process.stdout.write(JSON.stringify(l,null,1));