mirror of
https://github.com/LukeHagar/unicorn-utterances.git
synced 2025-12-06 04:21:55 +00:00
improve puppeteer performance, change screenshots to (smaller) jpg
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -18,5 +18,6 @@ pnpm-debug.log*
|
|||||||
# macOS-specific files
|
# macOS-specific files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.idea/
|
.idea/
|
||||||
.eslintcache
|
.eslintcache
|
||||||
.vercel
|
.vercel
|
||||||
|
.puppeteer
|
||||||
|
|||||||
@@ -14,21 +14,61 @@ import { Layout } from "./base";
|
|||||||
let browser: puppeteer.Browser;
|
let browser: puppeteer.Browser;
|
||||||
let page: puppeteer.Page;
|
let page: puppeteer.Page;
|
||||||
|
|
||||||
|
const browser_args = [
|
||||||
|
"--autoplay-policy=user-gesture-required",
|
||||||
|
"--disable-background-networking",
|
||||||
|
"--disable-background-timer-throttling",
|
||||||
|
"--disable-backgrounding-occluded-windows",
|
||||||
|
"--disable-breakpad",
|
||||||
|
"--disable-client-side-phishing-detection",
|
||||||
|
"--disable-component-update",
|
||||||
|
"--disable-default-apps",
|
||||||
|
"--disable-dev-shm-usage",
|
||||||
|
"--disable-domain-reliability",
|
||||||
|
"--disable-extensions",
|
||||||
|
"--disable-features=AudioServiceOutOfProcess",
|
||||||
|
"--disable-hang-monitor",
|
||||||
|
"--disable-ipc-flooding-protection",
|
||||||
|
"--disable-notifications",
|
||||||
|
"--disable-offer-store-unmasked-wallet-cards",
|
||||||
|
"--disable-popup-blocking",
|
||||||
|
"--disable-print-preview",
|
||||||
|
"--disable-prompt-on-repost",
|
||||||
|
"--disable-renderer-backgrounding",
|
||||||
|
"--disable-setuid-sandbox",
|
||||||
|
"--disable-speech-api",
|
||||||
|
"--disable-sync",
|
||||||
|
"--hide-scrollbars",
|
||||||
|
"--ignore-gpu-blacklist",
|
||||||
|
"--metrics-recording-only",
|
||||||
|
"--mute-audio",
|
||||||
|
"--no-default-browser-check",
|
||||||
|
"--no-first-run",
|
||||||
|
"--no-pings",
|
||||||
|
"--no-sandbox",
|
||||||
|
"--no-zygote",
|
||||||
|
"--password-store=basic",
|
||||||
|
"--use-gl=swiftshader",
|
||||||
|
"--use-mock-keychain",
|
||||||
|
"--disable-web-security",
|
||||||
|
];
|
||||||
|
|
||||||
const createPostSocialPreviewPng = async (layout: Layout, post: PostInfo) => {
|
const createPostSocialPreviewPng = async (layout: Layout, post: PostInfo) => {
|
||||||
if (!browser) {
|
if (!browser) {
|
||||||
browser = await chromium.puppeteer.launch({
|
browser = await chromium.puppeteer.launch({
|
||||||
args: [...chromium.args, "--hide-scrollbars", "--disable-web-security"],
|
args: [...chromium.args, ...browser_args],
|
||||||
defaultViewport: chromium.defaultViewport,
|
defaultViewport: chromium.defaultViewport,
|
||||||
executablePath: await chromium.executablePath,
|
executablePath: await chromium.executablePath,
|
||||||
headless: true,
|
headless: true,
|
||||||
ignoreHTTPSErrors: true,
|
ignoreHTTPSErrors: true,
|
||||||
|
userDataDir: "./.puppeteer",
|
||||||
});
|
});
|
||||||
page = await browser.newPage();
|
page = await browser.newPage();
|
||||||
await page.setViewport(heightWidth);
|
await page.setViewport(heightWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
await page.setContent(await renderPostPreviewToString(layout, post));
|
await page.setContent(await renderPostPreviewToString(layout, post));
|
||||||
return (await page.screenshot()) as Buffer;
|
return (await page.screenshot({ type: "jpeg" })) as Buffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
const build = async () => {
|
const build = async () => {
|
||||||
@@ -47,10 +87,11 @@ const build = async () => {
|
|||||||
const png = await createPostSocialPreviewPng(layout, post);
|
const png = await createPostSocialPreviewPng(layout, post);
|
||||||
|
|
||||||
await fsPromises.writeFile(
|
await fsPromises.writeFile(
|
||||||
resolve(outDir, `${post.slug}.${layout.name}.png`),
|
resolve(outDir, `${post.slug}.${layout.name}.jpg`),
|
||||||
png
|
png
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
console.log(post.slug);
|
||||||
}
|
}
|
||||||
|
|
||||||
await browser.close();
|
await browser.close();
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ const otherLangs = translations
|
|||||||
otherLangs,
|
otherLangs,
|
||||||
currentLang: post.locale,
|
currentLang: post.locale,
|
||||||
}}
|
}}
|
||||||
shareImage={`/generated/${post.slug}.twitter-preview.png`}
|
shareImage={`/generated/${post.slug}.twitter-preview.jpg`}
|
||||||
/>
|
/>
|
||||||
<BlogPost Content={Content} post={post} posts={posts} />
|
<BlogPost Content={Content} post={post} posts={posts} />
|
||||||
</Document>
|
</Document>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ const otherLangs = translations
|
|||||||
otherLangs,
|
otherLangs,
|
||||||
currentLang: post.locale,
|
currentLang: post.locale,
|
||||||
}}
|
}}
|
||||||
shareImage={`/generated/${post.slug}.twitter-preview.png`}
|
shareImage={`/generated/${post.slug}.twitter-preview.jpg`}
|
||||||
/>
|
/>
|
||||||
<BlogPost Content={Content} post={post} posts={posts} />
|
<BlogPost Content={Content} post={post} posts={posts} />
|
||||||
</Document>
|
</Document>
|
||||||
|
|||||||
Reference in New Issue
Block a user