City search (#217)
* wave 1, jobspy only * combine usa/ca to united states * strict city location filter * hide and show based on focus * UI changes * allow clicking cross! * pill animate in * animate out, uggo fix * animate out * framer motion * animate component height * adzuna * hiring cafe implementation * refactor: centralize shared search-city parsing and matching * feat: migrate city setting to searchCities with legacy fallback * docs: update pipeline and extractor city-search wording * fix(orchestrator): normalize tokenized paste behavior * fix(shared): tighten city matching semantics * docs(extractors): document city-location knobs and geocoding note
This commit is contained in:
@@ -9,6 +9,7 @@ for orchestrator ingestion.
|
||||
- `ADZUNA_APP_KEY` (required)
|
||||
- `ADZUNA_COUNTRY` (default: `gb`)
|
||||
- `ADZUNA_SEARCH_TERMS` (JSON array or `|` / comma / newline-delimited)
|
||||
- `ADZUNA_LOCATION_QUERY` (optional city/location text passed to Adzuna `where`)
|
||||
- `ADZUNA_MAX_JOBS_PER_TERM` (default: `50`)
|
||||
- `ADZUNA_RESULTS_PER_PAGE` (default: `50`, max `50`)
|
||||
- `ADZUNA_OUTPUT_JSON` (default: `storage/datasets/default/jobs.json`)
|
||||
|
||||
@@ -104,6 +104,7 @@ async function fetchJobsPage(args: {
|
||||
appId: string;
|
||||
appKey: string;
|
||||
what: string;
|
||||
where?: string;
|
||||
resultsPerPage: number;
|
||||
}): Promise<AdzunaJob[]> {
|
||||
const url = new URL(`${API_BASE}/jobs/${args.country}/search/${args.page}`);
|
||||
@@ -112,6 +113,9 @@ async function fetchJobsPage(args: {
|
||||
if (args.what) {
|
||||
url.searchParams.set("what", args.what);
|
||||
}
|
||||
if (args.where) {
|
||||
url.searchParams.set("where", args.where);
|
||||
}
|
||||
url.searchParams.set("results_per_page", String(args.resultsPerPage));
|
||||
|
||||
const response = await fetch(url.toString(), {
|
||||
@@ -146,6 +150,7 @@ async function run(): Promise<void> {
|
||||
const outputJson =
|
||||
process.env.ADZUNA_OUTPUT_JSON ||
|
||||
join(process.cwd(), "storage/datasets/default/jobs.json");
|
||||
const locationQuery = process.env.ADZUNA_LOCATION_QUERY?.trim() || "";
|
||||
|
||||
const jobs: ExtractedJob[] = [];
|
||||
|
||||
@@ -171,6 +176,7 @@ async function run(): Promise<void> {
|
||||
appId,
|
||||
appKey,
|
||||
what: searchTerm,
|
||||
where: locationQuery || undefined,
|
||||
resultsPerPage: take,
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user