SMT-WebServices Logo

Welcome to the Void

Wie aus einer einfachen Idee drei Anläufe und ein ziemlich umfangreiches Softwareprojekt wurden

Die ursprüngliche Idee war eigentlich überschaubar: Musik aus YouTube-Playlists herunterladen, korrekt identifizieren, mit brauchbaren Metadaten versehen und als ordentlich strukturierte Alben auf dem eigenen Rechner ablegen.

Was zunächst nach einer relativ einfachen Aufgabe klingt, wird spätestens dann kompliziert, wenn YouTube der Meinung ist, dass ein Album aus Musikvideos, Interviews, Konzertmitschnitten und einem vollständigen Albumvideo bestehen sollte. Oder wenn Künstlernamen, Titel und Veröffentlichungsdaten je nach Quelle unterschiedlich ausfallen.

Die ersten beiden Anläufe scheiterten letztlich an genau solchen Problemen.

Die erste Version entstand im September 2025 als Desktop-Anwendung mit Tkinter und einer recht umfangreichen Suchlogik. Trotz verschiedener Suchstrategien und der Auswertung von Google und YouTube Music gelang es ihr nicht, zuverlässig vollständige Alben zu erzeugen.

Der zweite Anlauf setzte auf FastAPI und Vue.js, brachte aber ebenfalls nicht den gewünschten Erfolg. Unter anderem führte die Fehlinterpretation eines Datenfeldes von yt-dlp zu einer ganzen Reihe von Korrekturen, die regelmäßig neue Fehler verursachten.

Im September 2026 folgte deshalb ein vollständiger Neustart. Diesmal nicht auf Grundlage der bisherigen Implementierungen, sondern auf Grundlage einer systematischen Untersuchung ihrer Fehler und der tatsächlichen Daten, die YouTube und die verwendeten Werkzeuge bereitstellen.

Das Ergebnis wurde zunächst unter dem Namen ytAlbum entwickelt und mit Version 1.0.0 in NOAAP – Not Officially An Audio Player umbenannt.

Der Name ist dabei durchaus Programm: Musik abspielen kann die Software inzwischen zwar auch, ihre eigentliche Aufgabe ist jedoch die Beschaffung, Aufbereitung und konsistente Verwaltung digitaler Musiksammlungen.

Was NOAAP macht

NOAAP führt Musik aus unterschiedlichen Quellen in einer einheitlich verwalteten Bibliothek zusammen. Dazu gehören YouTube, SoundCloud und Patreon ebenso wie bereits vorhandene Musiksammlungen auf lokalen Datenträgern oder einem NAS.

Die Software versucht, aus oft unvollständigen oder widersprüchlichen Angaben zuverlässig Künstler, Titel, Alben und Veröffentlichungen zu identifizieren. Dazu kombiniert sie Informationen aus den ursprünglichen Quellen mit Musikdatenbanken wie MusicBrainz.

Audiodaten werden nach Möglichkeit ohne erneute Kodierung übernommen, mit Metadaten und Coverbildern versehen und in einer nachvollziehbaren Verzeichnisstruktur abgelegt. Liedtexte können ergänzt und bei entsprechender Datenlage auch zeitlich mit den Aufnahmen synchronisiert werden.

Besonderen Wert lege ich auf den Umgang mit Unsicherheiten und widersprüchlichen Informationen. Metadaten behalten ihre Herkunft, manuelle Korrekturen haben Vorrang vor automatisch ermittelten Werten, und Entscheidungen, die sich nicht zuverlässig automatisieren lassen, werden dem Benutzer überlassen.

Eine Weboberfläche dient dabei nicht nur der Verwaltung und Überprüfung der Sammlung, sondern ermöglicht auch die unmittelbare Korrektur von Metadaten, Tracklisten, Audioschnitten und Liedtexten.

Technische Basis

NOAAP ist überwiegend in Python entwickelt und besitzt sowohl eine Kommandozeilenschnittstelle als auch eine browserbasierte Benutzeroberfläche.

Zu den wesentlichen technischen Komponenten gehören:

Die Weboberfläche verwendet native JavaScript-Module. Auf einen zusätzlichen JavaScript-Buildprozess und ein umfangreiches Frontend-Framework wird in der aktuellen Implementierung verzichtet.

Ein wesentlicher Bestandteil der Architektur ist die Trennung zwischen automatisch ermittelten Informationen und manuellen Änderungen. Änderungen an einer Bibliothek werden nach Möglichkeit zunächst geplant und überprüfbar gemacht, bevor sie tatsächlich ausgeführt werden. Bestehende Musiksammlungen sollen dabei nicht leichtfertig verändert werden.

Entwicklung mit künstlicher Intelligenz

NOAAP ist nicht nur ein Werkzeug zur Musikverwaltung, sondern zugleich ein praktisches Experiment zur KI-gestützten Softwareentwicklung.

Alle drei Generationen wurden unter Einsatz von KI-Coding-Assistenten entwickelt. Dabei übernehme ich die fachliche und technische Verantwortung, während ein erheblicher Teil der Implementierungsarbeit durch KI-Agenten erfolgt.

Neben der eigentlichen Software beschäftige ich mich dabei mit der Frage, in welchem Umfang und unter welchen Voraussetzungen sich Entwicklungsaufgaben sinnvoll automatisieren und an autonome Systeme delegieren lassen.

Die dabei eingesetzten Verfahren befinden sich in fortlaufender Entwicklung. Neue Modellgenerationen, veränderte Fähigkeiten und die Erfahrungen aus der praktischen Anwendung erfordern eine regelmäßige Anpassung der Vorgehensweise.

NOAAP bietet mir dafür ein reales, hinreichend komplexes Anwendungsfeld, in dem sich Möglichkeiten und Grenzen dieser Arbeitsweise unmittelbar beobachten lassen.

Technische Qualitätssicherung

Die automatisierte Qualitätssicherung basiert auf pytest und einer umfangreichen Sammlung aufgezeichneter Quelldaten. Damit lassen sich große Teile der Anwendung reproduzierbar und ohne laufenden Zugriff auf externe Dienste testen.

Die JavaScript-Komponenten der Weboberfläche werden zusätzlich mit dem integrierten Test-Runner von Node.js geprüft. Gemeinsame Testfälle kontrollieren, dass fachliche Regeln in Backend und Frontend nicht auseinanderlaufen.

Über GitHub Actions werden diese Tests bei Änderungen am Repository automatisiert ausgeführt.

Ergänzend existieren dokumentierte manuelle Prüfverfahren für komplexe Abläufe, insbesondere dort, wo mehrere Komponenten zusammenwirken oder Änderungen an bestehenden Musikdateien vorgenommen werden.

Gerade diese Verbindung aus automatisierten Tests, reproduzierbaren Eingangsdaten, dokumentierten Architekturentscheidungen und praktischer Validierung ist ein zentraler Bestandteil des Projekts.

Open Source

NOAAP wird unter der MIT-Lizenz veröffentlicht.

Die Entwicklung ist öffentlich dokumentiert; der Quellcode, die technische Dokumentation und die Tests sind auf GitHub verfügbar.

Aktuelles Projekt: https://github.com/smtws/noaap

Archiviertes Vorgänger-Repository: https://github.com/smtws/ytalbum