diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2024-03-31 19:33:10 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2024-03-31 19:33:16 +0300 |
| commit | dc9b4e6af1b6b90c0e69fec1e2499ab8548d9347 (patch) | |
| tree | bd1c6a0478aa1ec5077cf1cad0c7f4d77ab6489b /src | |
| parent | a14845b885c0f36800db0aa7e05968e87bc16485 (diff) | |
Share browser instance
Diffstat (limited to 'src')
| -rw-r--r-- | src/browser.ts | 13 | ||||
| -rw-r--r-- | src/instagram_task.ts | 7 | ||||
| -rw-r--r-- | src/tiktok_task.ts | 7 |
3 files changed, 17 insertions, 10 deletions
diff --git a/src/browser.ts b/src/browser.ts new file mode 100644 index 0000000..b09d167 --- /dev/null +++ b/src/browser.ts @@ -0,0 +1,13 @@ +import puppeteer, { Browser } from "puppeteer"; + +let _browser: Browser | undefined = undefined; + +export const getBrowser = async () => { + if (!_browser || !_browser.connected) { + _browser = await puppeteer.launch({ + headless: false, + args: ["--shm-size=1gb"], + }); + } + return _browser; +}; diff --git a/src/instagram_task.ts b/src/instagram_task.ts index bea1e38..4e31518 100644 --- a/src/instagram_task.ts +++ b/src/instagram_task.ts @@ -1,6 +1,7 @@ import fs from "fs"; import puppeteer, { TimeoutError } from "puppeteer"; import { wait } from "./utils"; +import { getBrowser } from "./browser"; export interface InstagramTask { type: "download_instagram"; @@ -10,10 +11,7 @@ export interface InstagramTask { } export const runDownloadInstagramTask = async (task: InstagramTask) => { - const browser = await puppeteer.launch({ - headless: false, - args: ["--shm-size=1gb"], - }); + const browser = await getBrowser(); const page = await browser.newPage(); const client = await page.createCDPSession(); await client.send("Page.setDownloadBehavior", { @@ -126,6 +124,5 @@ export const runDownloadInstagramTask = async (task: InstagramTask) => { await task.respondWithFile(`./downloads/${downloadedFile}`); } finally { await page.close(); - await browser.close(); } }; diff --git a/src/tiktok_task.ts b/src/tiktok_task.ts index f9099b4..7e85c5c 100644 --- a/src/tiktok_task.ts +++ b/src/tiktok_task.ts @@ -1,6 +1,7 @@ import fs from "fs"; import puppeteer, { TimeoutError } from "puppeteer"; import { wait } from "./utils"; +import { getBrowser } from "./browser"; export interface TikTokTask { type: "download_tiktok"; @@ -10,10 +11,7 @@ export interface TikTokTask { } export const runDownloadTiktokTask = async (task: TikTokTask) => { - const browser = await puppeteer.launch({ - headless: false, - args: ["--shm-size=1gb"], - }); + const browser = await getBrowser(); const page = await browser.newPage(); const client = await page.createCDPSession(); await client.send("Page.setDownloadBehavior", { @@ -127,6 +125,5 @@ export const runDownloadTiktokTask = async (task: TikTokTask) => { await task.respondWithFile(`./downloads/${downloadedFile}`); } finally { await page.close(); - await browser.close(); } }; |
