Hallo Meteorkamera-Besitzer,
obwohl ich das eigentlich gar nicht so gut kann, habe ich heute (mit etwas Hilfe von ChatGPT) mal ein Script zur automatischen Erstellung von Meteor-Animationen erstellt.
Das Script macht folgendes:
1) Es führt im aktuellsten (=zuletzt erstellten) "CapturedFiles"-Ordner die Umwandlung der von der Fireball-Detection erstellten FR-Dateien in mp4-Dateien durch
2) Es legt im Ordner "recent fireballs" auf dem Desktop des Pis einen Unterorder mit Datum an und verschiebt alle so erstellten mp4-Dateien dorthin. Wenn der Ordner "recent fireballs" noch nicht existiert, wird er angelegt.
Es werden 2 Dateien benötigt:
1) ein python-Script, das nennen wir fireballs.py und kommt in den Ordner /home/pi :
# -*- coding: utf-8 -*-
import os
import subprocess
import shutil
import datetime
# Pfad zum Hauptverzeichnis
main_directory = "/home/pi/Desktop/RMS_data/CapturedFiles"
# Liste aller Unterverzeichnisse im Hauptverzeichnis
subdirectories = [d for d in os.listdir(main_directory) if os.path.isdir(os.path.join(main_directory, d))]
# Sortiere die Unterverzeichnisse nach Datum (neuestes zuerst)
subdirectories.sort(key=lambda x: os.path.getctime(os.path.join(main_directory, x)), reverse=True)
# Nimm das neueste Unterverzeichnis
if subdirectories:
latest_directory = os.path.join(main_directory, subdirectories[0])
# Generiere den Befehl yum Erstellen vom mp4/Dateien im neuesten Verzeichnis
command = f"python -m Utils.FRbinViewer {latest_directory} -f mp4 -a"
# Führe den Befehl aus
subprocess.run(command, shell=True)
# Erstelle ein Datum im Format "YYYY-MM-DD"
current_date = datetime.datetime.now().strftime("%Y-%m-%d")
# Pfad zum Desktop-Ordner
desktop_directory = os.path.expanduser("~/Desktop")
# Pfad zum Zielordner "recent Fireballs"
target_directory = os.path.join(desktop_directory, "recent fireballs")
# Pfad zum Unterordner mit dem aktuellen Datum
date_directory = os.path.join(target_directory, current_date)
# Überprüfe, ob der Zielordner "recent fireballs" existiert. Wenn nicht, lege ihn an.
if not os.path.exists(target_directory):
os.mkdir(target_directory)
# Überprüfe, ob der Unterordner mit dem aktuellen Datum existiert. Wenn nicht, lege ihn an.
if not os.path.exists(date_directory):
os.mkdir(date_directory)
# Liste aller MP4-Dateien im neuesten Verzeichnis
mp4_files = [f for f in os.listdir(latest_directory) if f.endswith(".mp4")]
# Verschiebe die neuesten MP4-Dateien kleiner als 1 MB in den Unterordner
for mp4_file in mp4_files:
source_path = os.path.join(latest_directory, mp4_file)
target_path = os.path.join(date_directory, mp4_file)
# Überprüfe die Dateigröße
if os.path.getsize(source_path) < 1024 * 1024: # Kleiner als 1 MB (1 MB = 1024 * 1024 Bytes)
shutil.move(source_path, target_path)
print("Neueste MP4-Dateien kleiner als 1 MB wurden erfolgreich kopiert.")
else:
print("Keine Unterverzeichnisse gefunden.")
Alles anzeigen
Die Option "kleiner als 1MB" verhindert, dass das Tages-Timelapse mit kopiert wird.
Auf dem Desktop legen wir uns dann noch ein Shellscript an, was das Fireball-Erstellungs-Script ausführt. Das nennen wir z.B. "fireballs.sh":
#!/bin/bash
cd ~/source/RMS
source ~/vRMS/bin/activate
python3 /home/pi/fireballs.py
Beide Dateien müssen natürlich noch ausführbar gemacht werden. Und fertig ist die Laube!
Ein Doppelklick auf "fireballs.sh" legt jetzt mundgerecht nach Datum sortierte Fireball-Filmchen im Ordner "recent fireballs" ab.
Gruß, Jochen
PS: wer Fehler findet, darf sie selbstverständlich behalten!