diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..7d43f2b Binary files /dev/null and b/.DS_Store differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..ace3029 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +

Screenshoteer

+ +

Makes web screenshots and mobile emulations from the command line.

+ +
+ +

Tool based on puppeteer.

+ +

Installation

+ +```shell +npm i -g screenshoteer +``` +

You can use screenshoteer like this:

+ +```shell +screenshoteer --url https://www.example.com +``` + +

And with the help of puppeteer(Headless Chrome) it will generate screenshot of the entire web page.

+ +

+Parameters: + +--url web page url +--emulate - emulate web device example: --emulate "iPhone 6" +--fullpage - can be true or false. It will take screenshot of entire web page if is true. True is the default parameter. +--pdf - generate additional pdf +--w - width of the Web Page in px +--h - height of the Web Page in px + +

+ +

Example:

+ +```shell +screenshoteer --url https://news.ycombinator.com --fullpage false + +screenshoteer --url https://www.reddit.com/r/nodejs --emulate "iPhone 7" + +screenshoteer --url https://www.nytimes.com --emulate "Nexus 4" + +screenshoteer --url https://www.reddit.com/r/javascript/ --w 600 --h 800 --fullpage false + +screenshoteer --url https://www.reddit.com/r/javascript/ --w 600 --h 0 --fullpage false + +screenshoteer --url https://lobste.rs --pdf + +screenshoteer --url https://lobste.rs --w 500 + + +``` +

List of of supported mobile devices: https://github.com/GoogleChrome/puppeteer/blob/master/DeviceDescriptors.js +

+ +

License

+ +This project is licensed under the MIT License diff --git a/index.js b/index.js new file mode 100755 index 0000000..ad05f95 --- /dev/null +++ b/index.js @@ -0,0 +1,41 @@ +#!/usr/bin/env node + +const puppeteer = require('puppeteer') +const devices = require('puppeteer/DeviceDescriptors') +const program = require('commander') + +var urlvalue, emulate = ""; + +program + .option('--url, [url]', 'The url') + .option('--emulate, [emulate]', 'emulate device') + .option('--fullpage, [fullpage]', 'Full Page') + .option('--pdf, [pdf]', 'Generate PDF') + .option('--w, [w]', 'width') + .option('--h, [h]', 'height') + .parse(process.argv); + +if (program.url) urlvalue = program.url +else process.exit(console.log("Please add --url parameter. Something like this: $ screenshoteer --url http:www.example.com")); + + +if (program.fullpage && program.fullpage == "true") fullPage = true +if (program.fullpage && program.fullpage == "false") fullPage = false +else fullPage = true; + +console.log(urlvalue); +console.log(fullPage); + +(async () => { + const browser = await puppeteer.launch() + const page = await browser.newPage() + const d = new Date() + if (program.w && program.h) await page.setViewport({width: Number(program.w), height: Number(program.h)}) + if (program.emulate) await page.emulate(devices[program.emulate]); + await page.goto(urlvalue) + await page.screenshot({path: await page.title() + " " + program.emulate + " " + d.getTime() + '.png', fullPage: fullPage}) + await page.emulateMedia('screen') + if (program.pdf) await page.pdf({ path: await page.title() + " " + program.emulate + " " + d.getTime() + '.pdf' }) + console.log(await page.title()) + await browser.close() +})() diff --git a/package.json b/package.json new file mode 100644 index 0000000..48954dd --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "name": "screenshoteer", + "version": "1.0.0", + "description": "Make screenshots and device emulations form your terminal", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "bin": { + "screenshoteer": "./index.js" + }, + "dependencies": { + "commander": "^2.19.0", + "puppeteer": "^1.10.0" + }, + "keywords": [ + "screenshots", + "emulations", + "mobile" + ], + "author": "Vladimir Carrer (http://www.vcarrer.com)", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/vladocar/screenshoteer.git" + }, + "bugs": { + "url": "https://github.com/vladocar/screenshoteer/issues" + }, + "homepage": "https://github.com/vladocar/screenshoteer#readme" +}