From 9d5aae0a01c61f0d4cff89e10af520eb846aafef Mon Sep 17 00:00:00 2001 From: jysperm Date: Thu, 12 Apr 2018 18:05:16 +0800 Subject: [PATCH] :sparkles: Snapcat by phantomjs --- .leanignore | 6 ++++++ README.md | 3 +++ leanengine.yaml | 3 +++ package.json | 8 ++++++++ phantomjs-web.js | 9 +++++++++ server.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 79 insertions(+) create mode 100644 .leanignore create mode 100644 README.md create mode 100644 leanengine.yaml create mode 100644 package.json create mode 100644 phantomjs-web.js create mode 100644 server.js diff --git a/.leanignore b/.leanignore new file mode 100644 index 0000000..85f9cd3 --- /dev/null +++ b/.leanignore @@ -0,0 +1,6 @@ +.git/ +.DS_Store +.avoscloud/ +.leancloud/ +node_modules/ +screenshot.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..c5caa36 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Snapcat (phantomjs) + +一个使用 phantomjs 的截图服务。 diff --git a/leanengine.yaml b/leanengine.yaml new file mode 100644 index 0000000..aa94221 --- /dev/null +++ b/leanengine.yaml @@ -0,0 +1,3 @@ +systemDependencies: + - phantomjs + - fonts-wqy diff --git a/package.json b/package.json new file mode 100644 index 0000000..c2e3fdf --- /dev/null +++ b/package.json @@ -0,0 +1,8 @@ +{ + "engines": { + "node": "6.x" + }, + "dependencies": { + "phantomjs-prebuilt": "^2.1.14" + } +} diff --git a/phantomjs-web.js b/phantomjs-web.js new file mode 100644 index 0000000..504383a --- /dev/null +++ b/phantomjs-web.js @@ -0,0 +1,9 @@ +var page = require('webpage').create(); +var system = require('system'); + +page.viewportSize = { width: 1440, height: 900 }; + +page.open(system.args[1], function (status) { + page.render(system.args[2], {format: 'png'}); + phantom.exit(); +}); diff --git a/server.js b/server.js new file mode 100644 index 0000000..a42e12b --- /dev/null +++ b/server.js @@ -0,0 +1,50 @@ +var fs = require('fs'); +var url = require('url'); +var phantomjs = require('phantomjs-prebuilt'); + +require('http').createServer(function(req, res) { + const urlInfo = url.parse(req.url, true) + + if (urlInfo.pathname !== '/') { + res.statusCode = 404; + return res.end(); + } + + if (urlInfo.query.url) { + makeScreenshot(urlInfo.query.url, (err, filename) => { + if (err) { + return res.end(err); + } + + fs.readFile(filename, function(err, buffer) { + if (err) { + res.end(err.message); + } else { + res.setHeader('Content-Type', 'image/png'); + res.end(buffer); + } + }) + }); + } else { + res.end('You can visit https://snapcat.leanapp.cn/?url=https://leancloud.cn/docs'); + } +}).listen(3000); + +var counter = 0; + +function makeScreenshot(url, callback) { + const filename = `./${counter++}.png`; + const program = phantomjs.exec('phantomjs-web.js', url, filename); + + program.stdout.pipe(process.stdout); + + var stderr = ''; + + program.stderr.on('data', data => { + stderr += data.toString(); + }); + + program.on('exit', () => { + callback(stderr === '' ? null : stderr, filename); + }); +} pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy