Asustor Détection de visages dans Photoprism, partage dans PhotoGallery

shaks2022

Maître Jedi
22 Février 2022
581
164
113
Bonjour
ATTENTION : Ce tuto s'adresse à des utilisateurs expérimentés, habitués à la ligne de commande, et à l'édition de scripts. Par ailleurs, il faut un NAS Asustor assez costaud , avec suffisamment de RAM : Ce tuto a été conçu sur un AS6602T avec 8Go de RAM et 2 SSD de 256Go en cache écriture.

- Photoprism est un outil d'album photo puissant et moderne : Il permet la détection des visage avec un module d'intelligence artificielle, de rassembler les photos par thématiques ou d'autres critères plus ou moins "smart", puis de créer des albums en mixant tous ces critères comme on le souhaite. La partie "publication sur internet" est par contre absente : par défaut, on est en HTTP, avec un seul utilisateur qui voit toutes les photos.

- Photogallery est l'outil d'album photo officiel d'Asustor : Sa capacité de gestion d'album est basique : classement par date, par lieux, par dossiers. Par contre, la partie "publication sur internet" est très intéressante, puisqu'elle utilise le port d'Adm ( donc profite de la protection d'Adm defender ), et permet de partage des albums préalablement créés avec des URL forgées par album, et protection par mot de passe si on le souhaite.

Un besoin basique pour des photos de familles consiste à vouloir lister toutes les photos où une personne apparait, et de permettre à la personne en question de pouvoir les consulter.

J'ai donc eu l'idée d'utiliser Photoprism et Photogallery sur la mêmes source de données ( un répertoire partagé du NAS ), et de coder quelques scripts qui permettent
- de sortir la liste des photos d'un album PhotoPrism
- de rajouter cette liste de photos dans un album PhotoGallery

Donc, une fois la configuration installée, et la détection des visages à peu près complétée dans PhotoPrism, cela consiste à
- Dans Photoprism : Créer un album au nom de la personne, puis ajouter dans cet album toutes les photos de la personne en question.
- Dans Photogallery : Créer un album vide au nom de la personne ( créer un album avec une photo bidon, puis retirer la photo bidon afin d'avoir un album vide )
- Utiliser les scripts qui vont exporter la liste des photos de l'album défini dans Photoprism et importer cette liste dans l'album défini dans Photogallery.
- utiliser les fonctions de partage d'album incluses dans Photogallery.


Pour que tout ceci puisse fonctionner, il y a un certain nombre de contraintes et de prérequis:

- Créer un répertoire partagé sur le NAS : son nom est "M_priv" dans ce tutoriel, il est monté sur /volume1.
- Créer un répertoire partagé sur le NAS : "Syst_interne" . Il contiendra les données utilitaires, les scripts.
Vous êtes libres de placer vos données où vous voulez, mais vous devrez alors faire l'échange de chemin dans ce tutoriel, dans les scripts livrés,etc...
- Créer un utilisateur dédié à l'administration de PhotoGallery, et pour cet utilisateur, dans Photogallery, spécifier "M_priv" comme source de données
- Créer le répertoire /share/Syst_interne/photogallery pour stocker les scripts de photogallery
- Créer le répertoire /share/Syst_interne/Photoprism pour stocker les scripts de photoprism
- Créer le répertoire /share/Syst_interne/PhotoPrism/storage qui va contenir les fichier de fonctionnement de Photoprism.
- Installer Docker-CE
- Installer PhotoPrism, puis modifier son container pour ajouter 2 volumes ( des liaisons entre un répertoire dans le container, et un répertoire sur la machine hôte,donc le NAS )
1/ /share/Syst_interne/PhotoPrism/storage ==> /photoprism/storage ( dans le container)
2/ /share/M_priv ==> /photoprism/originals/M_priv

A partir de maintenant, tout média déposé par copie dans /share/M_priv sera détecté immédiatement par Photoprism et par Photogallery.
Si vous avez déjà installé et configuré Photoprism, vous devez d'abord recopier le répertoire storage depuis l'intérieur du container vers /share/Syst_interne/PhotoPrism/storage, sinon vous perdrez tout car la modification du container implique sa réinitialisation. Par contre, avec les données de Photoprism stockées à l'extérieur du container, il n'y a plus de problème à réinitialiser le container ( et en plus, on peut sauver les données de Photoprism de façon classique ).
J'ai donné plus de détails sur cette opération sur le forum asustor, ici.

- Installer l'image Docker suivante : https://hub.docker.com/r/nouchka/sqlite3 : nouchka/sqlite3 . utilisez Portainer si vous l'avez installé, ou "docker pull" depuis la ligne de commande.
- Prendre les scripts en PJ :
> le script PP_extract_filelist_from_album2.sh est pour le répertoire Photoprism
> le script PG_restore_albumlist_from_listfile2.sh est a stocker dans le répertoire photogallery
>le script add_volumeX_to_path.sh est à stocker dans le repertoire Photogallery
Une fois l'album "plein" créé dans PhotoPrism et l'album "vide" créé dans Photogallery,
- lancer PP_extract_filelist_from_album2.sh XXXX , avec XXXX étant le nom de l'album. Cela génère un fichier XXXX.albumlist qui contient la liste des items de l'album XXXX.
- Il manque le début du chemin dans le fichier généré : Utiliser add_volumeX_to_path.sh pour créer un nouveau fichier de liste avec le chemin complet. exemple :
./add_volumeX_to_path.sh /volume1/ ../PhotoPrism/XXXX.albumlist >XXXX.albumlist2
- lancer PG_restore_albumlist_from_listfile2.sh XXXX . Attention, l'exécution est assez longue la 1ere fois: il va générer la liste de tous les items stockés dans Photogallery, dans le fichier Photogallery_ALL.albumlistmeta
Ce fichier lui servira de cache pour toutes les opérations réalisées dans la même journée ( cas où vous traitez plusieurs albums par exemple ). Il faut supprimer le fichier si vous importez de nouveaux items dans M_priv.

Voila, c'est un 1er jet, n'hésitez pas à me faire des retours ou à demander des conseils.
 

Pièces jointes

  • add_volumeX_to_path.sh
    146 bytes · Affichages: 2
  • PG_restore_albumlist_from_listfile2.sh
    4.5 KB · Affichages: 2
  • PP_extract_filelist_from_album2.sh
    2.5 KB · Affichages: 3
Dernière édition:
  • J'aime
Réactions: Dami1
Salut,
Pourrais tu utiliser les balises de code pour la mise en forme, c'est un peu lourd à lire . :)