added base files, plus og experiment node script that uses commonjs not modules
This commit is contained in:
		
							parent
							
								
									c295818039
								
							
						
					
					
						commit
						040346126c
					
				| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
const puppeteer = require("puppeteer");
 | 
			
		||||
const { scrollPageToBottom } = require("puppeteer-autoscroll-down");
 | 
			
		||||
const express = require("express");
 | 
			
		||||
 | 
			
		||||
const app = express();
 | 
			
		||||
 | 
			
		||||
const folderToServe = "/Users/tarasis/Programming/websites/rmcg.dev/www/";
 | 
			
		||||
 | 
			
		||||
let dynamicPort = 6100;
 | 
			
		||||
 | 
			
		||||
app.get("/screenshot", async (req, res) => {
 | 
			
		||||
    //pretend generated html
 | 
			
		||||
    const dynamicPage = express();
 | 
			
		||||
    // console.log("🚀 ~ app.get ~ dynamicPage:", dynamicPage);
 | 
			
		||||
    const currentDynamicPort = dynamicPort++;
 | 
			
		||||
    console.log("🚀 ~ app.get ~ currentDynamicPort:", currentDynamicPort);
 | 
			
		||||
    dynamicPage.use(
 | 
			
		||||
        // express.static("/Users/tarasis/Programming/websites/rmcg.dev/www")
 | 
			
		||||
        express.static(folderToServe)
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    const dynamicServer = dynamicPage.listen(currentDynamicPort, async () => {
 | 
			
		||||
        console.log(
 | 
			
		||||
            `Dynamic server is running at http://localhost:${currentDynamicPort}`
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        const browser = await puppeteer.launch();
 | 
			
		||||
        // console.log("🚀 ~ dynamicServer ~ browser:", browser)
 | 
			
		||||
        const page = await browser.newPage();
 | 
			
		||||
        // await page.goto(req.query.url); // URL is given by the "user" (your client-side application)
 | 
			
		||||
        await page.goto(`http://localhost:${currentDynamicPort}`); // URL is given by the "user" (your client-side application)
 | 
			
		||||
 | 
			
		||||
        await page.waitForResponse((response) => response.status() === 200);
 | 
			
		||||
        await scrollPageToBottom(page);
 | 
			
		||||
        const screenshotBuffer = await page.screenshot({ fullPage: true });
 | 
			
		||||
 | 
			
		||||
        // Respond with the image
 | 
			
		||||
        res.writeHead(200, {
 | 
			
		||||
            "Content-Type": "image/png",
 | 
			
		||||
            "Content-Length": screenshotBuffer.length,
 | 
			
		||||
        });
 | 
			
		||||
        res.end(screenshotBuffer);
 | 
			
		||||
        // other option is just to save the file to disk
 | 
			
		||||
        // await page.screenshot({ path: 'example.png' });
 | 
			
		||||
        // Close the browser
 | 
			
		||||
 | 
			
		||||
        await browser.close();
 | 
			
		||||
        console.log(
 | 
			
		||||
            `Closing dynamic server http://localhost:${currentDynamicPort}`
 | 
			
		||||
        );
 | 
			
		||||
        await dynamicServer.close();
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
app.listen(4000, () => {
 | 
			
		||||
    console.log("opened server on 4000");
 | 
			
		||||
});
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
{
 | 
			
		||||
  "name": "motivational-picture-generator",
 | 
			
		||||
  "version": "1.0.0",
 | 
			
		||||
  "description": "A project to learn NodeJS, ExpressJS, and whatever else along the way.",
 | 
			
		||||
  "main": "index.mjs",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "test": "echo \"Error: no test specified\" && exit 1"
 | 
			
		||||
  },
 | 
			
		||||
  "keywords": [],
 | 
			
		||||
  "author": "",
 | 
			
		||||
  "license": "ISC",
 | 
			
		||||
  "type": "Modules",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "dotenv": "^16.4.5",
 | 
			
		||||
    "express": "^4.18.3",
 | 
			
		||||
    "puppeteer": "^22.4.0",
 | 
			
		||||
    "puppeteer-autoscroll-down": "^2.0.0"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue