feat(amazon-shopping): parse filters and extract search candidates
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
import minimist from "minimist";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
import { parseNaturalLanguageRequest } from "./query-parser.js";
|
||||
import type { ProductFilters, SearchProductsRequest, SearchProductsResponse } from "./types.js";
|
||||
|
||||
export interface CliDeps {
|
||||
@@ -76,12 +77,13 @@ export function parseCliRequest(argv: string[]): SearchProductsRequest {
|
||||
alias: { h: "help" }
|
||||
});
|
||||
|
||||
const query = String(args.query ?? args._.join(" ")).trim();
|
||||
if (!query) {
|
||||
const rawQuery = String(args.query ?? args._.join(" ")).trim();
|
||||
if (!rawQuery) {
|
||||
throw new Error("A product query is required");
|
||||
}
|
||||
|
||||
const limit = parsePositiveInteger(args.limit, "limit") ?? 15;
|
||||
const natural = parseNaturalLanguageRequest(rawQuery);
|
||||
const limit = parsePositiveInteger(args.limit, "limit") ?? natural.limit ?? 15;
|
||||
if (limit > 30 && !args["allow-large-limit"]) {
|
||||
throw new Error("Requested limits above 30 require --allow-large-limit or a batched run");
|
||||
}
|
||||
@@ -91,10 +93,7 @@ export function parseCliRequest(argv: string[]): SearchProductsRequest {
|
||||
throw new Error("max-search-pages must be 5 or less");
|
||||
}
|
||||
|
||||
const filters: ProductFilters = {
|
||||
includeKeywords: [],
|
||||
excludeKeywords: []
|
||||
};
|
||||
const filters: ProductFilters = { ...natural.filters };
|
||||
const minRating = parseNumber(args["min-rating"], "min-rating");
|
||||
const minReviews = parsePositiveInteger(args["min-reviews"], "min-reviews");
|
||||
const maxPrice = parseNumber(args["max-price"], "max-price");
|
||||
@@ -108,7 +107,7 @@ export function parseCliRequest(argv: string[]): SearchProductsRequest {
|
||||
const markdown = Boolean(args.markdown);
|
||||
|
||||
return {
|
||||
query,
|
||||
query: natural.query || rawQuery,
|
||||
filters,
|
||||
limit,
|
||||
maxSearchPages,
|
||||
|
||||
Reference in New Issue
Block a user