ebastler
Volt-Modder(in)
Hilfe bei Skript für Fotodownload von GoPro (Linux)
Hallo,
ich muss momentan bei meinem Praktikum ein Skript schreiben, das automatisch alle Fotos von einer GoPro auf einen Linux-Rechner lädt. An sich kein Problem, wofür gibt es Linux Shell Skripts, und die klassischen Tools wie wget:
Der Befehl prüft alle .JPG auf der Kamera und lädt nur die, die er noch nicht am Rechner hat, in das angegebene Verzeichnis.
So weit so gut.
Nun soll das Skript aber bei einem Timelapse (10s Pause zwischen zwei Bildern) auf der GoPro immer das aktuellste Foto laden. Bis zu ca. 100 Fotos geht es gut, danach verschluckt es sich. Grund: wget scannt mir alle .JPG Dateien erstmal durch. Es lädt zwar nicht die komplette Datei an sich, aber ab 100 Bildern wird es schon so langsam, dass ein Download >10s dauert, und dann zwei Bilder direkt hintereinander geladen werden. Was nicht akzeptabel ist, da immer das aktuellste Bild auf einer Leinwand gezeigt werden soll.
Meine Idee war, das log von wget auszunutzen, daraus dann alle bereits geprüften Adressen (und damit alle schon geladenen Bilder) zu extrahieren und diese dann aus dem Scannen auszuschließen:
Dieser Codeabschnitt (in google gefunden und etwas an meine Bedürfnisse angepasst) kriegt das auch sauber hin, mir alle bereits geladenen Adressen als Komma-getrennte Liste abzuspeichern, aber ich kriege es nicht hin, diese aus wget auszunehmen.
Ich arbeite seit genau 3 Tagen mit Linux Shell Skripts, entsprechend gering sind auch meine Kenntnisse damit. Es reicht aus, mir per Copy-Paste von Beispielen etwas zusammenzustellen und an meine Bedürfnisse anzupassen, und auch mal einige einfachere Zeilen selbst zu schreiben, aber manchmal laufe ich einfach gegen eine Wand.
Kann mir da jemand von euch ein Wenig weiterhelfen?
Wäre wirklich nett!
Ach ja, die GoPro soll am Ende bei einer Veranstaltung mit einem Heliumballon über der Menschenmenge schweben und alle 10s ein Foto aufzeichnen, das den Leuten unten auf einem großen Monitor gezeigt wird.
lg
Moritz
EDIT: Ach ja, das ganze Skript lasse ich einfach in einer Endlosschleife laufen, bis es manuell unterbrochen wird, per ctrl-C. Nicht elegant, aber es funktioniert ganz gut, wie ich festgestellt habe. Naja, bis ~100 Fotos eben.
Hallo,
ich muss momentan bei meinem Praktikum ein Skript schreiben, das automatisch alle Fotos von einer GoPro auf einen Linux-Rechner lädt. An sich kein Problem, wofür gibt es Linux Shell Skripts, und die klassischen Tools wie wget:
Code:
wget -r -nd -A JPG -S -N -P /home/euracluna/gopro/fotos http://10.5.5.9:8080/videos/DCIM/100GOPRO/ -o log
Der Befehl prüft alle .JPG auf der Kamera und lädt nur die, die er noch nicht am Rechner hat, in das angegebene Verzeichnis.
So weit so gut.
Nun soll das Skript aber bei einem Timelapse (10s Pause zwischen zwei Bildern) auf der GoPro immer das aktuellste Foto laden. Bis zu ca. 100 Fotos geht es gut, danach verschluckt es sich. Grund: wget scannt mir alle .JPG Dateien erstmal durch. Es lädt zwar nicht die komplette Datei an sich, aber ab 100 Bildern wird es schon so langsam, dass ein Download >10s dauert, und dann zwei Bilder direkt hintereinander geladen werden. Was nicht akzeptabel ist, da immer das aktuellste Bild auf einer Leinwand gezeigt werden soll.
Meine Idee war, das log von wget auszunutzen, daraus dann alle bereits geprüften Adressen (und damit alle schon geladenen Bilder) zu extrahieren und diese dann aus dem Scannen auszuschließen:
Code:
empfangen=$(egrep -e "--" log |cut -d ' ' -f 4 | tr '\n' ',')
Dieser Codeabschnitt (in google gefunden und etwas an meine Bedürfnisse angepasst) kriegt das auch sauber hin, mir alle bereits geladenen Adressen als Komma-getrennte Liste abzuspeichern, aber ich kriege es nicht hin, diese aus wget auszunehmen.
Ich arbeite seit genau 3 Tagen mit Linux Shell Skripts, entsprechend gering sind auch meine Kenntnisse damit. Es reicht aus, mir per Copy-Paste von Beispielen etwas zusammenzustellen und an meine Bedürfnisse anzupassen, und auch mal einige einfachere Zeilen selbst zu schreiben, aber manchmal laufe ich einfach gegen eine Wand.
Kann mir da jemand von euch ein Wenig weiterhelfen?
Wäre wirklich nett!
Ach ja, die GoPro soll am Ende bei einer Veranstaltung mit einem Heliumballon über der Menschenmenge schweben und alle 10s ein Foto aufzeichnen, das den Leuten unten auf einem großen Monitor gezeigt wird.
lg
Moritz
EDIT: Ach ja, das ganze Skript lasse ich einfach in einer Endlosschleife laufen, bis es manuell unterbrochen wird, per ctrl-C. Nicht elegant, aber es funktioniert ganz gut, wie ich festgestellt habe. Naja, bis ~100 Fotos eben.