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

49 řádky
1.3 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 = {
2023-04-07 00:09:13 +02:00
"Dušan Matuška": { country: "sk" },
};
2023-01-26 02:17:38 +01:00
2023-01-23 04:37:12 +01:00
for (const el of $(".speaker").toArray()) {
const value = (path) => cleanup($(path, el).text());
2023-04-07 00:09:13 +02:00
const name = value("h3");
const link = $("a", el).attr("href");
2023-01-26 02:17:38 +01:00
2023-04-07 00:09:13 +02:00
const $$ = await tools.loadHtmlUrl(link);
const sp = $$(".container.pt-5");
2023-01-26 02:17:38 +01:00
const item = {
id: link.match(/speakers\/(.+)\/$/)[1],
name,
2023-01-23 04:37:12 +01:00
photoUrl: $("img", el).attr("src"),
2023-01-26 02:19:01 +01:00
caption: value(".popis"),
2023-04-07 00:09:13 +02:00
twitter: $$("a.twitter", sp).attr("href")?.replace(
"https://twitter.com/",
"",
),
linkedin: $$("a.linkedIn", sp).attr("href")?.replace(
"https://www.linkedin.com/in/",
"",
).replace(/\/$/, ""),
2023-01-26 02:17:38 +01:00
tag: value(".taxTag "),
2023-03-28 05:03:44 +02:00
//country: 'xx',
2023-04-07 00:09:13 +02:00
desc: $$("p", sp).text(),
2023-01-26 02:17:38 +01:00
web: { url: $$(".www", sp).attr("href") },
2023-04-07 00:09:13 +02:00
link,
};
2023-01-26 02:17:38 +01:00
if (peopleMapper[name]) {
2023-04-07 00:09:13 +02:00
Object.assign(item, peopleMapper[name]);
2023-01-26 02:17:38 +01:00
}
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
}