open source Projekte - digitale Unterstützung

Digitale Lösungen mit open source Produkten

erasand - digitale Arbeiten

Aktuelle Projekte


BIM

Entwicklungen, Tests und private Projekte mit BIM

Beruflich benutze ich kommerzielle Software für meine Kunden als BIM-Manager. Privat als erasand beschäftige ich mich mit BIM und dem Fokus von Open-Source Software und Entwicklungen neuer Prozesse. Untenstehend sind meine aktuellen Projekte und deren Ziele.


Da Rafmi

Letztes Frühjahr fragte mich meine Schwester, ob ich ihr und ihrem Mann helfen würde, ihr neues Restaurant zu planen. Ich willigte ein, mit der Bedingung, dass ich den Umbau wie als BIM abwickeln dürfte. Sie stimmten dem zu, sofern es den normalen Planungs- und Ausführungsprozess nicht beeinträchtigen würde. Ich nutze diese Möglichkeit, um zu untersuchen, ob und wie BIM sich für kleine Umbauten lohnt.

Projektstand

Nach Abschluss des Bewilligungsverfahren beginnen jetzt die Ausführungsvorbereitungen. Im gleichen Zuge findet auch Öffentlichkeitsarbeit statt, unter anderem die Homepage von Da Rafmi. Die aktuellen BIM-Modell habe ich auf meiner Webseite publiziert.

Erkenntnisse

  • Mit den Modellen können die Zusammenhänge fundierter und besser verständlich für Nicht-Baufachleute aufgezeigt werden.
  • Die 3D Modelle können mit einem geringen Mehraufwand für Präsentations-Modell weiter verwendet werden.
  • Durch den Einsatz von modellbasierten Informationen sind die gleichen Informationen in verschiedenen Phasen und Plan- Detaillierungen verfügbar. Dies ermöglicht es sehr effizient Dokumente mit aktuellen Änderungen zu produzieren, auch wenn die hauptsächliche Planung abgeschlossen ist.
  • Die Ableitung der Pläne aus dem Modell hat sich als eine sehr effektive Methode herausgestellt. Mit den modellbasierten Informationen muss zum Zeitpunkt der Dokumentenerstellung nur überlegt werden, wie die Informationen dargestellt werden sollen. Die Qualität und Detaillierung des Inhalts wird bestimmt bei der Bearbeitung und Pflege der Bauteildaten.
  • Räumliche Zusammenhänge von mehreren Gewerken lassen sich sehr gut am Modell erklären. Mit dem Einsatz der modellbasierten Arbeitsweise konnte beim Lüftungskonzept dargelegt werden, dass die Fassade nicht tangiert wird.


Bildquelle: www.pixabay.com

DATEI-STRUKTUR WERKZEUGE

Python Tools für die Verwaltung komplexer Datei-Strukturen

Ende 2020 bis Anfang 2021 half ich mit bei der Migration der Daten auf den SharePoint der Büro für Bauökonomie AG. Damit ich die grossen Datenmengen besser erfassen konnte, schrieb ich Hilfsprogramme in Python. Ende 2021 beschloss ich, diese Hilfsprogramme weiter zu entwickeln und alles zu dokumentieren.

Es sind folgende Versionen verfügbar

Weiterentwicklung der Datestruktur Werkzeuge

Dateien und Verzeichnisse gemeinsam umbenennen

Zu lange Dateipfade lokalisieren

Zweite Version mit Grafischer Benutzeroberfläche

Erste Version mit Python zur Erfassung und zum Vergleich grosser Datei-Strukturen


Bildquelle: www.pixabay.com

PYTHON COACH

Coaching und Nachhilfe beim Programmieren

Seit Ende 2020 gebe ich für Python Nachhilfe. Hier eine Referenz der Nachhilfe-Plattform meet'n'learn:

Andreas hat mir bei einem Projekt in der Informatik geholfen. Andreas könnte mir mit seinem enormen Fachwissen (Programmiersprache Python) jederzeit super weiterhelfen. Er war während des ganzen Prozesses sehr geduldig und unterstützend. Nur dank ihm ist es mir gelungen, das Projekt zu realisieren. Ich bin super dankbar für seine geleistete Arbeit und sein grosses Wissen. Der Nachhilfeunterricht war sehr zufriedenstellend. Besten Dank!


