{{tag>Logiciel}}
====== duplicateContactsManager : Gestionnaire de contacts en double pour Thunderbird ======
Cette extension Thunderbird facilite la gestion des entrées redondantes dans les carnets d'adresses.
===== Pré-requis =====
===== Installation =====
===== Configuration =====
===== Utilisation =====
Pour démarrer ce module :
* appelez-le via l'entrée de menu **Outils -> Duplicate Contacts Manager...**
* ou, dans le carnet d'adresses, cliquez sur le bouton Rechercher les doublons dans votre carnet d'adresses.
**duplicateContactsManager** recherche dans les carnets d'adresses des paires d'entrées de contact (appelées **fiches**).
Il peut supprimer automatiquement les fiches qui ont les mêmes informations ou qui ont moins d'informations correspondantes.
Toutes les paires de fiches correspondantes restantes sont présentées comme doublons pour un traitement manuel.
Chaque paire est présentée côte à côte avec une comparaison de tous les champs contenant des données, y compris une photo.
Certains champs importants sont toujours affichés poue être remplis s'ils sont vides.
Pour les paires de doublons présentées, des informations sont données dans la colonne qui les sépare, sous forme de symboles :
; '≡'
: champs non vides avec des valeurs identiques
: les valeurs non identiques sont mises en évidence par la couleur.
; '≃'
: noms, adresses e-mail ou numéros de téléphone correspondants.
; '≅'
: fiches équivalentes, champs équivalents ou ensembles égaux (après abstraction).
; '⊆' et '⊇'
: relation de sous-ensemble/sur-ensemble sur l'adhésion à la liste de diffusion, les adresses e-mail et les numéros de téléphone.
; '⋦' et '⋧'
: un champ ou une carte entière contient moins ou plus d'informations que l'autre.
; '<' et '>'
: comparaison sur des valeurs numériques ou relation sous-chaîne/super chaîne sur des noms et d'autres textes.
Pendant le traitement manuel d'une paire de fiches correspondantes, l'utilisateur peut les ignorer, modifier l'une ou les deux et décider de supprimer l'une d'entre elles.
Si une carte est supprimée, que son adresse e-mail principale est dans une ou plusieurs listes de diffusion et que l'autre carte n'a pas la même adresse e-mail principale, l'adresse est également supprimée des listes de diffusion respectives.
Pour empêcher des paires de fiches similaires d'être présentées à plusieurs reprises pour un traitement manuel, on peut leur attribuer des noms AIM différents, de sorte qu'elles n'apparaissent plus dans les résultats de recherche.
==== Entrées de contact semblables ====
La recherche de fiches semblables peut se faire :
- sur **un seul carnet d'adresses** de **n** fiches : chaque fiche est comparée à toutes les autres -> **n(n-1)/2** comparaisons.
- sur **deux carnets d'adresses différents**, respectivement de **m** et **n** fiches : chaque fiche du premier carnet est comparée avec chaque fiche du second -> **n * m** comparaisons.
Les paires de doublons potentiels s'affichent.
Deux fiches sont considérées comme semblables si :
* Les **noms des fiches, adresses e-mail ou numéros de téléphone** correspondent
* ou que **aucun nom, adresse e-mail ou numéro de téléphone** ne correspond entre les deux fiches.
Mais les fiches dont le **pseudo AIM** diffère ne correspondent jamais, ce qui est pratique pour empêcher que les fiches soient présentées plusieurs fois pour un traitement manuel.
Avant la recherche de correspondance, les noms sont complétés et leur ordre est normalisé - par exemple :
* si deux parties de nom sont détectées dans le **Nom à afficher** (par exemple, "John Doe") ou dans une adresse e-mail (par exemple, "John.Doe@company.com"), ils sont pris comme prénom et nom.
* Dans une fiche, plusieurs adresses e-mail ou plusieurs numéros de téléphone sont traités comme des ensembles, c'est-à-dire que leur ordre et leurs types sont ignorés.
* Les noms ne différant que par la casse sont considérés comme identiques.
* Les **noms** de deux fiches correspondent si:
* leur **Nom à afficher** est non vide et équivalent
* ou les paires **prénom** et **nom** sont non vides et équivalentes
* ou la paire **Nom à afficher** est vide mais les paires **prénom** et **nom** sont non vides et équivalentes
* dans une fiche, le **Nom à afficher** est vide et le **prénom** ou le **nom** sont non vides et équivalents au **Nom à afficher** de l'autre fiche
* leur **pseudo AIM** est non vide et équivalent
* Les **adresses e-mail** de deux fiches correspondent si l'une de leurs adresses e-mail principale ou secondaire est équivalente.
* Les **numéros de téléphone** de deux fiches correspondent si l'un de leurs numéros **Mobile**, **Work** ou **Pager** est équivalent. Les champs **Home** et **Fax** ne sont pas pris en compte car ils sont souvent partagés par un groupe de personnes.
==== Synthèse des valeurs de champ ====
Avant de comparer les champs de la fiche, leurs valeurs sont synthétisées comme suit :
- **Élagage** (suppression du contenu non pertinent pour la comparaison) :
* ignorer les valeurs de certains types de champs — la liste des champs ignorés est configurable\\ valeur par défaut : //UID, UUID, CardUID, groupDavKey, groupDavVersion, groupDavVersionPrev, RecordKey, DbRowID, PhotoType, PhotoName, LowercasePrimaryEmail, LowercaseSecondEmail, unprocessed:rev, unprocessed:x-ablabel//,
* supprimer des numéros de téléphone les espaces blancs de début, de fin ou multiples ainsi que les caractères non numériques
* supprimer les doublons erronés d'adresses électroniques, insérés comme **nom par défaut** par certains clients de messagerie
* remplacer @googlemail.com par @gmail.com dans les adresses e-mail.
- **Transformation** (réorganisation des informations pour une meilleure comparaison)
* corriger l'ordre du prénom et du nom de famille (par exemple, réorganiser "Doe, John"),
* déplacer du nom de famille au prénom les initiales du milieu telles que "M"
* déplacer vers le nom de famille les préfixes tels que "von".
- **Normalisation** (harmonisation des variantes d'écriture :
* convertir en minuscules (sauf pour la partie nom des adresses e-mail AOL)
* transcrire les umlauts et les ligatures
* si configuré, remplacer dans les numéros de téléphone le préfixe de l'appel international (IDD) (tel que '00') par '+' et le préfixe interurbain national (tel que '0') par le code d'appel par défaut du pays (tel que '+49').
- **Simplification** (suppression des informations moins pertinentes)
* supprimer les accents et la ponctuation
* supprimer les chiffres et lettres isolés (comme les initiales)
Les champs correspondants de deux fiches sont considérés comme équivalents si leurs valeurs synthétisées sont égales.
Les adaptations ci-dessus ne sont calculées que pour la comparaison : les champs réels de la fiche ne sont pas modifiés
Si la suppression automatique est activée, seules les fiches proposées pour la suppression (informations équivalentes ou inférieures à celles d'une autre fiche) sont supprimées.
Quand une paire de fiches est présentée pour inspection manuelle, la fiche signalée par une couleur rouge pour retrait est :
* celle préférée pour la suppression
* ou, si les fiches ne sont pas comparables, celle utilisée le moins souvent (plus petit indice de popularité)
* ou celle modifiée ou créée plus tôt (plus petit LastModifiedDate )
* ou celle du deuxième carnet d'adresses ou de celui trouvé plus tard si les deux carnets d'adresses sont identiques.
==== Équivalence des informations ====
Une fiche est considérée comme ayant des informations équivalentes ou inférieures à une autre si pour chaque champ non ignoré :
* le champ est équivalent au champ correspondant de l'autre fiche,
* sinon c'est un ensemble et sa valeur est un sous-ensemble de la valeur du champ correspondant de l'autre fiche,
* ou il s'agit du Prénom, Nom ou Nom à afficher et sa valeur est une sous-chaîne de la valeur de champ correspondant de l'autre fiche,
* ou il s'agit du PopularitéIndex ou de LastModifiedDate (ignorés ici), ou
* il a la valeur par défaut (vide pour les champs de texte, 0 pour les champs numériques ou false pour les champs booléens).
Pour la comparaison par champ ci-dessus, les adresses e-mail d'une fiche sont traitées comme un ensemble, les numéros de téléphone d'une carte sont également traités comme un ensemble et l'ensemble des noms des listes de diffusion auxquelles appartient une fiche est considéré comme un champ supplémentaire.
Une fiche contenant des informations équivalentes ou inférieures à une autre est préférée pour la suppression si :
* tous les champs non ignorés ne sont pas équivalents (ils contiennent moins d'informations),
* sinon le poids des caractères de la fiche est plus petit, c'est-à-dire que ses valeurs de champ élaguées et transformées (non ignorées) ont un nombre total égal ou inférieur de lettres majuscules et de caractères spéciaux que l'autre fiche, ou bien le poids des caractères est égal
* et son indice de popularité est plus petit,
* sinon LastModifiedDate est plus petit.
Voici un exemple.
La fiche de droite sera préférée pour la suppression car elle contient moins d'informations.
| NickName | "Péte" | " pete ! " | accent, ponctuation, majuscule et espace ignorés |
| FirstName | "Peter" | "Peter Y van" | préfixe du nom "van" déplacé vers le nom de famille, initiale "Y" au milieu ignorée |
| LastName | "van Müller" | "Mueller" | préfixe du nom "van" déplacé vers le nom de famille, umlauts transcrits |
| DisplayName | "Hans Peter van Müller" | "van Müller, Peter" | prénom déplacé vers l'avant, le nom est une sous-chaîne |
| PreferDisplayName | 'yes' | 'yes' | même valeur true |
| AimScreenName | "" | "" | même nom AIM |
| PreferMailFormat | 'HTML' | 'unknown' | valeur par défaut («inconnu») considéré comme moins d'informations |
| PrimaryEmail | "Peter.vanMueller@company.com" | "P.van.Mueller@gmx.de" | e-mails traités comme des ensembles, casse de lettres ignorée |
| SecondaryEmail | "p.van.mueller@gmx.de" | "" | e-mails traités comme des ensembles, casse de lettres ignorée |
| WorkPhone | "089/1234-5678" | "+49 89 12345678" | préfixe national normalisé et caractères non numériques |
| PopularityIndex | 5 | 3 | champ ignoré pour la comparaison des informations |
| LastModifiedDate | 2018-02-25 07:51:28 | 2018-02-25 08:30:37 | champ ignoré pour la comparaison des informations |
| UUID | "" | "903a61be-64d5-4844-802a" | champ ignoré |
==== Variables de configuration ====
Les préférences **options/configuration/préférences** utilisées par cette extension de Thunderbird sont enregistrées dans des clés de configuration commençant par **extensions.DuplicateContactsManager**. - par exemple, la liste des champs ignorés est stockée dans la variable **ignoreFields**.
===== Désinstallation =====
===== Voir aussi =====
* **(en)** [[https://addons.thunderbird.net/fr/thunderbird/addon/duplicate-contact-manager/]]
----
//Basé sur << [[https://github.com/DDvO/Duplicate-Contacts-Manager/blob/master/README.md|Duplicate Contact Manager]] >> par David von Oheimb.//