Forum darktable FR

Version complète : (RESOLU)Têtes de mort et compagnie ne fonctionne pas chez moi
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour,
[b][b]jpverrue[/b][/b] a donné sur le site https://darktable.fr/posts/2023/02/t%C3%...compagnie/    un script destiné à rechercher les têtes de mort dans la base de données de darktable, j'ai essayé mais ne suis pas informatitien même si j'ai quelques bases, mais pas sur les scripts.
Mon systeme Ubuntu 20.04.2 LTS
J'ai installé sqlite3 et modifié l'adresse de la library.db.
voici le résultat du lancement du script dans le terminal :

Code :
#! /bin/bash 

# Usage : $0 [<LibPath>] 
# If not <LibPath> provided, use $Default LibPath below 
 
LibPath=${1:-"/home/jmm/.config/darktable/library.db"} 
 
sqlite3 -separator '/' ${LibPath} \ 
'SELECT film_rolls.folder, images.filename 
FROM images 
INNER JOIN film_rolls 
ON film_rolls.id = images.film_id;' | 
while read FilePath 
do 
[ -e "${FilePath}" ] || echo "${FilePath}" 
done
SELECT film_rolls.folder, images.filename 
FROM images 
INNER JOIN film_rolls 
ON film_rolls.id = images.film_id; : commande introuvable
Puis-je modifier quelque chose facilement pour que ça fonctionne ? Où est l'erreur ?
Merci de vos réponses
Bonjour, peux-tu mettre un copie d'écran de l'exécution ou copier les erreurs ?
(19-02-23, 12:26)jpg54 a écrit : [ -> ]Bonjour, peux-tu mettre un copie d'écran de l'exécution ou copier les erreurs ?

[Image: Capture-d-cran-du-2023-02-19-12-29-00.png]
C'est la copie d'écran de l'exécution qu'il faut. Après tu peux essayer ce script : https://github.com/darktable-org/darktab..._images.sh
Si tu le lances sans argument, il liste les fichiers n'existant pas dans la librairy.db et avec l'argument --purge, il la purge et affiche la liste des fichiers purgés.
Bonjour
Le script fonctionne sur Fedora:
[dom@fedora Efface]$ bash test.sh
/home/dom/Téléchargements/P1280107.orf
[dom@fedora Efface]$

Le mieux est de créer un fichier avec un éditeur et de lancer la commande : bash nom_du_fichier.sh
Effectivement, il y a un bug bizarre dans la version du script qui est en ligne.
La ligne 5 qui est juste une ligne de séparation contient en fait deux espaces. Ce sont ces espaces qui font planter le script. Voici une version corrigée.
Code :
#! /bin/bash
#
# Usage : $0 [<LibPath>]
# If not <LibPath> provided, use Default LibPath below

LibPath=${1:-"/home/jpv/.config/darktable-prod/library.db"}

sqlite3 -separator '/' ${LibPath} \
'SELECT film_rolls.folder, images.filename
    FROM images
    INNER JOIN film_rolls
        ON film_rolls.id = images.film_id;' |
while read FilePath
do
    [ -e "${FilePath}" ] || echo "${FilePath}"
done

C'est un truc que je n'ai jamais vu en bash. Ça ne devrait se produire. Si quelqu'un a une explication, je suis preneur !

Bien sûr, je vais aussi mettre à jour l'article sur le blog.
(19-02-23, 13:22)jpverrue a écrit : [ -> ]Effectivement, il y a un bug bizarre dans la version du script qui est en ligne.
La ligne 5 qui est juste une ligne de séparation contient en fait deux espaces. Ce sont ces espaces qui font planter le script. Voici une version corrigée.
Code :
#! /bin/bash
#
# Usage : $0 [<LibPath>]
# If not <LibPath> provided, use Default LibPath below

LibPath=${1:-"/home/jpv/.config/darktable-prod/library.db"}

sqlite3 -separator '/' ${LibPath} \
'SELECT film_rolls.folder, images.filename
    FROM images
    INNER JOIN film_rolls
        ON film_rolls.id = images.film_id;' |
while read FilePath
do
    [ -e "${FilePath}" ] || echo "${FilePath}"
done

C'est un truc que je n'ai jamais vu en bash. Ça ne devrait se produire. Si quelqu'un a une explication, je suis preneur !

Bien sûr, je vais aussi mettre à jour l'article sur le blog.
Merci ! ça fonctionne maintenant ! [Image: smile.png]
Voilà, tout est en ordre. J'ai mis également à jour l'article du blog. C'est ICI