Bildquelle: www.hablamos.education

HABLAMOS

Unterstützung für die Spanisch Schule - Zug

Ich supporte die Webseite von Hablamos, einer Spanisch Schule in Zug. Ich unterstütze Marisol Morocho auch in allen digitalen Belangen für die Administration.


Bildquelle: www.pixabay.com

LINUX

Open-Source zu Hause

2010 lernte ich Linux kennen, und seitdem lässt es mich nicht mehr los. Ich schätze die Verfügbarkeit von professioneller quelloffener Software. Ich nutze die Linux-Mint 64-bit Distribution mit dem Mate Desktop.
Hier ein paar hilfreiche Links für den Einstieg:


Bildquelle: www.pixabay.com

ONLINE TURTLE GRAFIKEN

Python Turtles mit Trinket

Ich habe Trinket im Internet entdeckt und ausprobiert. Damit habe ich folgende Grafiken programmiert:


DOKUMENTATION

Hilfen - Anleitungen - nützliche Seiten

INHALT



Bildquelle: www.pixabay.com

DATEISTRUKTUR

Weiterentwicklung der Datei-Struktur Werkzeuge

Die Programme des Projektes dateiSTRUKTUR dienen dazu, Dateistrukturen zu erfassen, zu dokumentieren und zu vergleichen. Sie sind als Kommandozeilen Anwendungen sowie als Desktop Applikation mit einer grafischen Oberfläche verfügbar.

Ablagen, Projekte, Bibliotheken, Sammlungen etc. werden heute vielfach hierarchisch in einer Verzeichnisstruktur mit Dateien aufgebaut. Die Werkzeuge der dateiSTRUKTUR helfen diese zu dokumentieren und miteinander zu vergleichen. Mögliche Anwendungsfälle sind die Datenmigration mehrerer Projekte in ein neues System oder die private Fotosammlung mit Bildern aus mehreren Jahrzehnten.

Bildquelle: erasand.ch

Anwendung

In einem ersten Schritt wird die Dateistruktur erfasst und als JSON Datei abgespeichert. Für die Erfassung müssen die Dateien in einem Laufwerk, Verzeichnis oder Netzlaufwerk zur Verfügung stehen. Cloud-Ablagen werden nicht unterstützt.

Für die Dokumentationen werden die JSON-Dateien neu strukturiert, als JSON-Datei zwischengespeichert und dann als HTML-, Web HTML oder als CSV-Datei ausgegeben.Es wurden bewusst diese beiden Formate gewählt: HTML-Dateien werden von allen gängigen Textverarbeitungen gelesen, mit dem Bootstrap Framework können interaktive HTML Dokumentationen erzeugt werden und alle gängigen Tabellenkalkulationen importieren CSV-Daten.

Zwei Dateistrukturen werden verglichen, indem von diesen die JSON-Dateien als Quell- und als Ziel-Daten für den Vergleich angegeben werden. Die Analyse wird im JSON-Format zwischengespeichert, und von dieser werden wieder HTML-, Web-HTMl- oder CSV-Dateien ausgegeben.

Zur besseren Übersicht wurde die Anwendung mit 2 Applikationen gelöst: erfassen - dokumentieren (dastruge.py) und vergleichen - dokumentieren (dastrugv.py).

Die Benutzeroberfläche ist bei beiden ähnlich gestaltet, deshalb werden beide Applikationen zusammen erklärt.

Bildquelle: erasand.ch

Funktionsübersicht

Modus
Hier wird unterschieden zwischen Dateistrukturen erfassen oder laden.

Verzeichnis (Quell / Ziel) Dateistruktur
Beim Modus erfassen werden hier die Wurzelverzeichnisse der Dateistrukturen angegeben. Es werden alle darin enthaltenen Dateien und Unterverzeichnisse erfasst. Beim Modus laden ist dieser Bereich nicht aktiv.

(Quell / Ziel) JSON Dateistruktur
Beim Modus erfassen werden hier der Speicherort und Namen der JSON-Dateien angegeben. Beim Modus laden werden die zu verwendenden JSON-Dateistrukturen gewählt.

HTML Dokument / Vergleich
Die Angabe, ob eine HTML-Datei erstellt werden soll, der Speicherort und der Name werden hier bestimmt.

