Python Tool: Kontakte aus SQL DB / CardDav (Nextcloud) via REST Schnittstelle in Adressbuch

  • Das Tool liest Adressdaten von einem SQL- oder von einem Carddav Server (z.B. Nextcloud)


    Es prüft, ob der Name jedes Kontaktes bereits im Adressbuch ist. Wenn nein, wird er angelegt.

    Wenn ja, wird geprüft ob sich Rufnummern geändert haben und in diesem Falle der Kontakt gelöscht und neu angelegt.


    Im Gegensatz zu (kostenpflichtigen) Modulen ist die REST Schnittstelle i.d.R. sehr lange Update-Stabil und funktioniert auch mit einer Starface Free Edition.


    Abhängigkeiten

    SQL: 'apt install python3-pymssql' durchführen, um Datenbankmodul zu installieren.


    CardDav: 'apt install python3-vobject' sowie die folgende carddav.py Datei ins gleiche Verzeichnis kopieren:

    carddav-util/carddav.py at master · ljanyst/carddav-util
    A CardDAV import/export utility. Contribute to ljanyst/carddav-util development by creating an account on GitHub.
    github.com


    Konfiguration

    SQL-Parameter / CardDav + Starface Parameter eintragen

    SQL: Datenbankzuweisung machen, d.h. in das Dictionary in die letzte Spalte die Spaltennamen anpassen. Hier greife ich auf eine MSSQL "Repdoc" Instanz zu, aber andere CRM Systeme nutzen andere Datenbank-, Tabellen- und Spaltennamen.


    Aufruf

    - i sql Liest vom SQL Server

    - i carddav Liest vom Carddav Server

    -o print Ausgabe der CSV Datei in der Konsole

    -o csv Speichern der CSV Datei

    -o starface Hochladen der Daten via REST Schnittstelle


    z.b:

    ./starface_addr.py -i sql -o starface


    Feedback und Rückfragen hier ins Forum.


    Ich habe noch ein paar Ideen, z.B. könnte man eine CSV Datei als Quelle verwenden und hochladen. Vorteil: Es werden nur nicht vorhandene Kontakte oder geänderte Kontakte ins Adressbuch übernommen. Der Kunde könnte aus seiner Datenbank selbst regelmäßig einen Export anstoßen und das Skript läuft regelmäßig über den Ordner.

    Anpassung / Implementierung für spezifische Kundensituation: Kann ich kostenpflichtig auf Stundenbasis übernehmen.

    Wie lange hat es gedauert, das Tool zu schreiben? Ca. 14 Std. Bin aber kein alteingesessener Python Experte.


    Caveats:

    - Es dürfen keine zwei Kontakte mit gleichem Namen existieren, es wird dann nur der letzte Kontakt übernommen.


    Alternativer Download: krause-computer.de/starface_addr.py


    Edit: 29.06.2023: Problem mit Multi-vCards behoben, betrifft Synology CardDav Server

  • Es gibt kein Commando um ein gesamtes Adressbuch zu löschen.


    Du must mithilfe des /contacts GET die Kontakte für eine Adressbuchnr Abfragen und dann via /contacts/{Contactid} DELETE jeden Kontakt einzeln löschen.


    MfG


    Fabian

  • ChrisKrause

    Hat den Titel des Themas von „Kontakte anlegen mit Python via REST Schnittstelle“ zu „Python Tool: Kontakte aus SQL DB / CardDav (Nextcloud) via REST Schnittstelle in Adressbuch“ geändert.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!