This site uses cookies! Learn More

Ce site utilise des cookies !

En continuant à utiliser ce site, vous vous engagez à nous permettre de stocker des cookies sur votre ordinateur.

 

Si nous utilisons des cookies et retenons des données anonymes, c’est pour nous aider à mieux gérer notre mesure d’audience, aider nos partenaires commerciaux à nous rémunérer et nos partenaires publicitaires à proposer des annonces qui vous correspondent.

 

Grâce à ces cookies, le forum est en mesure de savoir qui écrit un message et utile pour le système d'authentification.

 

En cliquant sur « J'accepte », vous acceptez l'utilisation par NAS-Forum de cookies publicitaires et de mesure d'audience fine.

Flam

Ecrire les Personnes-taguées dans la base de donnée Moments dans les fichiers images

Messages recommandés

Posté(e) (modifié)

Bonjour,

Je viens de finir d'écrire un programme qui récupère les face-tagués de Moments et les écrits directement dans les tag-keywords des fichiers images.

En fait, on peut en fait récupérer les données de Moments et en faire ce que l'on veut.

Le principe (Proof Of Concept) étant écrit , on peut imaginer de rajouter tout un tas de fonctionnalités (synchronisations).

Si cela vous intéresse...

ATTENTION:

VERIFIEZ QUE VOUS AVEZ BIEN BACKUPE VOS FICHIERS IMAGES.

Je ne garanti rien, testé chez moi sur 30.000 images (ça prend du temps!) sur les fichiers JPEG, les SVG, BMP, GIF, TIFF, MOV, MP3,... cela dépend de exiftool.

#!/bin/bash
# Auteur: DanKe
# Description: extract recognized face in Synology Moment Database and add them as keyword in image file
# Date: 2020/05/03
# Version: 1.03
# Prerequisit:
#       Moments, psql, exiftool, write access to images
# Usage:
#       moment_copy_facetag.sh <username>
# Update:
#       1.01: check if keyword already exists in image and write only if not; else file stay unchanged and dont duplicate keyword
#       1.02: minor changes
#       1.03: add -overwrite_original, factorize PSQL
#

USER_NAME="$1"
HOME_PATH="/volume1/homes"
MOMENT_PATH="$HOME_PATH/$USER_NAME/Drive/Moments"
PSQL="psql synophoto -t -U postgres"
EXIFTOOL="exiftool"
SED="sed"


if [ $# -ne 1 ]
then
    echo "Usage: $0 <username>"
    echo "      extract recognized face in Synology Moment Database and add them as keyword in image file"
    exit 1
fi

if [ ! -d "$MOMENT_PATH" ]
then
    echo "Error: $MOMENT_PATH does not exist for user $USER_NAME"
    exit 3
fi

USER_ID=`$PSQL -c "SELECT id  from user_info where name = '$USER_NAME' ;"   | $SED -e 's/ *//'`
if [ "$USER_ID" == "" ]; then
    echo "Error: $USER_NAME not a valid Moments database user"
    exit 2
fi

SUBTABLE="user_$USER_ID"
COMMAND="SELECT FORMAT('exiftool -q -overwrite_original -keywords+=\"%1\$s\" -if \'not \$keywords=~/%1\$s/\'   \"%2\$s/%3\$s\"', p.n
ame, d.name, u.filename) FROM $SUBTABLE.face f  INNER JOIN $SUBTABLE.person p  ON f.id_person = p.id  INNER JOIN $SUBTABLE.unit u  O
N  u.id = f.id_unit  LEFT JOIN $SUBTABLE.folder d ON u.id_folder = d.id WHERE p.name != '';"

TMPSHELL=/tmp/moments_add_facename_$$.sh
$PSQL -c "$COMMAND"     \
    | $SED -n -e "s/\/Moments\///p"     \
    > $TMPSHELL
cd $MOMENT_PATH
chmod +x $TMPSHELL
echo "write identifications to file""
/bin/bash $TMPSHELL

 

Modifié par Flam
MAJ overwrite original image file

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @Flam,

J'ai l'impression que tu connais particulièrement bien la structure de la base de données de moments (synophoto).

Je cherche dans quelle table/colonne Moments stocke les tags des personnes (Albums > Personnes).

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites
Posté(e) (modifié)

En fait la ligne SELECT te donne les informations et les tables en jeux

Tables: face, person, unit, folder.

SELECT p.name, d.name, u.filename FROM $SUBTABLE.face f  INNER JOIN $SUBTABLE.person p  ON f.id_person = p.id  INNER JOIN $SUBTABLE.unit u  ON  u.id = f.id_unit  LEFT JOIN $SUBTABLE.folder d ON u.id_folder = d.id WHERE p.name != '';"

Ensuite c'est à toi de l'adapter selon tes besoins.
La BD de Moments est très différente de celle de PhotoStation (déjà Mediaserver+photostation vs Drive+Moments, ensuite les tables).
Aucune idée de ce que la fusion promise dans DSM 7 nous réserve.
Modifié par Flam

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.