diff --git a/Makefile b/Makefile index a6566d4..20bbe04 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,9 @@ build: sync: deno run --allow-all utils/sync.js +images: + deno run --allow-all utils/images.js + test: deno test --allow-all utils/test.js diff --git a/schema/index.yaml b/schema/index.yaml index c827e21..d8a8a3c 100644 --- a/schema/index.yaml +++ b/schema/index.yaml @@ -1,4 +1,12 @@ $defs: + design: + type: object + additionalProperties: false + required: + - image + properties: + image: + type: string project: type: object additionalProperties: false @@ -85,6 +93,10 @@ $defs: type: array name-extension: type: string + design: + $ref: "#/$defs/design" + images: + type: object person: type: object additionalProperties: false diff --git a/src/events/_images/2024/m24ams-poster-simple.webp b/src/events/_images/2024/m24ams-poster-simple.webp new file mode 100644 index 0000000..7f5520b Binary files /dev/null and b/src/events/_images/2024/m24ams-poster-simple.webp differ diff --git a/src/events/_images/2024/m24ams-poster.webp b/src/events/_images/2024/m24ams-poster.webp new file mode 100644 index 0000000..93c8b91 Binary files /dev/null and b/src/events/_images/2024/m24ams-poster.webp differ diff --git a/src/events/_images/2024/m24ams-square.webp b/src/events/_images/2024/m24ams-square.webp new file mode 100644 index 0000000..8aea0c4 Binary files /dev/null and b/src/events/_images/2024/m24ams-square.webp differ diff --git a/src/events/_images/2024/m24ams-wide-square.webp b/src/events/_images/2024/m24ams-wide-square.webp new file mode 100644 index 0000000..39c9e96 Binary files /dev/null and b/src/events/_images/2024/m24ams-wide-square.webp differ diff --git a/src/events/_images/2024/m24ams-wide.webp b/src/events/_images/2024/m24ams-wide.webp new file mode 100644 index 0000000..9eb9541 Binary files /dev/null and b/src/events/_images/2024/m24ams-wide.webp differ diff --git a/src/events/_images/2024/m24ath-poster-simple.webp b/src/events/_images/2024/m24ath-poster-simple.webp new file mode 100644 index 0000000..2bfd504 Binary files /dev/null and b/src/events/_images/2024/m24ath-poster-simple.webp differ diff --git a/src/events/_images/2024/m24ath-poster.webp b/src/events/_images/2024/m24ath-poster.webp new file mode 100644 index 0000000..b95280d Binary files /dev/null and b/src/events/_images/2024/m24ath-poster.webp differ diff --git a/src/events/_images/2024/m24ath-square.webp b/src/events/_images/2024/m24ath-square.webp new file mode 100644 index 0000000..31a1057 Binary files /dev/null and b/src/events/_images/2024/m24ath-square.webp differ diff --git a/src/events/_images/2024/m24ath-wide-square.webp b/src/events/_images/2024/m24ath-wide-square.webp new file mode 100644 index 0000000..10fbad4 Binary files /dev/null and b/src/events/_images/2024/m24ath-wide-square.webp differ diff --git a/src/events/_images/2024/m24ath-wide.webp b/src/events/_images/2024/m24ath-wide.webp new file mode 100644 index 0000000..7e3d969 Binary files /dev/null and b/src/events/_images/2024/m24ath-wide.webp differ diff --git a/src/events/_images/2024/m24ber-poster-simple.webp b/src/events/_images/2024/m24ber-poster-simple.webp new file mode 100644 index 0000000..0649bad Binary files /dev/null and b/src/events/_images/2024/m24ber-poster-simple.webp differ diff --git a/src/events/_images/2024/m24ber-poster.webp b/src/events/_images/2024/m24ber-poster.webp new file mode 100644 index 0000000..80d08ea Binary files /dev/null and b/src/events/_images/2024/m24ber-poster.webp differ diff --git a/src/events/_images/2024/m24ber-square.webp b/src/events/_images/2024/m24ber-square.webp new file mode 100644 index 0000000..2d273f6 Binary files /dev/null and b/src/events/_images/2024/m24ber-square.webp differ diff --git a/src/events/_images/2024/m24ber-wide-square.webp b/src/events/_images/2024/m24ber-wide-square.webp new file mode 100644 index 0000000..d20670a Binary files /dev/null and b/src/events/_images/2024/m24ber-wide-square.webp differ diff --git a/src/events/_images/2024/m24ber-wide.webp b/src/events/_images/2024/m24ber-wide.webp new file mode 100644 index 0000000..f79fa74 Binary files /dev/null and b/src/events/_images/2024/m24ber-wide.webp differ diff --git a/src/events/_images/2024/m24tll-poster-simple.webp b/src/events/_images/2024/m24tll-poster-simple.webp new file mode 100644 index 0000000..c717d4d Binary files /dev/null and b/src/events/_images/2024/m24tll-poster-simple.webp differ diff --git a/src/events/_images/2024/m24tll-poster.webp b/src/events/_images/2024/m24tll-poster.webp new file mode 100644 index 0000000..cd30d0e Binary files /dev/null and b/src/events/_images/2024/m24tll-poster.webp differ diff --git a/src/events/_images/2024/m24tll-square.webp b/src/events/_images/2024/m24tll-square.webp new file mode 100644 index 0000000..0370c70 Binary files /dev/null and b/src/events/_images/2024/m24tll-square.webp differ diff --git a/src/events/_images/2024/m24tll-wide-square.webp b/src/events/_images/2024/m24tll-wide-square.webp new file mode 100644 index 0000000..27bc753 Binary files /dev/null and b/src/events/_images/2024/m24tll-wide-square.webp differ diff --git a/src/events/_images/2024/m24tll-wide.webp b/src/events/_images/2024/m24tll-wide.webp new file mode 100644 index 0000000..8bf7d33 Binary files /dev/null and b/src/events/_images/2024/m24tll-wide.webp differ diff --git a/src/events/_images/2024/s24brn-poster-simple.webp b/src/events/_images/2024/s24brn-poster-simple.webp new file mode 100644 index 0000000..d82732f Binary files /dev/null and b/src/events/_images/2024/s24brn-poster-simple.webp differ diff --git a/src/events/_images/2024/s24brn-poster.webp b/src/events/_images/2024/s24brn-poster.webp new file mode 100644 index 0000000..7da6e6f Binary files /dev/null and b/src/events/_images/2024/s24brn-poster.webp differ diff --git a/src/events/_images/2024/s24brn-square.webp b/src/events/_images/2024/s24brn-square.webp new file mode 100644 index 0000000..3de9c90 Binary files /dev/null and b/src/events/_images/2024/s24brn-square.webp differ diff --git a/src/events/_images/2024/s24brn-wide-square.webp b/src/events/_images/2024/s24brn-wide-square.webp new file mode 100644 index 0000000..13965b9 Binary files /dev/null and b/src/events/_images/2024/s24brn-wide-square.webp differ diff --git a/src/events/_images/2024/s24brn-wide.webp b/src/events/_images/2024/s24brn-wide.webp new file mode 100644 index 0000000..ac8c9f1 Binary files /dev/null and b/src/events/_images/2024/s24brn-wide.webp differ diff --git a/src/events/_images/2024/s24prg-poster-simple.webp b/src/events/_images/2024/s24prg-poster-simple.webp new file mode 100644 index 0000000..fb489f1 Binary files /dev/null and b/src/events/_images/2024/s24prg-poster-simple.webp differ diff --git a/src/events/_images/2024/s24prg-poster.webp b/src/events/_images/2024/s24prg-poster.webp new file mode 100644 index 0000000..859dd68 Binary files /dev/null and b/src/events/_images/2024/s24prg-poster.webp differ diff --git a/src/events/_images/2024/s24prg-square.webp b/src/events/_images/2024/s24prg-square.webp new file mode 100644 index 0000000..1259c3d Binary files /dev/null and b/src/events/_images/2024/s24prg-square.webp differ diff --git a/src/events/_images/2024/s24prg-wide-square.webp b/src/events/_images/2024/s24prg-wide-square.webp new file mode 100644 index 0000000..48b8320 Binary files /dev/null and b/src/events/_images/2024/s24prg-wide-square.webp differ diff --git a/src/events/_images/2024/s24prg-wide.webp b/src/events/_images/2024/s24prg-wide.webp new file mode 100644 index 0000000..448209a Binary files /dev/null and b/src/events/_images/2024/s24prg-wide.webp differ diff --git a/src/events/index.yaml b/src/events/index.yaml index 174b06b..2d7315a 100644 --- a/src/events/index.yaml +++ b/src/events/index.yaml @@ -101,6 +101,8 @@ speakers: - odysseas - mykola-siusko + design: + image: athens01 # - id: w3pm-lib1 # type: meetup @@ -153,6 +155,8 @@ speakers: - mykola-siusko - gabari + design: + image: amsterdam01 - id: m24tll issue: 10 @@ -167,6 +171,8 @@ optional: true links: rsvp: https://lu.ma/w3pn-meetup-tallinn1 + design: + image: tallinn01 - id: m24opo issue: 21 @@ -201,6 +207,8 @@ links: rsvp: https://lu.ma/w3pn-meetup-berlin1 signal: https://signal.group/#CjQKIHv5swzLDOrTd1QqR4L9eb-6XPZERnp3ZEoxBCJeY12fEhAPmoC2dqZzLMRWV7wlAq5A + design: + image: berlin02 - id: s24prg issue: 11 @@ -223,6 +231,8 @@ - gabari - radek-svarz - mykola-siusko + design: + image: summit02 - id: h24ble issue: 7 @@ -396,6 +406,8 @@ - mykola-siusko - pg - tree + design: + image: brno01 - id: c24brn issue: 24 diff --git a/utils/engine.js b/utils/engine.js index e4dcbab..0149aa6 100644 --- a/utils/engine.js +++ b/utils/engine.js @@ -34,7 +34,7 @@ export class Engine { if (await exists(join(dir, "index.yaml"))) { const out = await readYamlFile(join(dir, "index.yaml")); if (opts.loader === "events") { - // check speaker connection + // check speaker connection & load event images for (const ev of out) { if (ev.speakers) { for (const spId of ev.speakers) { @@ -43,6 +43,21 @@ export class Engine { } } } + // load events images + const year = ev.date.match(/^(\d{4})/)[1]; + const yearDir = join(dir, '_images', year); + if (!await exists(yearDir)) { + continue + } + const images = {} + for await (const ie of Deno.readDir(yearDir)) { + const [id, ext] = ie.name.split("."); + if (id.match(new RegExp(`^${ev.id}-`))) { + const imgName = id.split('-').slice(1).join('-') + images[imgName] = `https://data.web3privacy.info/img/events/${year}/${id}.${ext}`; + } + } + ev.images = images } } return out; @@ -55,6 +70,7 @@ export class Engine { images.push({ id, ext }); } } + const arr = []; for await (const dirEntry of Deno.readDir(dir)) { const [fn, ext] = dirEntry.name.split("."); @@ -109,6 +125,12 @@ export class Engine { join(DEST_DIR, "img", "people"), ); + // copy event images + await copy( + join(SRC_DIR, "events", "_images"), + join(DEST_DIR, "img", "events"), + ); + await writeJSONFile( join(DEST_DIR, "index.json"), Object.assign({}, this.rendered), diff --git a/utils/images.js b/utils/images.js new file mode 100644 index 0000000..b1b0e2d --- /dev/null +++ b/utils/images.js @@ -0,0 +1,61 @@ +import { Engine } from "./engine.js"; +import { join } from "https://deno.land/std@0.208.0/path/mod.ts"; +import { exists } from "https://deno.land/std@0.213.0/fs/exists.ts"; + +const engine = new Engine(); +await engine.init(); + +async function genImage (destFn, url, element) { + + console.log(`Getting ${url} (${element}) (dest=${destFn})`) + const file = await fetch("https://html2svg.gwei.cz", { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + url, + element, + format: 'webp', + scale: 4, + }) + }); + + if (file.body) { + const fileOutput = await Deno.open(destFn, { write: true, create: true }); + await file.body.pipeTo(fileOutput.writable); + console.log(`File written: ${destFn}`) + } +} + +// events +const DEST_DIR = './src/events/_images'; +const eventFormats = [ + 'square', + 'wide-square', + 'wide', + 'poster', + 'poster-simple' +] + +for(const event of engine.rendered.events) { + if (!event.design) { + continue + } + const year = event.date.match(/^(\d{4})/)[1] + const design = event.design + for (const format of eventFormats) { + + const destFn = join(DEST_DIR, year, `${event.id}-${format}.webp`); + if (await exists(destFn)) { + console.log(`${destFn} existing, skipping ..`) + continue; + } + + await genImage( + destFn, + `https://beta.web3privacy.info/gen/event?id=${event.id}&image=${design.image}`, + `#img-${format}` + ); + } +} \ No newline at end of file