search | registry esm

This commit is contained in:
babayaga 2025-11-21 23:04:18 +01:00
parent 9a8ac42a6f
commit 3daa35b99f
13 changed files with 73 additions and 237 deletions

View File

@ -11,7 +11,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"outFiles": [
"${workspaceFolder}//**/*.js"
@ -28,7 +28,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"outFiles": [
"${workspaceFolder}//**/*.js"
@ -40,7 +40,6 @@
"--searchFrom=Barcelona, Catalonia, Spain",
"--filterCountry=Spain",
"--google_domain_='google.es'",
"--source='${OSR_CUSTOMER_DRIVE}/campaign/spain.json'",
"--limit=10",
"--debug=true"
],
@ -53,7 +52,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"outFiles": [
"${workspaceFolder}//**/*.js"
],
@ -89,7 +88,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"outFiles": [
"${workspaceFolder}//**/*.js"
],
@ -124,7 +123,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"outFiles": [
"${workspaceFolder}//**/*.js"
],
@ -180,7 +179,7 @@
"--meta=true",
"--cache=false",
"--zoom=12",
"--headless=true"%
"--headless=true"
],
"outputCapture": "std"
},
@ -191,7 +190,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"googlemaps",
@ -220,7 +219,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"googlemaps",
@ -249,7 +248,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"googlemaps",
@ -280,7 +279,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"report",
@ -313,7 +312,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"outFiles": [
"${workspaceFolder}//**/*.js"
@ -326,9 +325,9 @@
"--language=en",
"--filterCountry=France",
"--google_domain='google.fr'",
"--dst='${OSR_CUSTOMER_DRIVE}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'",
"--dst='${POLYMECH_ROOT}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'",
"--limit=50",
"--source='${OSR_CUSTOMER_DRIVE}/campaign/france-design.json'",
"--source='${POLYMECH_ROOT}/campaign/france-design.json'",
"--debug=false",
"--findEMail=true",
"--meta=true",
@ -343,7 +342,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"outFiles": [
"${workspaceFolder}//**/*.js"
@ -372,7 +371,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"outFiles": [
"${workspaceFolder}//**/*.js"
@ -385,9 +384,9 @@
"--language=en",
"--filterCountry=France",
"--google_domain='google.fr'",
"--dst='${OSR_CUSTOMER_DRIVE}/campaign/test/${COUNTRY}/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'",
"--dst='${POLYMECH_ROOT}/campaign/test/${COUNTRY}/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'",
"--limit=50",
"--source='${OSR_CUSTOMER_DRIVE}/campaign/france-design.json'",
"--source='${POLYMECH_ROOT}/campaign/france-design.json'",
"--debug=false",
"--findEMail=true",
"--meta=true",
@ -403,7 +402,7 @@
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/main.js",
"program": "${workspaceFolder}/dist-in/main.js",
"outFiles": [
"${workspaceFolder}//**/*.js"
],

View File

@ -37,7 +37,7 @@ Please create a config file, in your home directory, eg: ```C:\\Users\\TeleTubbi
- `--dst`: Output path, supports XLS|MD (default: ./tests/maps/${QUERY}-${FROM}-${ENGINE}-${DOMAIN}-${LANG}.xls)
- `--env_key`: Environment key to the config path (default: OSR-CONFIG)
- `--api_key` : SERPAPI Key
- `--source` : path to a JSON file, containing categories with related search phrases. To save results per category, use ```--dst='${OSR_CUSTOMER_DRIVE}/campaign/test/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'```
- `--source` : path to a JSON file, containing categories with related search phrases. To save results per category, use ```--dst='${POLYMECH_ROOT}/campaign/test/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'```
- `--cache` : when `true`, skip existing search result files
- `--findEMail` : scrape websites for email addresses
- `--meta` : retrieve meta tags, to be stored in JSON only

File diff suppressed because one or more lines are too long

View File

@ -41,7 +41,7 @@ export const defaultOptions = (yargs) => {
default: 50
}).option('dst', {
description: 'dst output path, supports XLS|CSV|HTML',
default: '${OSR_CUSTOMER_DRIVE}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'
default: '${POLYMECH_ROOT}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'
}).option('filterCountry', {
description: ' by this country',
}).option('filterCity', {
@ -112,7 +112,7 @@ export const defaultReportOptions = (yargs) => {
default: 50
}).option('dst', {
description: 'dst output path, supports XLS|CSV|HTML',
default: '${OSR_CUSTOMER_DRIVE}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'
default: '${POLYMECH_ROOT}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'
}).option('country', {
description: 'country',
}).option('city', {

View File

@ -43,17 +43,15 @@ export declare const zodSchema: () => z.ZodObject<{
searchCache: z.ZodDefault<z.ZodBoolean>;
query: z.ZodDefault<z.ZodString>;
searchCoord: z.ZodOptional<z.ZodString>;
searchFrom: z.ZodOptional<z.ZodString>;
searchFrom: z.ZodDefault<z.ZodOptional<z.ZodString>>;
source: z.ZodOptional<z.ZodString>;
type: z.ZodDefault<z.ZodOptional<z.ZodString>>;
zoom: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
index: z.ZodDefault<z.ZodString>;
store: z.ZodDefault<z.ZodString>;
}, "strip", z.ZodTypeAny, {
type?: string;
cache?: boolean;
meta?: boolean;
api_key?: string;
cache?: boolean;
category?: string;
dst?: string;
dump?: string;
@ -69,19 +67,19 @@ export declare const zodSchema: () => z.ZodObject<{
language?: string;
limit?: number;
logLevel?: string;
meta?: boolean;
searchCache?: boolean;
query?: string;
searchCoord?: string;
searchFrom?: string;
source?: string;
type?: string;
zoom?: number;
index?: string;
store?: string;
}, {
type?: string;
cache?: boolean;
meta?: boolean;
api_key?: string;
cache?: boolean;
category?: string;
dst?: string;
dump?: string;
@ -97,11 +95,13 @@ export declare const zodSchema: () => z.ZodObject<{
language?: string;
limit?: number;
logLevel?: string;
meta?: boolean;
searchCache?: boolean;
query?: string;
searchCoord?: string;
searchFrom?: string;
source?: string;
type?: string;
zoom?: number;
index?: string;
store?: string;
@ -158,7 +158,7 @@ export declare const zodSchemaEach: () => z.ZodObject<{
searchCache: z.ZodDefault<z.ZodBoolean>;
query: z.ZodDefault<z.ZodString>;
searchCoord: z.ZodOptional<z.ZodString>;
searchFrom: z.ZodOptional<z.ZodString>;
searchFrom: z.ZodDefault<z.ZodOptional<z.ZodString>>;
source: z.ZodOptional<z.ZodString>;
type: z.ZodDefault<z.ZodOptional<z.ZodString>>;
zoom: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
@ -175,10 +175,8 @@ export declare const zodSchemaEach: () => z.ZodObject<{
profile: z.ZodDefault<z.ZodString>;
migrate: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
type?: string;
cache?: boolean;
meta?: boolean;
api_key?: string;
cache?: boolean;
category?: string;
dst?: string;
dump?: string;
@ -194,11 +192,13 @@ export declare const zodSchemaEach: () => z.ZodObject<{
language?: string;
limit?: number;
logLevel?: string;
meta?: boolean;
searchCache?: boolean;
query?: string;
searchCoord?: string;
searchFrom?: string;
source?: string;
type?: string;
zoom?: number;
index?: string;
store?: string;
@ -211,10 +211,8 @@ export declare const zodSchemaEach: () => z.ZodObject<{
profile?: string;
migrate?: boolean;
}, {
type?: string;
cache?: boolean;
meta?: boolean;
api_key?: string;
cache?: boolean;
category?: string;
dst?: string;
dump?: string;
@ -230,11 +228,13 @@ export declare const zodSchemaEach: () => z.ZodObject<{
language?: string;
limit?: number;
logLevel?: string;
meta?: boolean;
searchCache?: boolean;
query?: string;
searchCoord?: string;
searchFrom?: string;
source?: string;
type?: string;
zoom?: number;
index?: string;
store?: string;

File diff suppressed because one or more lines are too long

View File

@ -10,7 +10,7 @@ import { register as registerTypes } from './commands/types.js';
registerTypes(cli);
import { register as registerSASearch } from './commands/googlemaps.js';
registerSASearch(cli);
const argv = cli.getArguments();
const argv = cli.argv;
if (argv.help) {
cli.showHelp(true);
process.exit();
@ -18,4 +18,4 @@ if (argv.help) {
else if (argv.v || argv.version) {
process.exit();
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQUMsUUFBUSxFQUFFLENBQUE7QUFFaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUU5QixPQUFPLEVBQUUsUUFBUSxJQUFJLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLElBQUksWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDaEYsT0FBTyxFQUFFLFFBQVEsSUFBSSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNuRixPQUFPLEVBQUUsUUFBUSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUc5RixNQUFNLElBQUksR0FBUSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUE7QUFFcEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDWixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtBQUNsQixDQUFDO0tBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDbEIsQ0FBQyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQUMsUUFBUSxFQUFFLENBQUE7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUU5QixPQUFPLEVBQUUsUUFBUSxJQUFJLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLElBQUksWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDaEYsT0FBTyxFQUFFLFFBQVEsSUFBSSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNuRixPQUFPLEVBQUUsUUFBUSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUc5RixNQUFNLElBQUksR0FBUSxHQUFHLENBQUMsSUFBSSxDQUFDO0FBRzNCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ1osR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNsQixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDbEIsQ0FBQztLQUFNLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFBO0FBQ2xCLENBQUMifQ==

View File

@ -8,7 +8,7 @@
"access": "public"
},
"bin": {
"polymech-search": "main.js"
"polymech-search": "dist-in/main.js"
},
"dependencies": {
"@keyv/sqlite": "^4.0.1",

View File

@ -1,19 +1,7 @@
import * as CLI from 'yargs'
import * as path from 'path'
import { clone } from '../options.js'
import { cleanOptions, logger } from '../index.js'
import { logger } from '../index.js'
import { defaults } from '../_cli.js'
import { writeReport } from '../lib/report_map.js'
import { sync as write } from '@polymech/fs/write'
import { sync as read } from '@polymech/fs/read'
import { sync as exists } from '@polymech/fs/exists'
import pMap from 'p-map'
import { resolvePath } from './options.js'
import { geocode_forward } from '../lib/geo.js'
import { locationString, searchGoogleMap, yargsOptions, zodSchema, googleMaps } from '../lib/googlemaps.js'
import { yargsOptions, zodSchema, googleMaps } from '../lib/googlemaps.js'
import { IOptionsGoogleMaps } from '../lib/index.js'
let options = (yargs: CLI.Argv) => yargsOptions(yargs)
@ -30,79 +18,6 @@ export const register = (cli: CLI.Argv) => {
logger.error('Invalid options', e.message, e.issues)
return
}
// opts = parse(argv)
return await googleMaps(opts)
if (!opts) {
logger.error('Invalid options', opts)
return
}
try {
if (opts.searchFrom && opts.geocode_key) {
const coords = await geocode_forward(opts.searchFrom, opts.geocode_key)
if (coords) {
opts.searchCoord = locationString(coords, opts.zoom)
} else {
logger.error('Error geocoding', opts.searchFrom)
}
}
} catch (error) {
logger.error('Error geocoding', error, error.stack)
}
let ret: any[] = []
const search = async (query: string, category, opts: any) => {
opts = clone(opts)
opts.dst = resolvePath(argv.dst, query, category, opts)
if (opts.cache !== false && exists(opts.dst + '.json')) {
logger.debug('Skipping', opts.dst + '.json')
return read(opts.dst.replace('.xlsx', 'json')) as any || []
}
try {
const sr = await searchGoogleMap(query, opts.api_key, { ...opts })
if (sr && sr.length && opts.dst) {
logger.debug('Writing', opts.dst)
write(opts.dst + '.json', sr)
writeReport(sr, opts.dst, opts)
const parts = path.parse(opts.dst)
write(path.join(parts.dir, parts.name + '_options.json'), cleanOptions(opts))
// writeReport(sr, opts.dst.replace('.xlsx', '.md'), opts)
}
ret = [...ret, ...sr]
return ret
} catch (error) {
logger.error('Error searching GoogleMaps : ' + error.message, error, error.stack)
}
}
const results = await pMap(Object.keys(opts.source), async (k: any) => {
return await pMap(opts.source[k], async (t: any) => {
return search(t, k, opts)
}, {
concurrency: 1
})
}, {
concurrency: 1
})
if (opts.dst) {
opts.dst = resolvePath(argv.dst, 'all', 'all', opts)
if (exists(opts.dst + '.json')) {
const last = (read(opts.dst + '.json', 'json') as any || [])
ret = [...last, ...ret]
}
write(opts.dst + '.json', ret)
writeReport(ret, opts.dst, opts)
}
if (opts.index) {
let index = read(opts.index, 'json') as any || {}
ret.forEach((r) => {
index[r.title] = r
})
write(opts.index, index)
}
return false
})
}

View File

@ -6,7 +6,7 @@ export const defaultOptionsSchema = z.object({
cache: z.boolean().default(true),
category: z.string().optional(),
debug: z.boolean().default(false),
dst: z.string().default('${OSR_CUSTOMER_DRIVE}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-10.xls'),
dst: z.string().default('${POLYMECH_ROOT}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-10.xls'),
dump: z.string().optional(),
engine: z.string().default('google'),
env_key: z.string().default('OSR-CONFIG'),
@ -17,13 +17,13 @@ export const defaultOptionsSchema = z.object({
geocode_key: z.string().optional(),
google_domain: z.string().default('google.com'),
headless: z.boolean().default(true),
index: z.string().default('${OSR_ROOT}/osr-directory/meta/index.json'),
index: z.string().default('${POLYMECH_ROOT}/osr-directory/meta/index.json'),
language: z.string().default('en'),
limit: z.number().default(50),
meta: z.boolean().default(true),
query: z.string().default('plastichub'),
searchCoord: z.string().optional(),
searchFrom: z.string().optional(),
searchFrom: z.string().optional().default('barcelona, spain'),
source: z.string().optional(),
translate: z.string().optional(),
});
@ -35,7 +35,7 @@ export const defaultReportOptionsSchema = z.object({
city: z.string().optional(),
country: z.string().optional(),
debug: z.boolean().default(false),
dst: z.string().default('${OSR_CUSTOMER_DRIVE}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-10.xls'),
dst: z.string().default('${POLYMECH_ROOT}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-10.xls'),
engine: z.string().default('google'),
env_key: z.string().default('OSR-CONFIG'),
google_domain: z.string().default('google.com'),

View File

@ -44,7 +44,7 @@ export const defaultOptions = (yargs: CLI.Argv) => {
default: 50
}).option('dst', {
description: 'dst output path, supports XLS|CSV|HTML',
default: '${OSR_CUSTOMER_DRIVE}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'
default: '${POLYMECH_ROOT}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'
}).option('filterCountry', {
description: ' by this country',
}).option('filterCity', {
@ -116,7 +116,7 @@ export const defaultReportOptions = (yargs: CLI.Argv) => {
default: 50
}).option('dst', {
description: 'dst output path, supports XLS|CSV|HTML',
default: '${OSR_CUSTOMER_DRIVE}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'
default: '${POLYMECH_ROOT}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-${MM}.xls'
}).option('country', {
description: 'country',
}).option('city', {

View File

@ -106,9 +106,9 @@ export const getStored = async (title:string, storePath: string, ns: string = 'o
export const zodSchema = () => z.object({
api_key: z.string().optional().describe('API Key'),
cache: z.boolean().default(true),
cache: z.boolean().default(false),
category: z.string().optional().default('category'),
dst: z.string().default('${OSR_CUSTOMER_DRIVE}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-10.xls'),
dst: z.string().default('${POLYMECH_ROOT}/campaign/maps/${FROM}/${CATEGORY}/${QUERY}-10.xls'),
dump: z.string().optional(),
engine: z.string().default('google_maps'),
env_key: z.string().default('OSR-CONFIG'),
@ -123,10 +123,10 @@ export const zodSchema = () => z.object({
limit: z.number().default(5),
logLevel: z.string().default('info'),
meta: z.boolean().default(true),
searchCache: z.boolean().default(true).describe('Use search cache'),
searchCache: z.boolean().default(false).describe('Use search cache'),
query: z.string().default('plastichub'),
searchCoord: z.string().optional(),
searchFrom: z.string().optional(),
searchFrom: z.string().optional().default('barcelona, spain'),
source: z.string().optional(),
type: z.string().optional().default('search'),
zoom: z.number().optional().default(13),
@ -250,6 +250,7 @@ export const searchGoogleMap = async (
...googleParams
})
while (page && page.local_results) {
page.local_results.forEach((r) => {
r.page = pageIdx
@ -260,7 +261,7 @@ export const searchGoogleMap = async (
page = await page.next?.()
}
if (page.place_results && !isArray(page.place_results)) {
if (page && page.place_results && !isArray(page.place_results)) {
page.place_results = [page.place_results]
}
@ -277,8 +278,10 @@ export const searchGoogleMap = async (
if (opts.searchCache && OSR_CACHE()) {
set_cached_object(cache_key, MODULE_NAME, results)
}
let idx = 0
//const cachedLoc = async (title: string) => getStored(title, opts.store, MODULE_NAME)
await pMap(results, async (entry: any) => {
idx++
entry.position = entry.page * PAGE_SIZE + idx
@ -294,7 +297,7 @@ export const searchGoogleMap = async (
}
}, { concurrency: 3 })
//logger.debug(`search ${query} with ${params.ll} / ${params.searchFrom} @ ${opts.zoom} : ${results.length} items`)
logger.debug(`search ${query} with ${params.ll} / ${params.searchFrom} @ ${opts.zoom} : ${results.length} items`)
if (opts.filterCity) {
results = results.filter((r) => r.geo.city.toLowerCase() === opts.filterCity.toLowerCase())
@ -412,7 +415,7 @@ export const resolvePath = (str: string, query, category, opts: any) => {
return path.resolve(resolve(str, false,
{
QUERY: query,
FROM: opts.searchFrom.split(',').map((s) => s.trim()).join('/'),
FROM: opts.searchFrom ? opts.searchFrom.split(',').map((s) => s.trim()).join('/') : 'barcelona, spain',
ENGINE: opts.engine,
DOMAIN: opts.google_domain,
LANG: opts.language,
@ -454,7 +457,7 @@ export const googleMaps = async (opts: IOptionsGoogleMaps) => {
return cached
}
try {
logger.debug(`Searching ${opts.query} with ${opts.searchFrom} :: 3`)
logger.debug(`Searching ${opts.query} with ${opts.searchFrom}`)
const sr = await searchGoogleMap(query, opts.api_key, { ...opts })
if (sr && sr.length && opts.dst) {
logger.debug('Writing', opts.dst)
@ -465,8 +468,7 @@ export const googleMaps = async (opts: IOptionsGoogleMaps) => {
// writeReport(sr, opts.dst.replace('.xlsx', '.md'), opts)
}
ret = [...ret, ...sr]
logger.debug(`Searching ${opts.query} with ${opts.searchFrom} :: 4`)
// closeAppByName('Chromium')
logger.debug(`Searching ${opts.query} with ${opts.searchFrom}`)
return ret
} catch (error) {
logger.error('Error searching GoogleMaps : ' + error.message, error, error.stack)

View File

@ -1,6 +1,5 @@
#!/usr/bin/env node
import { defaults } from './_cli.js'; defaults()
import { cli } from './cli.js'
import { register as registerInfo } from './commands/info.js'; registerInfo(cli)
@ -9,7 +8,8 @@ import { register as registerTypes } from './commands/types.js'; registerTypes(c
import { register as registerSASearch } from './commands/googlemaps.js'; registerSASearch(cli)
const argv: any = cli.getArguments()
const argv: any = cli.argv;
if (argv.help) {
cli.showHelp(true)