first commit

This commit is contained in:
Vladimir Carrer 2018-12-02 12:06:38 +01:00
parent 314fdd4db4
commit 0a9eba44e5
4 changed files with 130 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

58
README.md Normal file
View File

@ -0,0 +1,58 @@
<h1 align="center"> Screenshoteer </h1>
<p align="center"> Makes web screenshots and mobile emulations from the command line. </p>
<hr/>
<p>Tool based on <a href="https://github.com/GoogleChrome/puppeteer">puppeteer</a>. </p>
<h4>Installation </h4>
```shell
npm i -g screenshoteer
```
<p>You can use screenshoteer like this:</p>
```shell
screenshoteer --url https://www.example.com
```
<p>And with the help of puppeteer(Headless Chrome) it will generate screenshot of the entire web page.</p>
<p>
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
<p>
<h4>Example: </h4>
```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
```
<p> List of of supported mobile devices: https://github.com/GoogleChrome/puppeteer/blob/master/DeviceDescriptors.js
</p>
<h3>License</h3>
This project is licensed under the MIT License

41
index.js Executable file
View File

@ -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()
})()

31
package.json Normal file
View File

@ -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 <vladocar@gmail.com> (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"
}