MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Little magic mirror (but not a mirror)

    Scheduled Pinned Locked Moved Show your Mirror
    10 Posts 7 Posters 3.7k Views 9 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D Offline
      djgigabit @SJK
      last edited by

      @SJK Oh nice, thank you! This is going to be helpful. The Fully browser I was trying to use didn’t like the webview version and there was no way to update on the Kindle or the Nexus 7 I was attempting to use so this is good info, thanks!

      S 1 Reply Last reply Reply Quote 0
      • H Offline
        harney
        last edited by

        very cool use of broken gadgets. less for landfill and looks awesome

        1 Reply Last reply Reply Quote 0
        • S Offline
          SJK @djgigabit
          last edited by

          @djgigabit Here is my (sanatized) version of the index.js file from the web-to-kindle:

          const express = require('express');
          const path = require('path');
          const puppeteer = require('puppeteer');
          const execFile = require('child_process').execFile;
          const fs = require('fs');
          
          const PORT = process.env.PORT || 3000;
          
          express()
            .use(express.static(path.join(__dirname, 'public')))
            .set('views', path.join(__dirname, 'views'))
            .set('view engine', 'ejs')
            .get('/', async (req, res) => {
              const browser = await puppeteer.launch({ 
                  executablePath: '/bin/chromium-browser'
                  });
              const page = await browser.newPage();
              await page.setViewport({ width: 600, height: 800 });
              await page.goto(process.env.SCREENSHOT_URL || '<web address of magicmirror>');
          
              await new Promise(r => setTimeout(r, 3000));
          
              await page.screenshot({
                path: '/home/<user>/screenshot.png',
              });
          
              await browser.close();
          
              await convert('/home/<user>/screenshot.png');
              screenshot = fs.readFileSync('/home/<user>/screenshot.png');
          
              res.writeHead(200, {
                'Content-Type': 'image/png',
                'Content-Length': screenshot.length,
              });
              return res.end(screenshot);
            })
            .listen(PORT, () => console.log(`Listening on ${PORT}`));
          
          
          function convert(filename) {
            return new Promise((resolve, reject) => {
              const args = [filename, '-gravity', 'center', '-negate', '-extent', '600x800', '-colorspace', 'gray', '-depth', '6', '-alpha', 'remove', '-level', '50x100%', filename];
              execFile('convert', args, (error, stdout, stderr) => {
                if (error) {
                  console.error({ error, stdout, stderr });
                  reject();
                } else {
                  resolve();
                }
              });
            });
          }
          

          This is where I added the pause before it captures the screenshot. I also had to change the puppeteer.launch command as it was not a happy bunny running on a headerless server.

          1 Reply Last reply Reply Quote 1
          • kayakbabeK Offline
            kayakbabe @SJK
            last edited by

            @SJK this is very cool! This method could be used for an eInk type display. It’s really making me think those old pi zeros could be very useful again.

            1 Reply Last reply Reply Quote 0
            • E Offline
              esamecar @SJK
              last edited by

              This post is deleted!
              1 Reply Last reply Reply Quote 0
              • 1 / 1
              • First post
                Last post
              Enjoying MagicMirror? Please consider a donation!
              MagicMirror created by Michael Teeuw.
              Forum managed by Sam, technical setup by Karsten.
              This forum is using NodeBB as its core | Contributors
              Contact | Privacy Policy