Mac Adressbuch für AVM Fritzbox – Version 2 – Os X – IpyFritz

Für die Fritzbox 7270 und 7390 arbeitet AVM gerade im Labor an neuen Features für das Adressbuch der Fritzbox. Die neueste Version meines iPyFritz-Programms könnt Ihr euch hier downloaden:

Für Mac OS x Snow Leopard: bzw. Python 2.6: iPyfritz.py.1.3.zip

Für Mac OS x Lion: Python 2.7: iPyfritz.py.1.4.zip

Die neue Beta ist jetzt objektorientiert geschrieben und hat folgende Features dazubekommen:

  • Wichtige Kontakte sind solche mit Niknames/Spitznamen
  • Bilder für das Fritzphone der wichtigen Kontakte / es muss das Verzeichnis “pics” existieren in dem Pfad wo auch die Datei liegt.
    Die Bilder müssen dann per FTP o.ä. auf die Fritzbox in das Verzeichnis /InternerSpeicher/Bilder/ geschoben werden. Alternativ geht auch USB-Stick. dann muss der Pfad im Script angepasst werden. Die kryptische Benamung der Bilder ist aus dem Problem enstanden das keine Umlaute und Sonderzeichen in den Dateinamen rein sollten. Für das phone ist es relativ egal – wie die files heißen.
  • Wichtige bekommen zwecks Sortierung eine Nummer vor den Namen – damit tauchen sie im Fritzphone oben auf.
  • Kontakte ohne Telefonnummer werden nicht exportiert
  • Email-Adressen werden mit exportiert
  • Es  kann alternativ pro “Gruppe” eine Datei exportiert werden. Hierzu muss die Zeile ipyfritz.all_groups() aktiviert und die Zeile ipyfritz.general_addressbook() gelöscht werden.

Mal Ehrlich – wenn wir uns in der Kneipe begegnet wären – hätte ich ein Bier gesponsert bekommen, oder?


Update V1.2: Das Verzeichnis “pics” in das die Bilder geschrieben werden – wird nun automatisch angelegt in dem Verzeichniss in dem das Script ausgeführt wird.

