NEWS
Puppeteer: Screenshots PhantomJS Alternative
-
Aktuelle Test Version 0.1.0 Veröffentlichungsdatum 16.05.2021 Github Link https://github.com/foxriver76/ioBroker.puppeteer Hallo zusammen,
ich habe vor kurzem einen neuen Adapter geschrieben, der ebenso wie PhantomJS Screenshots von diversen Webseiten machen kann. Hauptmotivation war, dass PhantomJS (nicht Adapter sondern Browser selbst) nicht mehr weiterentwickelt wird. Puppeteer stellt hier eine super Alternative dar um Chrome Browser zu steuern.
Der Adapter bringt einen Browser selbst mit, somit muss sich um keine separate Installation gekümmert werden. Bislang arbeitet der Adapter ähnlich wie der PhantomJS Adapter, nur mit States und Messages. Er hat demnach keine Admin UI.
Eine Anleitung findet ihr in der README: https://github.com/foxriver76/ioBroker.puppeteer#how-to
Mittels Messages habe ich das ganze sehr offen gehalten, so dass jegliche Optionen direkt an die Puppeteer API weitergereicht werden und ihr nicht durch den Adapter limitiert werdet. Siehe https://github.com/foxriver76/ioBroker.puppeteer#messages
Der Adapter sollte spätestens morgen im Latest Repository verfügbar sein, bzw. ab sofort per GitHub.
Ich freue mich auf Feedback.
beste Grüße
fox
-
Falls das hier jemand nutzt, gerne mal Feedback geben. Evtl. fehlt euch ja noch etwas, oder Dinge funktionieren nicht so schön wie in Phantomjs? Oder ihr möchtet die Screenshots als Binary States oder als Files direkt im ioBroker Storage speichern?
Wenn da Bedarf ist, gerne Bescheid geben.
beste Grüße
fox
-
@foxriver76
Hallo, so ganz verstehe ich den Zweck des Adapters nicht -
@sigi234 Screenshots von diversen Webseiten (z. B. Grafana Dashboards) erstellen, Hauptanwendungsfall ist für viele wohl sich Visualisierungen in Form von Bildern via Mail/Telegram o.ä. zu senden.
-
@foxriver76 sagte in Puppeteer: Screenshots PhantomJS Alternative:
oder als Files direkt im ioBroker Storage speichern?
das wäre cool
-
@foxriver76 sagte in Puppeteer: Screenshots PhantomJS Alternative:
(z. B. Grafana Dashboards)
und dann mit FTP auf den ext. Webspace schicken. So mach ichs für meine Wetterstation.
-
Mit 0.2.0 ist es nun möglich, die Screenshots direkt in den ioBroker Storage (0_userdata.0 aka Benutzerdaten) zu speichern. Diese können dann im Admin unter Dateien oder mit diversen Visu Adaptern direkt aufgerufen werden. Hierzu müsst ihr aktuell Messages nutzen, was für den Adapter allgemein die mächtigere Option ist.
Die Message müssen dazu um das Attribut
ioBrokerOptions.storagePath
erweitert werden. Hier könnt ihr dann z. B.screenshots/grafana-${new Date().toLocaleString()}.png
angeben. Ein Message Beispiel findet ihr auch unter https://github.com/foxriver76/ioBroker.puppeteer#messages oder in kurz:sendTo('puppeteer.0', 'screenshot', { url: 'https://www.google.com', ioBrokerOptions: { /** * Define a filename for the ioBroker storage */ storagePath: `screenshots/grafana-${new Date().toLocaleString()}.png` }, /** * Define at most one wait option * You can also look for other waitOptions currently supported by Puppeteer API * see e.g. https://puppeteer.github.io/puppeteer/docs/puppeteer.page.waitforfilechooser */ waitOption: { /** * Define a Timeout in ms */ waitForTimeout: 1000, } }, obj => { if (obj.error) { log(`Error taking screenshot: ${obj.error.message}`, 'error'); } else { // the binary representation of the image is contained in `obj.result` log(`Sucessfully took screenshot: ${obj.result}`); } });
-
@foxriver76 hab ich etwas vergessen, Adapter installiert, jedoch danach im log
host.IoBroker 2022-06-08 21:45:45.782 error instance system.adapter.puppeteer.0 terminated with code 6 (UNCAUGHT_EXCEPTION) puppeteer.0 2022-06-08 21:45:45.006 warn Terminated (UNCAUGHT_EXCEPTION): Without reason puppeteer.0 2022-06-08 21:45:45.004 info terminating puppeteer.0 2022-06-08 21:45:44.922 error Failed to launch the browser process!/opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directoryTROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md puppeteer.0 2022-06-08 21:45:44.920 error Error: Failed to launch the browser process!/opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directoryTROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md at onClose (/opt/iobroker/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:241:20) at Interface.<anonymous> (/opt/iobroker/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:231:68) at Interface.emit (events.js:412:35) at Interface.close (readline.js:530:8) at Socket.onend (readline.js:254:10) at Socket.emit (events.js:412:35) at endReadableNT (internal/streams/readable.js:1333:12) at processTicksAndRejections (internal/process/task_queues.js:82:21) puppeteer.0 2022-06-08 21:45:44.917 error unhandled promise rejection: Failed to launch the browser process!/opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directoryTROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md puppeteer.0 2022-06-08 21:45:44.913 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). puppeteer.0 2022-06-08 21:45:44.836 info starting. Version 0.2.0 in /opt/iobroker/node_modules/iobroker.puppeteer, node: v14.19.3, js-controller: 4.0.23
-
@crunchip zeig mal Output von
ldd chrome | grep not
-
@foxriver76 sagte in Puppeteer: Screenshots PhantomJS Alternative:
ldd chrome | grep not
root@IoBroker:/opt/iobroker# ldd chrome | grep not ldd: ./chrome: Datei oder Verzeichnis nicht gefunden
edit
nicht so tragisch, muss morgen früh wieder raus, ich mach für heute Feierabend -
@crunchip
ldd /opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome | grep not
-
@foxriver76 melde mich heut Nachmittag
@foxriver76 Ausgabe lautet
root@IoBroker:/opt/iobroker# ldd /opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome | grep not libnss3.so => not found libnssutil3.so => not found libsmime3.so => not found libnspr4.so => not found libgbm.so.1 => not found
-
@crunchip Bitte probier mal 0.2.1 und wie läuft denn ioBroker bei dir? Debian VM?
-
@foxriver76 ja, ist einen Debian VM(bullseye)
hab jetzt die v0.2.1 aus dem Repo geladen, bleibt aber dabeihost.IoBroker 2022-06-10 19:13:50.560 error instance system.adapter.puppeteer.0 terminated with code 6 (UNCAUGHT_EXCEPTION) puppeteer.0 2022-06-10 19:13:49.818 warn Terminated (UNCAUGHT_EXCEPTION): Without reason puppeteer.0 2022-06-10 19:13:49.816 info terminating puppeteer.0 2022-06-10 19:13:49.787 error Failed to launch the browser process!TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md puppeteer.0 2022-06-10 19:13:49.786 error Error: Failed to launch the browser process!TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md at onClose (/opt/iobroker/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:241:20) at ChildProcess.<anonymous> (/opt/iobroker/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:232:79) at ChildProcess.emit (events.js:412:35) at Process.ChildProcess._handle.onexit (internal/child_process.js:285:12) puppeteer.0 2022-06-10 19:13:49.784 error unhandled promise rejection: Failed to launch the browser process!TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md puppeteer.0 2022-06-10 19:13:49.782 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). puppeteer.0 2022-06-10 19:13:49.712 info starting. Version 0.2.1 in /opt/iobroker/node_modules/iobroker.puppeteer, node: v14.19.3, js-controller: 4.0.23
-
@foxriver76 sagte in Puppeteer: Screenshots PhantomJS Alternative:
@crunchip
ldd /opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome | grep not
Zeig jetzt nochmal das.
-
@foxriver76 auch unverändert
root@IoBroker:~# ldd /opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome | grep not libnss3.so => not found libnssutil3.so => not found libsmime3.so => not found libnspr4.so => not found libgbm.so.1 => not found root@IoBroker:~#
-
Auch der root muss die libnss3 / libnspr4 / libgbm1 installiert haben.
-
@thomas-braun des sagst du kann ja nix herbei zaubern, wo sollten die denn liegen?
root@IoBroker:~# ls -la /opt/iobroker/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/ insgesamt 364472 drwxrwxrwx+ 7 iobroker iobroker 4096 8. Jun 21:36 . drwxrwxrwx+ 3 iobroker iobroker 4096 8. Jun 21:36 .. -rwxr-xr-x+ 1 iobroker iobroker 325132000 8. Jun 21:36 chrome -rw-r--r--+ 1 iobroker iobroker 634900 8. Jun 21:36 chrome_100_percent.pak -rw-r--r--+ 1 iobroker iobroker 955808 8. Jun 21:36 chrome_200_percent.pak -rwxr-xr-x+ 1 iobroker iobroker 1870168 8. Jun 21:36 chrome_crashpad_handler -rwxr-xr-x+ 1 iobroker iobroker 349488 8. Jun 21:36 chrome_sandbox -rwxr-xr-x+ 1 iobroker iobroker 5087 8. Jun 21:36 chrome-wrapper drwxr-xr-x+ 3 iobroker iobroker 4096 8. Jun 21:36 ClearKeyCdm -rw-r--r--+ 1 iobroker iobroker 10404784 8. Jun 21:36 icudtl.dat -rwxr-xr-x+ 1 iobroker iobroker 406904 8. Jun 21:36 libEGL.so -rwxr-xr-x+ 1 iobroker iobroker 9044984 8. Jun 21:36 libGLESv2.so -rwxr-xr-x+ 1 iobroker iobroker 6194712 8. Jun 21:36 libvk_swiftshader.so -rwxr-xr-x+ 1 iobroker iobroker 911200 8. Jun 21:36 libvulkan.so.1 drwxr-xr-x+ 2 iobroker iobroker 4096 8. Jun 21:36 locales drwxrwxrwx+ 2 iobroker iobroker 4096 8. Jun 21:36 MEIPreload -rwxr-xr-x+ 1 iobroker iobroker 4477352 8. Jun 21:36 nacl_helper -rwxr-xr-x+ 1 iobroker iobroker 9880 8. Jun 21:36 nacl_helper_bootstrap -rwxr-xr-x+ 1 iobroker iobroker 3933576 8. Jun 21:36 nacl_irt_x86_64.nexe -rw-r--r--+ 1 iobroker iobroker 2531 8. Jun 21:36 product_logo_48.png drwxr-xr-x+ 3 iobroker iobroker 4096 8. Jun 21:36 resources -rw-r--r--+ 1 iobroker iobroker 7988530 8. Jun 21:36 resources.pak drwxrwxrwx+ 2 iobroker iobroker 4096 8. Jun 21:36 swiftshader -rw-r--r--+ 1 iobroker iobroker 731008 8. Jun 21:36 v8_context_snapshot.bin -rw-r--r--+ 1 iobroker iobroker 107 8. Jun 21:36 vk_swiftshader_icd.json -rwxr-xr-x+ 1 iobroker iobroker 37394 8. Jun 21:36 xdg-mime -rwxr-xr-x+ 1 iobroker iobroker 33273 8. Jun 21:36 xdg-settings
-
Zeig mal bitte Log vom Update auf 0.2.1
-
Ich weiß ja nicht ob die Intention von @foxriver76 ist die libs selber mitzubringen, aber die sind systemweit in den genannten Paketen drin.
apt policy libnss3 libnspr4 libgbm1