Was Zoom Henker?

export files from zoom without folders

Gleich wieder meine WAV Files aus 100 verschiedenen Zoom-Folders zusammensuchen, gar kein Bock! Sind wir ehrlich, niemand hat Lust, die dutzenden ZOOM00X Ordner durchzugehen, nur um an die Audiodateien zu kommen. Dank dem Zoom-Grabber musst du das in Zukunft auch nicht mehr tun!

Wie funktioniert’s?

Um die Seite zu nutzen, musst du zuerst all deine Files von Zoom auf deinen PC laden. Anschliessend erstellst du aus allen Ordnern, die eine Audiodatei enthalten, ein ZIP. Das Programm sucht in deinem ZIP nach allen WAV Dateien. Ganz egal, wie viele Unterordner das ZIP hat. Deine ZIPs können also folgende Strukturen haben:

Mögliche ZIP Strukturen

Anschliessend gehst du auf zoom.haemmerli.io und lädst dort die ZIP Datei hoch. Nach einem Klick auf «Upload» sucht die Seite alle deine WAV Dateien im hochgeladenen ZIP und erstellt daraus ein neues ZIP. Je nach Grösse deiner Audiodateien kann das einige Sekunden dauern.

Sobald die neue Datei erstellt wurde, siehst du einen Download-Button. Klick drauf und dein frisch generiertes ZIP mit all deinen WAV Files wird heruntergeladen.

Was passiert mit meinen Daten?

Alle hochgeladenen und generierten Dateien werden zu jeder 10. Minute unwiderruflich gelöscht. Die Seite steht auf einem Server von Hostpoint, deine Files bleiben also alle in der Schweiz. Zudem verfügt die Webseite über ein SSL Zertifikat, sodass deine Daten auch während dem Hoch- und Runterladen safe sind.

Happy zooming!

(hil)

Idee

Als ich 86 ZOOM00X Ordner sah und ich alles andere lieber gemacht hätte, als diese Ordner alle durchzugehen, dachte ich mir: Digezz-Projekt! Zuerst wollte ich eine Script für Windows und macOS schreiben, merkte dann aber bald, dass da die Benutzerfreundlichkeit nicht wirklich gegeben ist. Auch wenns für die Umsetzung um einiges einfacher gewesen wär, entschied ich mich also gegen ein lokales Script. Stattdessen wurde es, wie man jetzt sieht, eine Web-Applikation.

Herangehensweise

Ich skizzierte zuerst in meinem Notizbuch den Ablauf, der zum einen die Nutzer:in machen wird und zum anderen den, der das Programm durchlaufen wird. Anschliessend zeichnete ich ein detaillierteres Sequenz- und Ablaufdiagramm mit draw.io, damit ich bei der Umsetzung genau wusste, auf was ich achten musste.

Nachdem ich meinen Schlachtplan hatte, ging’s an die Umsetzung. Ich programmierte die Seite mit HTML, CSS und PHP.

Das ist mir gelungen

Da ich mir im Vorfeld intensiv Gedanken dazu gemacht habe, wie mein Programm funktioniert, gab es bei der Umsetzung selbst keine grossen Probleme. Es war dann mehr noch ein Malen nach Zahlen. Die Diagramme, die ich gezeichnet habe, halfen dabei sehr.

Das werde ich das nächste mal besser machen

Keinen grossen Fokus habe ich hingegen auf das User Interface gelegt. Es ist relativ simpel gestaltet und nicht sehr attraktiv.
Doch ein Punkt, der tatsächlich zu Problemen führen könnte, ist die Art und Weise, wie die hochgeladenen, temporären Dateien wieder vom Server gelöscht werden. Dazu habe ich nämlich ein Cron Job errichtet, der zu jeder 10. Minute, also 10ab, 20ab, 30ab usw., das tmp/ Verzeichnis entfernt und ein neues tmp/ Verzeichnis erstellt. Das führt dazu, dass ein:e Nutzer:in um 09ab mit dem Upload beginnen könnte und während der Upload stattfindet, die Dateien wieder gelöscht werden.

Zwar habe ich einen Algorithmus eingebaut, der das Löschen des tmp Directory während einem Durchlauf des Programms verhindert. Wenn das Programm jedoch genau um z.B. H:09:59 fertig ist, wird diese Blockade wieder aufgehoben, der tmp Ordner wird um 10nach entfernt und die Nutzer:in kann sein erstelltes ZIP nicht downloaden und muss den Vorgang nochmals starten.

Das ist, salopp gesagt, sehr unsexy. Stattdessen müsste ein Script geschrieben werden, dass nur Dateien löscht, die älter als X Minuten sind. Somit wäre die Datei in jedem Fall 10 Minuten downloadbar.