Ce script Python permet de supprimer automatiquement les contacts en doublon dans Nextcloud. Il offre deux modes d'utilisation selon vos préférences.
-
Cloner ou télécharger ce répertoire
-
Installer les dépendances Python :
pip install -r requirements.txt
- ✅ Deux modes d'utilisation : API CardDAV directe ou traitement de fichier vCard
- ✅ Détection intelligente des doublons : par email, téléphone ou similarité de nom
- ✅ Mode dry-run : visualiser les doublons avant suppression
- ✅ Choix automatique du meilleur contact : garde le contact le plus complet
- ✅ Logging détaillé : suivi complet des opérations
- ✅ Gestion sécurisée des mots de passe : saisie masquée
Ce mode se connecte directement à votre instance Nextcloud via l'API CardDAV.
Étape 1 - Visualiser les doublons (dry-run) :
python nextcloud_duplicate_remover.py api https://votre-nextcloud.com votre_nom_utilisateurÉtape 2 - Supprimer les doublons :
python nextcloud_duplicate_remover.py api https://votre-nextcloud.com votre_nom_utilisateur --deleteOptions avancées :
# Ajuster le seuil de similarité des noms (par défaut : 85%)
python nextcloud_duplicate_remover.py api https://votre-nextcloud.com votre_nom_utilisateur --threshold 90 --deleteCe mode traite un fichier vCard exporté depuis Nextcloud.
Étape 1 - Exporter vos contacts depuis Nextcloud :
- Allez dans l'application Contacts de Nextcloud
- Cliquez sur l'icône ⚙️ en bas à gauche
- Choisissez "Télécharger" pour exporter au format vCard
Étape 2 - Traiter le fichier :
python nextcloud_duplicate_remover.py file contacts_exportes.vcf contacts_sans_doublons.vcfÉtape 3 - Réimporter le fichier nettoyé :
- Retournez dans l'application Contacts de Nextcloud
- Supprimez l'ancien carnet d'adresses (optionnel)
- Importez le fichier
contacts_sans_doublons.vcf
Le script détecte les doublons selon plusieurs critères :
- Email identique : Deux contacts avec le même email sont considérés comme doublons
- Téléphone identique : Deux contacts avec le même numéro (après nettoyage)
- Nom similaire : Utilise un algorithme de similarité pour détecter les noms proches
Quand des doublons sont trouvés, le script :
- Garde automatiquement le contact le plus complet (plus d'informations)
- Supprime les autres contacts du groupe
- Affiche un résumé des opérations
Vous pouvez définir ces variables pour éviter de saisir les informations à chaque fois :
export NEXTCLOUD_URL="https://votre-nextcloud.com"
export NEXTCLOUD_USER="votre_nom_utilisateur"Le paramètre --threshold contrôle la sensibilité de détection des noms similaires :
- 90-100 : Très strict (noms quasi-identiques seulement)
- 85 (défaut) : Équilibré (recommandé)
- 70-84 : Plus permissif (risque de faux positifs)
-
Sauvegarde manuelle :
- Exportez vos contacts depuis Nextcloud avant d'utiliser le script
-
Test en dry-run :
- Utilisez toujours le mode dry-run d'abord pour vérifier les doublons détectés
-
Mot de passe :
- Le script demande le mot de passe de manière sécurisée (saisie masquée)
- Aucun mot de passe n'est stocké dans le script
2024-01-15 10:30:15 - INFO - Connexion à https://mon-nextcloud.com/remote.php/dav/addressbooks/users/simon/...
2024-01-15 10:30:16 - INFO - Connecté au carnet d'adresses: Contacts
2024-01-15 10:30:17 - INFO - Récupération de tous les contacts...
2024-01-15 10:30:18 - INFO - Récupération terminée: 248 contacts trouvés
2024-01-15 10:30:19 - INFO - Recherche des doublons...
2024-01-15 10:30:20 - INFO - Trouvé 12 groupes de doublons
2024-01-15 10:30:20 - INFO - Contacts à supprimer: 18
2024-01-15 10:30:20 - INFO - === MODE DRY-RUN : Aucune suppression effectuée ===
group_0:
[GARDER] Jean Dupont (jean.dupont@email.com, jean@work.com)
[SUPPRIMER] Jean Dupont (jean.dupont@email.com)
[SUPPRIMER] J. Dupont (jean.dupont@email.com)
group_1:
[GARDER] Marie Martin (marie.martin@company.fr, +33123456789)
[SUPPRIMER] Marie Martin (marie.martin@company.fr)
...
ℹ️ Mode dry-run: 30 doublons trouvés (utilisez --delete pour les supprimer)
ERREUR: Impossible de se connecter à Nextcloud
- Vérifiez l'URL de votre Nextcloud (avec https://)
- Vérifiez vos identifiants
- Assurez-vous que l'application Contacts est activée dans Nextcloud
ERREUR: La bibliothèque caldav n'est pas installée
- Exécutez :
pip install -r requirements.txt
- Ajustez le seuil avec
--threshold(valeur plus faible) - Vérifiez que vos contacts ont bien des informations communes (email, nom)
- Le script fonctionne avec Nextcloud 20+ (testé avec les versions récentes)
- Compatible Python 3.6+
- Les suppressions sont définitives (d'où l'importance du dry-run)
- Le script respecte la structure des carnets d'adresses Nextcloud
- Fonctionne aussi avec d'autres serveurs CardDAV compatibles
N'hésitez pas à signaler des bugs ou proposer des améliorations !
Ce script est fourni tel quel, à des fins éducatives et d'usage personnel. Utilisez-le à vos propres risques.