frouin.me

RobotHash sur un Carnet d'Adresses

Featured

RobotHash sur un Carnet d'Adresses

Introduction

Cela fait longtemps que je trouvais mon carnet d'adresse un peu tristoune car il manquait de "photo". J'essaie de les ajouter au fur et à mesure mais ... c'est long.

Du coup j'ai eu l'idée de mixer le concept de RobotHash, qui fournit une photo en fonction d'une chaine de caractères unique, et mon serveur de carnet d'adresse sous CARD DAV.

Après une longue période de flemme, je l'ai finalement fait.

J'ai essayé plusieurs méthodes avant d'en trouver une satisfaisante

Finalement il faut exporter son carnet d'adresse au format VCF, disons edn Contacts.vcf

En m'appuyant sur le script d'un wiki Linux comme point de départ. Voici la version finale que j'ai utilisé :)

#!/usr/bin/env bash
#set -x
IFS=$'\n'

tracer=0
nick=""
long=""
mail=""
pic=0
for line in $(grep -Ev "^$|^#" "$1")
do
    if [ "$line" != "END:VCARD" ]
    then
      echo $line
    fi
    verb=$(echo $line|cut -d ':' -f 1|cut -d ';' -f 1| tr -d '\r')
    case $verb in
    BEGIN)
        tracer=$((tracer + 1))
        ;;
    FN)
        long=$(echo $line|cut -d ':' -f 2| tr -d '\r')
        ;;
    X-MS-CARDPICTURE)
        pic=1   
        ;;
    PHOTO)
        pic=1   
        ;;
    EMAIL)
        mail=$(echo $line|cut -d ':' -f 2| tr -d '\r')
        nick=$(echo $mail|cut -d '@' -f 1| tr -d '\r')
        ;;
    END)
        tracer=$((tracer + 1))
        ;;
    esac

    if [ $tracer -eq 2 ]
    then
        #echo "For : $nick / $long ($email) "
        if [ $pic -eq 0 ]
        then
          #echo "I didn't found a picture so I download it "
          wget -O temp "http://robohash.org/"$nick-$email-$long".jpg"
          echo "PHOTO;ENCODING=B:"$(base64 -w0 temp)
        fi
        echo "END:VCARD"
        tracer=0
        nick=""
        long=""
        mail=""
        pic=0
    fi
done

Une fois l'export fait il suffit de lancer le script ainsi : ./convert Contacts.vcf > Contacts2.vcf

Une fois le script passé le rendu est sympa :

Oh merde ... il est sous Windows Phone !!