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

43 řádky
1.2 KiB
JavaScript
Surový Normální zobrazení Historie

2023-01-23 04:37:12 +01:00
export async function data(tools) {
2023-01-26 02:17:38 +01:00
const $ = await tools.loadHtmlUrl("https://www.btcprague.com/speakers");
//const $ = await tools.loadHtmlLocal(new URL('.', import.meta.url).pathname + "./btcprague.html");
2023-01-23 04:37:12 +01:00
const out = { speakers: [] };
2023-01-26 02:17:38 +01:00
const peopleMapper = {
'Dušan Matuška': { country: 'sk' }
}
2023-01-23 04:37:12 +01:00
for (const el of $(".speaker").toArray()) {
const value = (path) => cleanup($(path, el).text());
2023-01-26 02:17:38 +01:00
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,
2023-01-23 04:37:12 +01:00
photoUrl: $("img", el).attr("src"),
bio: value(".popis"),
2023-01-26 02:17:38 +01:00
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);
2023-01-23 04:37:12 +01:00
}
return out;
}
2023-01-23 04:51:17 +01:00
function cleanup(str) {
return str.replace(/(\s{2,}|\n)/g, " ").trim();
2023-01-26 02:17:38 +01:00
}