folder Filed in Bonn, IT, Medien, Netz
Powershell für Webcam-Timelapse nutzen
Sebastian Eckert comment 2 Comments

Mir kam die Idee, ein Timelapse-Video einer öffentlichen Webcam zu machen. Leider scheinen die Webcam-Bilder nicht in einem zugänglichen Ordner abgespeichert zu werden, sodass man auf einen Schlag alle Bilder hätte abgreifen können, und sie  und nicht alle zwei Minuten händisch abspeichern muss.

Denn: Stattdessen wird das Bild unter dem immergleichen Dateinamen abgespeichert. Das hat einen Vorteil, denn schnell lässt sich so ein Skript schreiben, dass man anschließend über die Aufgabenplanung des jeweiligen Betriebssystems abspeichern kann.

Da ich derzeit keinen eigenen Apache-Server oder einen PIE zur Hand habe und auf dem Netbook kein Xampp dauerhaft laufen will, musste man sich eben mit Bordmitteln behelfen. Unter Linux wäre es etwa cron und PHP,  was eher einfach ist umsetzbar ist.

Bei Windows dachte ich daher zuerst an eine Batch-Datei. Leider scheitert der xcopy-Befehl an mangelndem HTTP-Zugriff.

Also die Powershell

Zugegeben, Powershell war nicht meine erste Wahl. Das Skript war zwar recht schnell geschrieben:

$source = “http://www.SEITE.de/BILD.jpg”
$destination = “D:\ZIELORDNER $(get-date -f yyyy-MM-dd-hh-mm-ss).jpg”
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source, $destination)

$userAgent = “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2;)”
$wc = New-Object System.Net.WebClient
$wc.Headers.Add(“user-agent”, $userAgent)

Dank des $get-Date Befehls wurde die Datei gleich unter einem neuen Namen abgelegt, auch wenn die Urzeiten seltsamerweise im 12h Format abgelegt werden…

Aber das Skript zum Laufen zu bringen, dafür musste man erst einmal eine nichtsignierte Ausführung erlauben…

Set-ExecutionPolicy RemoteSigned

(Unter dem Surface scheiterte die Ausführung leider, da Windows RT nicht eine vollwertige Powershell besitzt und mit Hinweis auf Sprachprobleme nur “Kernaufgaben” zulässt und diese Arbeit verweigert…)

In der Aufgabenplanung wurden anschließend eine neue Aufgabe angelegt, die das Skript ausführt. Und zwar alle zwei Minuten für drei Monate.

Das gestaltete sich etwas hakelig, da man erst die Powershell starten musste, dann über & command “PFAD/Skript.ps1” das Skript übergeben musste.

Jetzt wird alle zwei Minuten ein Bild gespeichert. Und in wenigen Wochen ist das Timelapse-Projekt dann beendet…

##

Kleiner Nachtrag: Am Besten bei der Aufgabenplanung die Shell im System Account laufen lassen. Sonst nervt minütlich ein Fenster der Aufgabenplanung, daran ändert auch der -WindowStyle Hidden Befehl für Powershell nichts.

Oder den Befehl in einen versteckten VB-Skriptdummy packen, der dann ohne Fenster ausgeführt wird.

Bilder Bilder speichern fester Dateiname Powershell Programm Timelapse Webcam Zeitraffer

Leave a Reply to SE Cancel reply

Your email address will not be published. Required fields are marked *

Cancel Post Comment

  1. Pingback: Timothy