Autoupdate lo sfondo del desktop da una webcam fotografica online

0

Vorrei impostare lo sfondo del desktop su un'immagine della webcam che si aggiorna diverse volte all'ora, ad esempio a questo vista di Tegernsee . Sto cercando un modo per ottenere automaticamente quell'immagine ogni due minuti da internet e aggiornare lo sfondo del desktop. Come posso farlo (preferirei una soluzione bash o applescript)?

    
posta mach 08.10.2015 - 21:05
fonte

2 risposte

1

Ho trovato un modo per farlo funzionare con launchd. Ciò richiede due passaggi: la prima creazione di uno script che scarica l'immagine della webcam e la seconda creazione di un file plist LaunchAgent che chiamerà lo script ogni tanto.

Questo metodo aggiornerà l'immagine di sfondo di uno spazio specifico, ma solo mentre ci si trova in quello spazio (anche quando si effettua l'accesso e magari quando si riattiva dallo stato di sospensione).

Primo passo: creazione di uno script che scarica l'immagine e cambia lo sfondo del desktop

  1. Crea una cartella, ad es. ~/Library/Desktop Pictures/Webcam .
  2. Seleziona quella cartella come cartella degli sfondi del desktop in Preferenze di Sistema → Destkop & Screen Saver.
  3. Scrivi un file di testo con il seguente contenuto:

    #!/bin/bash
    shopt -s extglob # required for fancy rm
    # This script updates the desktop background of a specific Space to a webcam picture
    # while you are currently on that space.
    #
    # Choose a webcam:
    
    remotepic=http://www.foto-webcam.org/webcam/wallberg/current/full.jpg
    
    # Choose a desktop backgrounds pictures folder of the Space where you want to see the webcam
    # (you have to set this manually in System Preferences → Destkop & Screen Saver):
    
    webcampicturefolder=~/Library/Desktop\ Pictures/Webcam
    
    # check the desktop background pictures folder of the current Space
    currentpicturefolder='osascript -e "tell application \"System Events\" to get pictures folder of current desktop"'
    # only proceed if you are currently on the space where you want to see the webcam
    if [ "$currentpicturefolder" == "$webcampicturefolder" ] ; then
      localpic="$webcampicturefolder"/$(date +%Y%m%dT%H%M%S).jpg
      backup="$webcampicturefolder"/backup.jpg
      #remove all but the previous backup file and txt files:
      rm "$webcampicturefolder"/!(*txt|'basename "$backup"') 2>>/dev/null
      # get the new picture unless there is a connection failure (-f flag):
      curl -fs -o "$localpic" "$remotepic"
      # make a backup of the new picture:
      cp "$localpic" "$backup" 2>>/dev/null
      # if no new picture has been downloaded, copy from backup:
      cp "$backup" "$localpic"
      # see http://www.macosxautomation.com/applescript/features/system-prefs.html
      osascript -e "
      tell application \"System Events\"
        tell current desktop
          set picture rotation to 0
          set picture to POSIX file \"$localpic\"
        end tell
      end tell
      "
    fi
    
  4. Salva il file, ad es. come ~/Library/Desktop Pictures/Webcam/getwebcam.sh

  5. Rendilo eseguibile emettendo il seguente comando nel Terminale:

    chmod u+x ~/Library/Desktop Pictures/Webcam/getwebcam.sh
    

Secondo passaggio: creazione di un plist LaunchAgent che chiama lo script

  1. Scrivi un file di testo con il seguente contenuto. È necessario adattare la stringa /Users/myusername/Library/Desktop Pictures/Webcam/getwebcam.sh in modo che punti allo script creato nel primo passaggio. Non puoi utilizzare un percorso relativo con ~ . Cambia gli elementi dict con il tasto "Minuto" come meglio credi - puoi aggiungerne altri. Il numero intero determina in quale minuto di ogni ora verrà chiamato lo script (consulta anche man launchd.plist sul tuo terminale).

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>Label</key>
      <string>me.myname.update-desktop-from-webcam</string>
      <key>ProgramArguments</key>
      <array>
        <string>/Users/myusername/Library/Desktop Pictures/Webcam/getwebcam.sh</string>
      </array>
      <key>RunAtLoad</key>
      <true/>
      <key>StartCalendarInterval</key>
      <array>
        <dict>
          <key>Minute</key>
          <integer>01</integer>
        </dict>
        <dict>
          <key>Minute</key>
          <integer>16</integer>
        </dict>
        <dict>
          <key>Minute</key>
          <integer>31</integer>
        </dict>
        <dict>
          <key>Minute</key>
          <integer>46</integer>
        </dict>
      </array>
    </dict>
    </plist>
    
  2. Salva il file di testo in ~/Library/LaunchAgents/me.myname.update-desktop-from-webcam.plist - il nome deve corrispondere alla chiave "Etichetta" nel file.

  3. Caricalo emettendo il seguente comando:

    launchctl load ~/Library/LaunchAgents/me.myname.update-desktop-from-webcam.plist
    
risposta data 09.10.2015 - 17:17
fonte
0

Potresti provare VideoWall HD , disponibile per US $ 1,99 in l'App Store.

Non lo uso da solo, ma ho un amico a Portland a cui piace. Lei non usa una web-cam, ma questa funzionalità è propagandata nelle informazioni sullo splash di App Store.

    
risposta data 08.10.2015 - 21:46
fonte

Leggi altre domande sui tag