-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
64 lines (54 loc) · 1.72 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
const puppeteer = require('puppeteer');
const ejs = require('ejs');
const path = require('path');
// Ignoriraj prva dva entry-ja argv
// (format je`[interpreter, path do skripte, ...argumenti]`)
// i uzmi parametre u obliku
// `$BROJ_PREDAVANJA $NASLOV_PREDAVANJA_KOJI_MOŽE_SADRŽATI_SPACE`
const [, , numRaw, ...titles] = process.argv;
// Dodaj 0 na početak dvoznamenkastog broja
const num = numRaw.padStart(2, '0');
// Spoji dijelove naslova u jedan (ako je naslov dan bez navodnika)
const title = titles.join(' ');
// Path to templejta (kinda html fajla koji će se renderat)
const templatePath = path.join(__dirname, "./page.ejs");
// Path gdje će se spremiti screenshot
const screenshotPath = path.join(__dirname, "out", `${num}.png`);
(async () => {
// Renderaj template u html string
const content = await ejs.renderFile(
templatePath,
// Varijable koje se mogu koristiti u template-u (imeUTemplate: vrijednost)
{
num: num,
title: title,
},
// crna magija
{
async: true,
}
);
// Pokreni novu instancu browsera (run chrome.exe)
const browser = await puppeteer.launch({ headless: true });
// Inicijaliziraj novu stranicu
const page = await browser.newPage();
// Postavi sadržaj stranice na gore renderan string
// (basically otvori ovo što se gore renderalo)
await page.setContent(
content,
{
waitUntil: 'networkidle2',
},
);
// Postavi rezoluciju browsera na 1920x1080
await page.setViewport({
width: 1920,
height: 1080,
});
// Lupi screenshot i spremi ga na `screenshotPath`
await page.screenshot({
path: screenshotPath,
});
// Bivaj pristojna skripta i klikni iksić na virtualnom browseru
await browser.close();
})();