JaidedAI /
EasyOCR
Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc.
Loading repository data…
sebastiencastermans / repository
Python script to detect and remove duplicates on Immich, with a focus on Apple HEIC files. Simple, secure, and customizable. FR : Script Python pour détecter et supprimer les doublons sur Immich, en privilégiant les fichiers HEIC d’Apple. Simple, sûr et personnalisable.
Python script to intelligently detect and delete duplicate photos/videos on a Immich server, prioritizing heic (Apple) files over size.
exif.dateTimeOriginal).heic in priority.log file (optional)Create an API key in Immich under Settings → API Keys. The key needs the following permissions:
| Permission | Purpose |
|---|---|
duplicate.read | Retrieve duplicate groups |
asset.delete | Delete duplicate assets |
asset.update | Transfer location/EXIF metadata (when IMMICH_TRANSFER_METADATA=true) |
album.read | Read album memberships for metadata transfer |
album.asset.create | Add kept asset to albums (when IMMICH_TRANSFER_METADATA=true) |
album.asset.delete | Remove kept asset from albums (when IMMICH_KEEP_METADATA=false) |
tag.asset | Add/remove tags for metadata transfer |
A full-access API key includes all of these. If you only use IMMICH_TRANSFER_METADATA=false and IMMICH_KEEP_METADATA=true, the minimum required permissions are duplicate.read and asset.delete.
python -m venv .venv
.\.venv\Scripts\Activate.ps1
On Linux/macOS:
source .venv/bin/activate
pip install -r requirements.txt
copy .env.example .env # Windows
cp .env.example .env # Linux/macOS
.env and set at least:
IMMICH_SERVER – your Immich server URL (e.g. https://immich.example.com)IMMICH_API_KEY – your API key from Immich (Settings → API Keys)IMMICH_DRY_RUN – true to simulate only (default), false to actually deleteIMMICH_DEFINITELY – false for recycle bin (default), true for permanent deletionIMMICH_ENABLE_LOG – true or false for log file creationIMMICH_ONLY_PAIRS – false (default) to process all groups, true to process only groups with exactly 2 filesIMMICH_KEEP_METADATA – true (default) to let the kept image keep its metadata, false to remove it before transferIMMICH_TRANSFER_METADATA – true (default) to transfer albums, tags, location from deleted assets to the kept oneIMMICH_CONFIRM – true to ask [Y/n] before each duplicate group; false (default) to add all to bulk listIMMICH_REQUEST_TIMEOUT – request timeout in seconds (default: 5); increase for slow serversIMMICH_DELETE_BATCH_SIZE – batch size for bulk deletion (default: 500); limits payload per requestAlternatively, set these as environment variables directly instead of using a .env file.
python immich_duplicates_en.py
For the French version:
python immich_duplicates_fr.py
Tip: Run with IMMICH_DRY_RUN=true (default) first to see what would be deleted. Use IMMICH_CONFIRM=true to approve each group [Y/n]; with DRY_RUN=true only logs, with DRY_RUN=false processes immediately.
Script Python pour détecter et supprimer intelligemment les doublons photos/vidéos sur un serveur Immich, en donnant la priorité aux fichiers heic (Apple) par rapport à la taille.
exif.dateTimeOriginal).heic en priorité.log (optionnelle)Créez une clé API dans Immich via Paramètres → Clés API. La clé doit posséder les droits suivants :
| Droit | Rôle |
|---|---|
duplicate.read | Récupérer les groupes de doublons |
asset.delete | Supprimer les assets en doublon |
asset.update | Transférer localisation/EXIF (si IMMICH_TRANSFER_METADATA=true) |
album.read | Lire les appartenances aux albums pour le transfert |
album.asset.create | Ajouter le gardé aux albums (si IMMICH_TRANSFER_METADATA=true) |
album.asset.delete | Retirer le gardé des albums (si IMMICH_KEEP_METADATA=false) |
tag.asset | Ajouter/retirer des tags pour le transfert |
Une clé API avec accès complet inclut tous ces droits. Si vous utilisez uniquement IMMICH_TRANSFER_METADATA=false et IMMICH_KEEP_METADATA=true, les droits minimaux requis sont duplicate.read et asset.delete.
python -m venv .venv
.\.venv\Scripts\Activate.ps1
Sur Linux/macOS :
source .venv/bin/activate
pip install -r requirements.txt
copy .env.example .env # Windows
cp .env.example .env # Linux/macOS
.env et configurez au minimum :
IMMICH_SERVER – l'URL de votre serveur Immich (ex. https://immich.example.com)IMMICH_API_KEY – votre clé API (Paramètres → Clés API)IMMICH_DRY_RUN – true pour simuler uniquement (par défaut), false pour supprimer réellementIMMICH_DEFINITELY – false pour la corbeille (par défaut), true pour suppression définitiveIMMICH_ENABLE_LOG – true ou false pour la création du fichier logIMMICH_ONLY_PAIRS – false (défaut) pour traiter tous les groupes, true pour n'accepter que les paires de 2 fichiersIMMICH_KEEP_METADATA – true (défaut) pour que le gardé conserve ses métadonnées, false pour les retirer avant transfertIMMICH_TRANSFER_METADATA – true (défaut) pour transférer albums, tags et localisation des supprimés vers le gardéIMMICH_CONFIRM – true pour demander [O/n] avant chaque groupe ; false (défaut) pour tout ajouter à la liste en blocIMMICH_REQUEST_TIMEOUT – délai en secondes pour les requêtes API (défaut : 5) ; augmenter pour serveurs lentsIMMICH_DELETE_BATCH_SIZE – taille des lots pour la suppression en bloc (défaut : 500) ; limite la taille du payload par requêteVous pouvez aussi définir ces variables d'environnement directement, sans fichier .env.
python immich_duplicates_fr.py
Pour la version anglaise :
python immich_duplicates_en.py
Conseil : Exécutez d'abord avec IMMICH_DRY_RUN=true (par défaut) pour voir ce qui serait supprimé. Utilisez IMMICH_CONFIRM=true pour valider chaque groupe [O/n] ; avec DRY_RUN=true seulement log, avec DRY_RUN=false traitement immédiat.
Selected from shared topics, language and repository description—not editorial ratings.
JaidedAI /
Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc.
windmill-labs /
Open-source developer platform to power your entire infra and turn scripts into webhooks, workflows and UIs. Fastest workflow engine (13x vs Airflow). Open-source alternative to Retool and Temporal.
hardikvasa /
Python Script to download hundreds of images from 'Google Images'. It is a ready-to-run code!
kellyjonbrazil /
CLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.
HariSekhon /
1200+ DevOps Bash Scripts - AWS, GCP, Kubernetes, Docker, CI/CD, APIs, SQL, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure DevOps, TeamCity, Spotify, MP3, LDAP, Code/Build Linting, pkg mgmt for Linux, Mac, Python, Perl, Ruby, NodeJS, Golang, Advanced dotfiles: .bashrc, .vimrc, .gitconfig, .screenrc, tmux..
a1studmuffin /
A Blender script to procedurally generate 3D spaceships