43 řádky
1.3 KiB
JavaScript
43 řá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();
|
|
}
|