Animation: das MP4 landet auch in Downloads, wie die Bilder

Der Export legte die Datei nur unter animation/ im Repo ab. Die Bilder gehen
seit jeher nach ~/Downloads, und von dort laedt man hoch -- ein Video an einem
anderen Ort ist eine Inkonsequenz, die man erst merkt, wenn man es sucht.

Jetzt beides: Downloads zum Hochladen, animation/ zum Versionieren. Wie beim
Bildexport wird in Downloads nichts ueberschrieben, eine zweite Ausgabe heisst
"-1" -- eine Datei, die vielleicht schon hochgeladen wurde, gehoert nicht
ersetzt.

Der Weg ueber die Kommandozeile schreibt weiterhin nur ins Repo.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
dejanandClaude Opus 5 committed 2026-08-25 23:55:55 +02:00
1 parent c7c05a85cc
commit 9e8b2ea607
3 files changed
+24 -4

No files matched your search

+17 -3
View File
@@ -23,6 +23,7 @@ import http.server
import json
import os
import re
import shutil
import socketserver
import subprocess
import threading
@@ -320,9 +321,22 @@ def _anim_lauf(kennung, projekt, key):
melden(laeuft=False, fehler="kein MP4 entstanden")
return
groesse = ziel.stat().st_size
melden(laeuft=False, pfad="animation/" + ziel.name,
groesse=f"{groesse/1024/1024:.1f} MB", zeile="fertig")
print(f"Animation gebaut: {ziel.name} ({groesse/1024/1024:.1f} MB)")
# Zum Hochladen liegt die Datei am selben Ort wie die Bilder. Im Repo
# bleibt sie trotzdem: dort ist sie versioniert und hat auf der anderen
# Maschine nach einem Pull denselben Stand. Ueberschrieben wird in
# Downloads nichts, genau wie beim Bildexport -- eine Datei, die
# vielleicht schon hochgeladen wurde, gehoert nicht ersetzt.
TARGET.mkdir(parents=True, exist_ok=True)
abgabe = TARGET / ziel.name
n = 1
while abgabe.exists():
abgabe = TARGET / f"{ziel.stem}-{n}{ziel.suffix}"
n += 1
shutil.copy2(ziel, abgabe)
melden(laeuft=False, pfad="~/Downloads/" + abgabe.name,
groesse=f"{groesse/1024/1024:.1f} MB · auch animation/{ziel.name}",
zeile="fertig")
print(f"gespeichert: {abgabe} ({groesse/1024/1024:.1f} MB)")
except FileNotFoundError:
melden(laeuft=False, fehler="node nicht gefunden")
except Exception as e: # der Faden darf den Server nicht mitnehmen