Web HTML Dokument / Vergleich
Die Angabe, ob eine Web HTML-Datei mit dem Bootstrap Framework erstellt werden soll. Für die korrekte Darstellung dieser Dokumenten wird zwingend eine Internetverbindugn benötigt. Der Speicherort und der Name werden hier ebenfalls bestimmt.

CSV Tabelle / Vergleich
Ebenso wie bei der HTML-Datei wird hier angegeben, ob, wo und mit welchem Namen die CSV-Datei erstellt werden soll.

Titel / Beschrieb
Die HTML- und CSV-Dateien haben einen eigenen Titel und Beschrieb. Diese werden hier eingegeben.

Erstellen / Vergleich
Mit OK werden die angegebenen Dokumente erstellt.

Öffnen
Von den erstellten HTML- und CSV-Dateien können die Verzeichnisse zum schnellen Auffinden geöffnet werden. In der Auswahlbox rechts wird der gewünschte Datei-Manager für das Öffnen der Dateiverzeichnisse angegeben.

Programm
Info öffnet diese Webseite, Beenden schliesst die Applikation und Fenstergrösse übernehmen, speichert die aktuelle Ausdehnung der Applikation in den Einstellungen.

Übersicht Applikationen

Applikation erfassen - dokumentieren erfassen - vergleichen
Startdatei Linux dastruge.sh dastrugv.sh
Startdatei Windows dastruge.bat dastrugv.bat
Python Modul dastruge.py dastrugv.py
Einstellungsdatei dastruge.json dastrugv.json

Übersicht Anwendung

Anwendung Python-Modul Test-Modul
Dateistruktur erfassen dasterob.py dasterte.py
Erfasste Strukturen für die Ausgabe ordnen dastsoob.py dastsote.py
Geordnete Strukturen als HTML speichern dastshob.py dastshte.py
Geordnete Strukturen als Web-HTML speichern dastsiob.py dastsite.py
Geordnete Strukturen als CSV speichern dastscob.py dastscte.py
Zwei erfasste Strukturen vergleichen dastvgob.py dastvgte.py
Struktur Vergleich als HTML speichern dastvhob.py dastvhte.py
Struktur Vergleich als Web-HTML speichern dastviob.py dastvite.py
Struktur Vergleich als CSV speichern dastvcob.py dastvcte.py
Demonstration der Anwendung im Terminal dastrucm.py --

Weiterführende Informationen

Die Datei dastaldo.txt enthält technische Informationen, in den Python Modulen ist der Code mit Anmerkungen versehen und in den Test-Modulen ist der Aufbau der Daten dokumentiert.

Übersicht In- / Output

Python-Modul Input Output
dasterob.py Verzeichnispfad DATEISTRUKTUR JSON-Datei
dastsoob.py DATEISTRUKTUR JSON-Datei STRUKTURAUSGABE JSON-Datei
dastshob.py STRUKTURAUSGABE JSON-Datei HTML-Datei
dastsiob.py STRUKTURAUSGABE JSON-Datei Web HTML-Datei
dastscob.py STRUKTURAUSGABE JSON-Datei CSV-Datei
dastvgob.py Quell- und Ziel- DATEISTRUKTUR JSON-Dateien VERGLEICHSTRUKTUR JSON-Datei
dastvhob.py VERGLEICHSTRUKTUR JSON-Datei HTML-Datei
dastviob.py VERGLEICHSTRUKTUR JSON-Datei Web HTML-Datei
dastvcob.py VERGLEICHSTRUKTUR JSON-Datei CSV-Datei
dastrucm.py -- Alle oben genannten Formate
Bildquelle: erasand.ch

Systemvoraussetzung

Windows
Unter dem Windows Betriebssystem muss die aktuelle Python Version installiert sein (3.x). Alle benötigten Module sind in der Standardinstallation enthalten.

Linux, Unix, Mac
Unter unixoiden Betriebssystemen muss ebenfalls die aktuelle Python Version (3.x) installiert sein. Das Python-Modul Tkinter muss verfügbar sein.

Download
Die ZIP-Datei des Projektes kann hier heruntergeladen werden:
Download dateiSTRUKTUR

Installation
Die entpackten Dateien und Verzeichnisse in ein Verzeichnis, z.B. DAST, verschieben.

Deinstallation
Die Applikation erzeugt keine Abhängigkeiten im Betriebssystem. Die Verzeichnisse mit den Dateien können einfach entfernt werden.

