prague-blockchain-week/data/23/events/bitcoin-prague/_sync.js

49 řádky
1.3 KiB
JavaScript

export async function data(tools) {
const $ = await tools.loadHtmlUrl("https://www.btcprague.com/speakers");
//const $ = await tools.loadHtmlLocal(new URL('.', import.meta.url).pathname + "./btcprague.html");
const out = { speakers: [] };
const peopleMapper = {
"Dušan Matuška": { country: "sk" },
};
for (const el of $(".speaker").toArray()) {
const value = (path) => cleanup($(path, el).text());
const name = value("h3");
const link = $("a", el).attr("href");
const $$ = await tools.loadHtmlUrl(link);
const sp = $$(".container.pt-5");
const item = {
id: link.match(/speakers\/(.+)\/$/)[1],
name,
photoUrl: $("img", el).attr("src"),
caption: value(".popis"),
twitter: $$("a.twitter", sp).attr("href")?.replace(
"https://twitter.com/",
"",
),
linkedin: $$("a.linkedIn", sp).attr("href")?.replace(
"https://www.linkedin.com/in/",
"",
).replace(/\/$/, ""),
tag: value(".taxTag "),
//country: 'xx',
desc: $$("p", sp).text(),
web: { url: $$(".www", sp).attr("href") },
link,
};
if (peopleMapper[name]) {
Object.assign(item, peopleMapper[name]);
}
out.speakers.push(item);
}
return out;
}
function cleanup(str) {
return str.replace(/(\s{2,}|\n)/g, " ").trim();
}