28-11-17, 17:16
Salut, tu peux utiliser ce script darktable fermé:
c'est un script que j'ai récupéré sur le net (p-e même ici) mais malheureusement je ne peux pas citer la source
car je ne retrouve pas la page en question.
En revanche ça fonctionne nickel pour nettoyer la bd de DT.
Je crois avoir compris que dans la future version une fonction similaire sera intégrée.
c'est un script que j'ai récupéré sur le net (p-e même ici) mais malheureusement je ne peux pas citer la source
car je ne retrouve pas la page en question.
En revanche ça fonctionne nickel pour nettoyer la bd de DT.
Je crois avoir compris que dans la future version une fonction similaire sera intégrée.
Code :
#!/bin/bash
#
# DARKTABLE DATABASE CLEANER
#
# This script removes from the database the files
# that are not located where they are supposed to be.
#
# USAGE :
# ./darktable_db_cleaner.sh
# Will use the database located in :
# ~/.config/darktable/library.db
#
# ./darktable_db_cleaner.sh /path/to/library.ext
# Will use the specified database
#
# Created by Rufus Wilson
# contact : marsou75@gmail.com
#
if [ ! "`type -t sqlite3`"=="file" ] ; then
echo "sqlite3 is required"
sudo apt-get install sqlite3
fi
if [ -f "$1" ] ; then
library="$1"
else
library="/home/"$USER"/.config/darktable/library.db"
fi
for film_roll_id in `sqlite3 -noheader -list -interactive $library "SELECT id FROM film_rolls WHERE 1 ORDER BY id ASC;"`
do
film_roll_folder="`sqlite3 -noheader -list -interactive $library "SELECT folder FROM film_rolls WHERE id=$film_roll_id ORDER BY id ASC;"`"
echo "*** "$film_roll_folder" ***"
echo "-- cleaning database"
for photo_id in `sqlite3 -noheader -list -interactive $library "SELECT id FROM images WHERE film_id=$film_roll_id ORDER BY filename ASC;"`
do
photo_filename=`sqlite3 -noheader -list -interactive $library "SELECT filename FROM images WHERE id=$photo_id ORDER BY filename ASC;"`
if [ ! -f "$film_roll_folder/$photo_filename" ] ; then
echo $photo_filename" deleted"
sqlite3 -noheader -list -interactive $library "DELETE FROM images WHERE id=$photo_id;"
fi
done
nb=`sqlite3 -noheader -list -interactive $library "SELECT count(id) FROM images WHERE film_id=$film_roll_id ORDER BY filename ASC;"`
if [ "$nb" -eq "0" ] ; then
sqlite3 -noheader -list -interactive $library "DELETE FROM film_rolls WHERE id=$film_roll_id;"
fi
echo " ->cleaned"
done
# Shrink the size of database
sqlite3 -noheader -list -interactive $library "VACUUM"