Quellcode / Lizenz

Der Quellcode ist auf Github öffentlich verfügbar und unterliegt der GPL v3 Lizenz.
Quellcode dateiSTRUKTUR
Wikipedia: GNU General Public License


PYOSDOGU

Datei- / und Verzeichnisnamen gemeinsam umbenennen

Bidquelle: erasand.ch

Anwendung

Verzeichnis wählen
Verzeichnis mit den Dateien auswählen

Dropdwon-Auswahl
Modus der Umbenennung wechseln:
Zeichen ersetzen mit suchen
Zeichen ersetzen am Anfang
Zeichen ersetzen am Ende
Zeichen einfügen am Anfang
Zeichen einfügen am Ende
Anzahl Zeichen löschen vom Anfang
Anzahl Zeichen löschen vom Ende

Eingabefelder
Die Eingabefelder verändern sich je nach Modus:
Zeichen ersetzen: Suchtext und neuer Text
Zeichen einfügen: Position und Text
Zeichen löschen: Position und Anzahl Zeichen

Umbenennen
Auswahl umbenennen: Ausgewähltes Element umbenennen
Doppelklick auf ein Element: Wie Auswahl umbenennen
Alle umbenennen: Alle Elemente umbenennen

Beenden
Anwendung schliessen

Bidquelle: erasand.ch

Installation

Voraussetzungen
Python 3: Python.org
Tkinter: Muss als Python Modul verfügbar sein - Bei der Windows Installation enthalten, bei Linux per Paketverwaltung

Download
Mit folgendem Link das ZIP herunterladen: pyosdogu-main.zip

Installation
Die Dateien pyosDOGU.py und pyosDOGU.json in ein Verzeichnis kopieren - Bei Linux und Unix pyosDOGU.py ausführbar machen

Ausführung
pyosDOGU.py starten

Quellcode
Github: pyosDOGU

Bidquelle: erasand.ch

Einstellungen

p>yosDOGU.json
JSON-Datei mit Einstellungen, Formatierung und Schreibweise einhalten

"GUI Fenster": "800x600" 800 ist die Breite und 600 die Höhe in Pixel - Die Breite und Höhe darf verändert werden

Falls die Einstellungsdatei nicht vorhanden ist, wird diese erzeugt


PYOSDPLP

Zu lange Dateipfade lokalisieren

Bildquelle: erasand.ch

Anwendung

Pfadläne ändern
Die erlaubte Anzahl der Zeichen im Pfad angeben

Verzeichnis wählen
Das Stammverzeichnis der Datei-Struktur wählen - Die Struktur wird automatisch analysiert und das Ergebnis wird in der Liste angezeigt

Pfad öffnen
Öffnet das ausgewählte Element der Liste im Dateimanager

Doppelklick auf ein Element in der Liste
Wie Pfad öffnen

Auswahl unten links
Dateimanger wählen um die Pfade zu öffnen, je nach Betriebssystem variiert die Auswahl

Beenden
Anwendung schliessen

Bildquelle: erasand.ch

Installation

Voraussetzungen
Python 3: Python.org
Tkinter: Muss als Python Modul verfügbar sein - Bei der Windows Installation enthalten, bei Linux per Paketverwaltung)

Download
Mit folgendem Link das ZIP herunterladen: pyosdplp-main.zip

Installation
Die Dateien pyosDPLP.py und pyosDPLP.json in ein Verzeichnis kopieren - Bei Linux und Unix pyosDPLP.py ausführbar machen

Ausführung
pyosDPLP.py starten

Quellcode
Github: pyosDPLP

Bildquelle: erasand.ch

Einstellungen

p>pyosDPLP.json
JSON-Datei mit Einstellungen, Formatierung und Schreibweise einhalten

"Filemanager": "X) Thunar" Dateimanager zum Pfade öffnen - Dies kann im Programm bearbeitet werden

"GUI Fenster": "800x600" 800 ist die Breite und 600 die Höhe in Pixel - Die Breite und Höhe darf verändert werden

"max Pfad": 240 Maximale Pfadlänge - Dies kann im Programm bearbeitet werden

Falls die Einstellungsdatei nicht vorhanden ist, wird diese erzeugt


Bildquelle: erasand.ch

PYOSV2

