Adds the one-off scripts accumulated across recent sessions, removes temp scripts whose searches now live in config.ts as role-family sweeps, and updates fetch-other.ts plus the LinkedIn post drafts.
38 lines
1.5 KiB
TypeScript
38 lines
1.5 KiB
TypeScript
import { fetchJobs } from "../fetch.ts";
|
|
import type { SearchConfig } from "../config.ts";
|
|
|
|
const EM_KEYWORDS = [
|
|
"Engineering Manager",
|
|
"Engineering Lead",
|
|
"Head of Engineering",
|
|
"VP Engineering",
|
|
"Director of Engineering",
|
|
"CTO",
|
|
"Tech Lead Manager",
|
|
].join(" OR ");
|
|
|
|
const configs: SearchConfig[] = [
|
|
{ label: "Basel city", keywords: EM_KEYWORDS, geoId: "103383283", workType: ["onsite", "hybrid"], timePosted: "month" },
|
|
{ label: "Basel Metro", keywords: EM_KEYWORDS, geoId: "90009885", workType: ["onsite", "hybrid"], timePosted: "month" },
|
|
{ label: "Zürich city", keywords: EM_KEYWORDS, geoId: "102436504", workType: ["onsite", "hybrid"], timePosted: "month" },
|
|
{ label: "Zürich Metro", keywords: EM_KEYWORDS, geoId: "107814425", workType: ["onsite", "hybrid"], timePosted: "month" },
|
|
{ label: "Bern", keywords: EM_KEYWORDS, location: "Bern, Switzerland", workType: ["onsite", "hybrid"], timePosted: "month" },
|
|
{ label: "CH Remote", keywords: EM_KEYWORDS, location: "Switzerland", workType: ["remote"], timePosted: "month" },
|
|
];
|
|
|
|
const all = new Map<string, Awaited<ReturnType<typeof fetchJobs>>[number]>();
|
|
|
|
for (const config of configs) {
|
|
console.log(`\n--- ${config.label} ---`);
|
|
const jobs = await fetchJobs(config);
|
|
for (const j of jobs) {
|
|
if (!all.has(j.id)) all.set(j.id, j);
|
|
}
|
|
}
|
|
|
|
console.log(`\nTotal: ${all.size} vagas de Engineering Manager na Suíça\n`);
|
|
for (const j of all.values()) {
|
|
console.log(`${j.title} — ${j.company} (${j.location})`);
|
|
console.log(` ${j.link}`);
|
|
}
|