49 Kommentare zu “Mac Adressbuch für AVM Fritzbox – Version 2 – Os X – IpyFritz”

  1. lothar- sagt:

    hi! wunderbares skript! vielen dank dafür! das einzige, was ich vermisse und was ich selbst irgendwie nicht schaffe einzubauen, ist die felder “iPhone” des mac-adressbuches durch das skript in das “mobile”-feld des fritzbox-adressbuches zu übertragen. hast du ne idee?

  2. Joe sagt:

    Ja – das mit dem iphone-label ist neu. Das gibt es auch noch nicht so lange.
    Grundsätzlich muss in der Zeile

    mobile = pers_phone.get(kABPhoneMobileLabel, '')

    das

    kABPhoneMobileLabel

    durch

    kABPhoneiPhoneLabel

    ersetzt werden, wenn

    mobile

    vorher nicht gefunden wurde. Dabei werden dann aber auch nur noch die iphone-label herangezogen und nicht mehr die mobile-label.

    Spackig daran ist – das man jedes Label – mehrfach vergeben kann. Aber – nun ja – man kann nicht alles programmatisch abfangen und manche Kontakte haben einfach 1000 telefonnummern – da kommt man dann mit den labels auch nicht mehr hin.

  3. esszett sagt:

    Hallo, ich hatte v1 getestet, sehr fein – jetzt habe ich großes Interesse an dem Gruppen-Export-Feature von v1.2b. Leider ist der Download-Link tot… kommt das zip wieder? Danke sehr!

  4. Joe sagt:

    - Heute wird die neue Firmware für die Fritz.box veröffentlicht. Ab dem aufspielen kann man dann zB. Bilder mitexportieren.
    http://www.golem.de/1009/78064.html

  5. Joe sagt:

    So link ist wieder da – ich habe im moment nicht so viel Zeit.

  6. Sören G. Prüfer sagt:

    Klasse, ging auf Anhieb, trotzdem ich alle Nummern mit +49 eingepflegt hatte.

    Nicht sofort war klar, dass nicht alle Nummern pro Person mitkommen. Das mit den pic habe ich erst mal gelassen. die Box ist mir noch nicht vertraut genug.

    Danke

  7. Joe sagt:

    Hi – schön das es dir gefällt. Die Fritzbox kann maximal 3 Telefonnummern pro Kontakt. Das mit den Bildern ist in der Tat optional. Ich hab bisher keine Probleme entdeckt, wenn man die Bilder nicht rüberkopiert.

  8. Alain sagt:

    Hallo Joe,

    danke für das Script. Es nimmt einem viel Arbeit ab.
    Gibt es eine Möglichkeit, auch die Bilder von den “nicht wichtigen” Personen, also von allen aus dem Adressbuch, zu exportieren?
    Danke

  9. Ben sagt:

    Hi,

    Ich synce meine Kontakte mit Exchange, das ist ein anderes Adressbuch und somit erhalte ich beim Export lediglich die Apple GmbH. Lässt sich da was machen?

    Danke,

    Ben

  10. Joe sagt:

    Hi Alain,

    such mit einem Texteditor nach folgendem Code:

    if cat == '1' and contact.get('image') != None:

    und ersetz ihn durch

          if contact.get('image') != None:

    Laut AVM gibt es ein Limit über die Anzahl Bilder die das Fritz!Phone unterstützt. Aus diesem Grund gab es den folgenden Kommentar:

                """ Frity!phone does not support much pictures / so only for vips """
  11. Joe sagt:

    Hallo Ben,
    dieses Script ist nur für das Apple Adressbuch. Bei Exchange kann ich dir nicht weiterhelfen – gruß Joe

  12. Jens sagt:

    Hallo Joe, das Script funktioniert prima. Ich würde allerdings gern nicht “Nachname, Vorname” im Adressbuch haben, sondern “Vorname Nachname” ohne Komma. Das sieht bisschen doof aus, wenn man viele Adressen nur mit Vornamen hat. Weil dann vor dem Vornamen immer ein Komma ist. Wo kann ich das mit bescheidenen Programmierkenntnissen im Script ändern? Ich habe halt viele Adressen nur mit Vornamen . Gruß Jens

  13. Vielen Dank für das Skript! XML Export / Import klappt inkl. der Bilder wunderbar. Ist leider nicht der einfachste Weg. Ich verstehe nicht, warum AVM hier keine Mac Unterstützung bietet. Dafür habe ich gerade auch was kleines gespendet. :) Weiter so und vielen Dank!

  14. Andreas sagt:

    Hallo,

    wie geht man den Script richtig um? Be mir wird immer der Quelltext nur angezeigt.
    Was mache ich falsch?

    Danke Euch im voraus.

  15. Andreas sagt:

    Sorry für 2 mal?
    1 Nachricht war eine falsche Mail Adresse!

    Hallo,

    wie geht man den Script richtig um? Be mir wird immer der Quelltext nur angezeigt.
    Was mache ich falsch?

    Danke Euch im voraus.

  16. Joe sagt:

    Hallo Andreas,
    wenn das Script per Doppelklick den Quellcode anzeigt – dann hilft entweder:
    Das Programm “Terminal” ausführen und mit der Befehlszeile

    python ipyfritz.py

    Das Programm ausführen.
    Oder: Im Finder Apple-Taste+I auf dem Script und mit Python öffnen auswählen anwählen. Also das Standardprogramm ändern mit dem die Datei-Endung .py geöffnet wird.

  17. Andreas sagt:

    Hi,

    oh ha mit Terminal da kenne ich mich gar nicht aus.

    Bekomme folgende Meldung:

    Last login: Tue Jul 5 12:21:46 on ttys001
    You have new mail.
    macprolan:~ Andreas$ python ipyfritz.py
    /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can’t open file ‘ipyfritz.py’: [Errno 2] No such file or directory
    macprolan:~ Andreas$

  18. Joe sagt:

    Ja. Ein kleines Intro:
    mit dem Befehl
    cd /User/”dein username”/Downloads
    kannst du das Verzeichnis wechseln. Wechsel jetzt in das Verzeichnis in dem das iPyfritz ausgepackt wurde. Es hilf mit der “Tabulator” Taste zu arbeiten. Dann ergänzt das Terminal automatisch den Pfad.
    Im Zielpfad angekommen dann den Befehl eingeben. – Wie gesagt alternativ im Finder – rechte Maustaste auf das iPyfritz.py und unter Eigenschaften dann das Standard-Programm ändern.

  19. Andreas sagt:

    Standard Programm habe ich geändert aber trotzdem bekomme ich es nicht hin. :-(

    Siehe:
    macprolan:Download Andreas$ python ipyfritz.py
    Traceback (most recent call last):
    File “ipyfritz.py”, line 33, in
    from AddressBook import *
    ImportError: No module named AddressBook
    macprolan:Download Andreas$

  20. Joe sagt:

    Hmm, eigentlich müsste ab OS X 10.5 die benötigte Bibliothek “PyObjC” mit enthalten sein. Welche Version von Mac osX verwendest Du? Ansonsten im Terminal mal diesen Befehl ausführen:

    easy_install pyobjc
  21. Hannes sagt:

    Hallo,

    vielen Dank für das super Skript. Leider speichere ich meine Namen im Adressbuch im Format “Vorname Nachname”. Leider wird das in der Firtzbox so ausgegeben ” , Vorname” wenn kein Nachname gespeichert ist, oder “Nachname, Vorname”.

    Ist es möglich eine Skriptversion zu veröffentlichen bei der “Vorname Nachname” gespeichert wird? Ohne Komma oder ähnliches.

    Ich wäre dir sehr dankbar.

  22. Dirk sagt:

    Hallo,

    hat unter Snow Leopard super funktioniert.

    Unter Lion klappt es nicht mehr, gibt es vllt. einen Trick um es wieder ans laufen zu bringen?

    Danke für Deine Hilfe.

  23. Joe sagt:

    Ich schaue es mir an. Meine Lion Installation ist erst 4 Stunden alt.

  24. Joe sagt:

    Ok, bei mir war das Problem das alte .pyc Dateien existierten – mit dem Update kam eine neue Python Version:

    Folgende Schritte haben mir geholfen “python” unter Lion generell wieder zum laufen zu bringen:
    Programm “Terminal” ausführen
    darin folgende Befehlsketten – Probleme und Ausführung auf eigene Gefahr!:

    sudo su
    cd /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/
    find . -name "*.pyc" -delete
  25. Dirk sagt:

    Hi Joe,

    Hab es mal wie beschrieben probiert, aber das Script läuft leider nicht.

  26. Ilja sagt:

    Es wäre schön, wenn das Script Name und Vorname tauschen könnte. Ich suche auf meinem DECT Telefon gewohnheitsmässig eigentlich die Leute per Vorname. Mir reicht schon, wenn Du mir sagen könntest welche Zeilen ich wie ändern muss.

    Ansonsten, geiles Script!!! 

  27. Joe sagt:

    Hallo Ilja,
    weil es jetzt schon mehrfach nachgefragt wurde:
    Also zu ändern ist diese Zeile:

            name = contact.get(kABLastNameProperty.lower(),'') + ', ' + contact.get(kABFirstNameProperty.lower(),'')

    Wobei zusammenhängend das den Nachnamen repräsentiert:

    contact.get(kABLastNameProperty.lower(),'')

    und das den Vornamen

     contact.get(kABFirstNameProperty.lower(),'')

    .
    Das + ‘, ‘ + verbindet den Nach- und den Vornamen mit einem Komma also “Schmidt, xy” – wenn Ihr also Vorname Nachname haben wollt dann tauscht die Zeile einfach so aus:

            name = contact.get(kABFirstNameProperty.lower(),'')  +' '+ contact.get(kABLastNameProperty.lower(),'')

    Der danach folgende Code behandelt Firmen-Namen und Namen die Leer sind.

  28. Criamon sagt:

    Hi,

    irgendwie tut der download gerade bei mir nicht – wurde das zip-file verschoben?

    Viele Grüße
    Criamon

  29. Joe sagt:

    Wurde ausversehen gelöscht – ist wieder da.

  30. Criamon sagt:

    super, danke.

    allerdings bekomm ich eine Fehlermeldung. Hab’ Image Generierung auskommentiert, dann kam zumindest mal ein xml File raus.

    Traceback (most recent call last):
    File “iPyfritz.py”, line 342, in
    ipyfritz.general_addressbook()
    File “iPyfritz.py”, line 195, in general_addressbook
    self.create_phonebook(“Telefonbuch”)
    File “iPyfritz.py”, line 204, in create_phonebook
    self.person(contact)
    File “iPyfritz.py”, line 296, in person
    filename = self.export_image_to_path(contact.get(‘image’), name)
    File “iPyfritz.py”, line 233, in export_image_to_path
    f.write(bytes)
    TypeError: expected a character buffer object

    Grüße Criamon

  31. gramsmi sagt:

    habe das gleiche Problem

  32. Joe sagt:

    Ich schaue es mir an.

  33. Joe sagt:

    Ok, gibt jetzt eine neue Version. Änderungen ergaben sich durch die neue Python version in Lion.

  34. Micha sagt:

    Ich habe ebenfalls ein Problem mit Lion – unter Snow Leopard lief es problemlos. Jetzt wird mit der Quelltext angezeigt. Mit dem Befehl “python ipyfritz.py” bekomme ich die Rückmeldung:

    imac:Downloads Mischa$ python ipyfritz.py
    Could not find platform independent libraries
    Consider setting $PYTHONHOME to [:]
    Traceback (most recent call last):
    File “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/../../Extras/lib/python/site.py”, line 73, in
    __boot()
    File “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/../../Extras/lib/python/site.py”, line 2, in __boot
    import sys, imp, os, os.path
    ImportError: No module named os
    imac:Downloads Mischa$

    Fällt Dir dazu etwas ein? Vielen Dank!

  35. helee29 sagt:

    Hallo,

    bekomme folgende Fehlermeldung:

    Last login: Thu Aug 11 08:24:45 on console
    cd ‘/Users/helee29/Downloads/’ && ‘/usr/bin/pythonw’ ‘/Users/helee29/Downloads/iPyfritz-1.py’ && echo Exit status: $? && exit 1
    You have new mail.
    macpro:~ helee29$ cd ‘/Users/helee29/Downloads/’ && ‘/usr/bin/pythonw’ ‘/Users/helee29/Downloads/iPyfritz-1.py’ && echo Exit status: $? && exit 1
    Traceback (most recent call last):
    File “/Users/helee29/Downloads/iPyfritz-1.py”, line 342, in
    ipyfritz.general_addressbook()
    File “/Users/helee29/Downloads/iPyfritz-1.py”, line 195, in general_addressbook
    self.create_phonebook(“Telefonbuch”)
    File “/Users/helee29/Downloads/iPyfritz-1.py”, line 204, in create_phonebook
    self.person(contact)
    File “/Users/helee29/Downloads/iPyfritz-1.py”, line 269, in person
    name = self.iso_88591(name)
    File “/Users/helee29/Downloads/iPyfritz-1.py”, line 223, in iso_88591
    new = var.encode(‘ISO-8859-1′)
    UnicodeEncodeError: ‘latin-1′ codec can’t encode character u’\u0142′ in position 16: ordinal not in range(256)
    macpro:Downloads helee29$

    vielleicht eine Idee, woran es liegt?

    Vielen Dank im Voraus!

  36. Joe sagt:

    Hi,
    die Fritzbox kann nur “deutsche” Zeichen – das Zeichen das Du da hast ist ein schwedische “l” mit einem Strich. Bitte ersetz das Symbol im Adressbuch durch ein deutsches.
    Mehr Input bei Wikipedia unter den suchbegriffen Unicode und ISO-8859-1.

  37. Michael Hendriks sagt:

    Hi,

    ich bekomme eine Fehlermeldung, weiß aber nicht genau warum:

    UnicodeEncodeError: ‘latin-1′ codec can’t encode character u’\u0117′ in position 13: ordinal not in range(256)

    Ich tippe auf eine fehlerhafte Adresse, weiß aber nicht welche

    Grüße,

    Michael

  38. Michael Hendriks sagt:

    Fehler gefunden: Das Script verträgt kein é bei beispielsweise André

  39. Michael Hendriks sagt:

    Besteht eigentlich die Möglichkeit, nicht das komplette Adressbuch, sondern nur eine “Gruppe” zu importieren?

  40. Joe sagt:

    Die Möglichkeit besteht, wenn man sich traut ein paar Zeilen im Code zu ändern.
    Ganz unten im Script existieren diese 2 Zeilen:

        ipyfritz.general_addressbook()
    #    ipyfritz.all_groups()

    Die Raute einfach löschen und vor die Zeile mit dem general Adressbook setzen. Dann wird pro Gruppe eine XML-Datei erzeugt: Also so:

    #   ipyfritz.general_addressbook()
        ipyfritz.all_groups()
  41. helee29 sagt:

    Hi,

    sagt mir der Fehlercode denn auch, wo genau ich das “schwedische I” finde?

    (UnicodeEncodeError: ‘latin-1′ codec can’t encode character u’\u0142′ in position 16: ordinal not in range(256)
    macpro:Downloads helee29$)

    Danke und Gruss.

  42. Jürgen sagt:

    Hi,
    hier schreibt ein Laie.
    Was mache ich mit dem Script?
    Ich habe es mir runtergeladen und will es nun einsetzen. Klar, was sonst. Aber, wie???
    ;-)
    Danke für die Hilfe,
    Jürgen

  43. Joe sagt:

    Hallo Jürgen
    sofern Du unter Mac os arbeitest – kannst Du es per Doppelklick ausführen. Dann wird ein Verzeichnis mit Bildern und eine XML-Datei erstellt. Die XML-Datei kann man dann in der Fritzbox per Upload in das Adressbuch schreiben. Die Bilder (optional) kann man auf die Fritzbox in den Internen Speicher kopieren. Sofern man dann noch besitzer eines Fritz-Phones ist – sind jetzt alle Kontakte des Mac-Adressbuch inklusive Bilder auf dem Fritz-Phone verfügbar.
    Joe

  44. Oliver sagt:

    Hallo,

    ich habe dasselbe Problem mit den UTF-8 Kontaktdaten. Ich sehe es allerdings nicht ein, die Namen in meinem Addressbuch zu ändern – das kann ja auch das Skript beim Export erledigen.

    Dahingehend habe ich das Skript für meine spezifischen Zeichen angepasst. Die Methode iso_88591 ersetzt demnach gewisse Unicodezeichen durch das am besten passende ASCII Zeichen. Eigentlich eine ziemlich einfache Änderung, ich habe mir allerdings eine allgemeine Mapping-Tabelle gespart, sondern so lange ergänzt bis mein Addressbuch durchgelaufen ist.

    character_mapping = {u’\u0106′:’C', u’\u0107′:’c',
    u’\u010C’:'C’, u’\u010D’:'c’,
    u’\u010E’:'D’, u’\u010F’:'d’,
    u’\u0110′:’D', u’\u0111′:’d',
    u’\u0160′:’S', u’\u0161′:’s',
    u’\u017D’:'Z’, u’\u017E’:'z’}
    def iso_88591(self, var):
    cleaned = var;
    for i, j in self.character_mapping.iteritems():
    cleaned = cleaned.replace(i, j)
    new = cleaned.encode(‘ISO-8859-1′)
    return new #FIXME do

    Ansonsten ein tolles Skript! Vielen Dank!

  45. Oli sagt:

    Der Beitrag von Oliver vom 10.09.2011 ist meines Erachtens unumgänglich. Wo muss dieses character_mapping im Skript eingefügt werden? Schön wär’s wenn dies im herunterladbaren Skript bereits integriert wäre.

    Danke für die Hilfestellung.

    Oli

  46. Gerd sagt:

    Hallo, bei mir kommt folgende Fehlermeldung: “UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xfc in position 7: ordinal not in range(128)”. Kann mir jemand weiterhelfen?

  47. Joe sagt:

    Hallo Gerd
    Auch das ist wieder ein Sonderzeichen aus dem Unicode… siehe oben.

  48. Hauke sagt:

    Super Skript, Danke!

    Es wäre klasse, wenn das Mapping von Unicode Zeichen auch auf türkische Buchstaben erweitert wird (vgl. Kommentar von Oliver vom 10.09.2011). Diese wären: ğĞşŞçÇıİ und man könnte sie einfach auf gGsScCiI mappen.

  49. gramsmi sagt:

    Hallo,

    ich bekomme es auch nicht zum laufen:

    Last login: Fri Apr 20 18:50:26 on ttys000
    access-point-ap003-1:~ NAME$ cd ‘/Users/NAME/Desktop/’ && ‘/usr/local/bin/pythonw’ ‘/Users/NAME/Desktop/iPyfritz.py’ && echo Exit status: $? && exit 1
    Traceback (most recent call last):
    File “/Users/NAME/Desktop/iPyfritz.py”, line 33, in
    from AddressBook import *
    ImportError: No module named AddressBook

    Kannst du helfen?
    Gruß
    MG

Hinterlasse eine Antwort