Version mit Grafischer Benutzeroberfläche

Die Python Scripte von pyOsV2 sind eine Weiterentwicklung der pyOsTools mit grafischer Oberfläche

Bildquelle: erasand.ch

Einstellungen

einstPyOsV2.py
Mit einem Texteditor bearbeitbar

DC_DIRS
Python Wörterbuch mit den zu erfassenden Dateistrukturen
Schlüssel: ID als Text
Wert: 3'er Tupel mit Verzeichnispfad, Pfad JSON-Datei, Pfad HTML-Datei
{ "ID" : ( "/pfad/pfad" , "/pfad/quelle.json" , "/pfad/dokumentation.html" ) , ..}

DC_COMP
Python Wörterbuch mit dem die erfassten Dateistrukturen verglichen und das Ergebnis abgelegt werden
Schlüssel: ID als Text
Wert: 3'er Tupel mit dem Quell-Pfad JSON-Datei, Ziel-Pfad JSON-Datei, Unterschiede-Pfad JSON-Datei
{ "ID" : ( "/pfad/quelle.json" , "/pfad/ziel.json" , "pfad/unterschiede.json" ) , ..}

LS_AUSNAHMEN
Liste mit Dateien, welche nicht berücksichtigt werden
[ "datei1.erw" , "datei2" , .. ]

LS_AUSN_START
Liste mit Dateianfängen, welche nicht berücksichtigt werden
[ "Anf1" , "Anf2" , .. ]

LS_AUSN_ENDE
Liste, mit Dateiendungen, welche nicht berücksichtigt werden
[ ".Erw1" , ".Erw2" , .. ]

TXT_FILEMAN
Textangabe des zu verwendenden Dateimanagers
"WINDOWS", "THUNAR", "NAUTILUS", "NEMO"

Bildquelle: erasand.ch

Dateistrukturen erfassen

Register Verzeichnis Strukturen erstellen

Informationen: Informationen über den gewählten Eintrag zeigen

JSON erfassen: Datei-Strukturen als JSON erfassen - wie in DC_DIRS eingestellt
Erfasste JSON zeigen: Die erfassten JSON Datei-Strukturen zeigen

Aktualisieren: Die Benutzeroberfläche aktualisieren

HTML Dokumentation: HTML Dokumentationen aus den erfassten JSON Datei-Strukturen erstellen - wie in DC_DIRS eingestellt

Dokumentationen zeigen: Die erstellten HTML Dokumentationen zeigen

Beenden: Die Anwendung beenden

Bildquelle: erasand.ch

Dateistrukturen vergleichen

p>Register Verzeichnis Strukturen vergleichen

Informationen: Informationen über den gewählten Eintrag zeigen

Vergleichen: Die JSON-Datei-Strukturen miteinander vergleichen - wie in DC_COMP eingestellt

Beenden: Die Anwendung beenden

Bildquelle: erasand.ch

Unterschiede prüfen

Register Prüf Resultat Ziel Struktur

Drop-Down Auswahl: Prüf Ergebnisse aus dem Dateivergleich auswählen - wie in DC_COMP eingestellt

Quelle / Ziel öffnen: Öffnet vom ausgewählten Eintrag das Quell- und das Zielverzeichnis - sofern diese vorhanden sind

Beenden: Die Anwendung beenden

Bildquelle: erasand.ch

Installation

Voraussetzungen
Python 3: Python.org
Tkinter: Muss als Python Modul verfügbar sein - Bei der Windows Installation enthalten, bei Linux per Paketverwaltung)

Download
Mit folgendem Link das ZIP herunterladen: pyOsV2

Installation
DDie 3 Scripts startPyOsV2.pyw, einstPyOsV2.py und pyosv2.py müssen im gleichen Verzeichnis vorhanden sein - Bei Linux und Unix startPyOsV2.pyw ausführbar machen

Ausführung
startPyOsV2.pyw starten

Quellcode
Github: pyOsV2


PYOSTOOLS

Erfassen und vergleichen grosser Datei-Strukturen

listdirs.py

Verzeichnis-Strukturen auflisten

Durchläuft und listet alle Verzeichnisse und Dateien einer Datei-Struktur und gibt diese sortiert als formatierte Textdatei aus. Die Textdatei wird im Hauptverzeichnis der Struktur gespeichert.

Variablen
QUELLE: Pfad zur Datei-Struktur

compdirs.py

Verzeichnis-Strukturen vergleichen

Durchläuft 2 Verzeichnis-Strukturen, eine Quell- und eine Ziel-Struktur, und gibt die Unterschiede von Namen, Grösse und Datum in einer formatierten Textdatei in der Ziel-Struktur aus.

Variablen
QUELLE: Pfad zur Quell-Datei-Struktur
ZIEL: Pfad zur Ziel-Datei-Struktur
ART: Ausgabeart, "Detail" = detailliert pro Datei, "Resume" = zusammengefasst pro Verzeichnis.

movdirs.py

Dateien einer Verzeichnis-Struktur verschieben

Verschiebt Dateien welche im Namen und in der Erweiterung spezifiziert wurden von einer Quell Datei-Struktur in eine Ziel-Datei-Struktur. Am Schluss wird der Inhalt der Ziel-Datei-Struktur dokumentiert.

Variablen
QUELLE: Pfad zur Quell-Datei-Struktur
ZIEL: Pfad zur Ziel-Datei-Struktur
NAME: Spezifikation des Dateinamens, * oder leere Variable: alle Dateinamen
ERWEITERUNG: Spezifikation der Dateierweiterung, * oder leere Variable: alle Erweiterungen

strktlink.py

Hierarchische Verknüpfungen erstellen

Erzeugt aus einer flachen Datei-Struktur, z.B. synchronisierte Verzeichnisse einer Cloud, eine hierarchische Struktur. Zur Abbildung der Hierarchie werden die Namen der synchronisierten Verzeichnisse verwendet.

Variablen
QUELLE: Pfad zur Quell-Datei-Struktur
ZIEL: Pfad zum Ziel-Verzeichnis
ARCHIV: Sicherungs-Verzeichnis für bestehende Hierarchien
SYMLINK: Art der Verknüpfung
DIREKT_LINK: Direkte Paarung zwischen Verknüpfungsname und Ordnername der Hierarchie
VAR_LINK: Paarung mit Anfang Ordnername und Ordnername der Hierarchie. Der Verknüpfungsname ist der verbleibende Rest des Ordnernamens.
UNBEKANNT: Ordnername der Hierarchie für alle nicht erkannten Ordner

remodirs.py & compremo.py

Entfernte Datei-Strukturen vergleichen

Um entfernte Datei-Strukturen miteinander zu vergleichen sind zwei Python-Skripte, zwei Arbeitsschritte nötig.

remodirs.py

Durchläuft von einem Wurzelverzeichnis jedes Verzeichnis wie eine Datei-Struktur und speichert das Ergebnis, vorbereitet zum Vergleichen, in einer JSON-Datei.

Variablen
QUELLSTAMM: Pfad zur Datei-Struktur
JSONPATH: Verzeichnisangabe für die JSON Datei

compremo.py

Vergleicht JSON Dateien, in welchen Datei-Strukturen von remodirs.py gespeichert wurden, miteinander und gibt die Unterschiede in einer formatierten Textdatei aus. Es werden nur die JSON Dateien gleichen Namens im Quell- / und Zielverzeichnis miteinander verglichen.

Variablen
QUELLE: Pfad zu den JSON Dateien der Quell-Datei-Strukturen
ZIEL: Pfad zu den JSON Dateien der Ziel-Datei-Strukturen
AUSNAHMEN: Liste mit Dateinamen, welche vom Vergleich ausgeschlossen werden sollen
AUSN_STARTa: Dateianfang für Ausnahmen, Funktion remocomparedirs anpassen, Zeilen 134 - 139 und Zeilen 217 - 222
AUSN_ENDa: Dateiende für Ausnahmen, Funktion remocomparedirs anpassen, Zeilen 134 - 139 und Zeilen 217 - 222
ART: Ausgabeart, "Detail" = detailliert pro Datei, "Resume" = zusammengefasst pro Verzeichnis.
VERGLEICH: Verzeichnisangabe für das Protokoll des Vergleichs

Installation

Voraussetzungen
Python 3: Python.org

Download
Mit folgendem Link das ZIP herunterladen: pyOsTools

Installation
Die Skripte können sich in einem beliebigen Ordner befinden

Ausführung
Jedes Skript ist separat für sich ausführbar

Quellcode
Github: pyOsTools