Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Script d'import de photos #79

Closed
camillemonchicourt opened this issue May 15, 2020 · 15 comments
Closed

Script d'import de photos #79

camillemonchicourt opened this issue May 15, 2020 · 15 comments
Labels
enhancement New feature or request

Comments

@camillemonchicourt
Copy link
Member

  • Import massif initial depuis FTP ou dossier d'images

  • Import quotidien des nouvelles photos

  • Paramétrage du script d'import (chemin et nom des fichiers)

  • Redimensionnement des images (paramétrable pour les différentes tailles, à la volée ou lors de l'import)

  • L'import massif initial d'un point d'observations utilisera le même script que l'import quotidien.

  • Charge à l'admin de le lancer à la main pour ne pas attendre le cron et d'en modifier les paramètres si besoin après le 1ère import

  • Pas de rollback, ni d'outils de correction en cas d'import de données erronées.

  • On récupère le fichier original sur un serveur pour les besoins de traitements (droits d'édition d'image )

  • Lire les EXIF/IPTC, redimensionner si besoin...

  • Conventions de nommage de fichiers sur FTP : nomenclature AAA-mm-jj-hh-mm, copyright dans l'IPTC. Pour l'import massif, même source, même copyright

  • On télécharge le fichier original sur le FTP (avec un utilisateur Lecteur uniquement) pour pouvoir travailler le fichier sur le serveur GeoPaysages

  • On redimensionne, écrit dans la BDD, supprime éventuellement le fichier source si il n'est plus utilisé

  • Idéalement utiliser le nom du fichier pour retrouver la date rapidement sans ouvrir les EXIF ou IPTC (annee-mois-jour_h-m-s par exemple). Sinon utiliser la date de création du fichier pour éviter de devoir lire les EXIF.

  • L'ID du site est en paramètre fixe dans l’exécution du script.

  • Un dossier par site sur le FTP indiqué dans le paramètre de l'import.

  • Éventuellement un dossier par jour par site.

  • Prévoir un maximum de paramètres dans l'import, quitte à ce que cela soit prévu que dans un contexte pour commencer.

  • Voir pour le copyright si on peut le lire dans IPTC.

@camillemonchicourt camillemonchicourt added the enhancement New feature or request label May 15, 2020
@mvoundy
Copy link
Contributor

mvoundy commented Jul 7, 2020

Salut Camille,

Je n'ai pas les droits pour pousser sur le dépot.

@camillemonchicourt
Copy link
Member Author

OK je t'ai ajouté dans le groupe ayant accès en écriture dans le dépôt.

@mvoundy
Copy link
Contributor

mvoundy commented Jul 8, 2020

Je n'arrive toujours pas créer de branche. Je check si ça ne vient pas de ma config git.

@camillemonchicourt
Copy link
Member Author

Non c'est car tu n'as pas validé l'invitation à rejoindre l'équipe.
Je viens de t'en renvoyer une, en changeant l'équipe où tu es intégré.

@mvoundy
Copy link
Contributor

mvoundy commented Jul 8, 2020

Ah, mais je n'en vois aucune, ni sur git, ni dans mes mails.

@mvoundy
Copy link
Contributor

mvoundy commented Jul 8, 2020

Trouvé ! Merci.

camillemonchicourt added a commit that referenced this issue Aug 19, 2020
Copy/paste from great @mvoundy documentation (#85)
@camillemonchicourt
Copy link
Member Author

camillemonchicourt commented Sep 2, 2020

OK testé et fonctionnel.
La doc a été basculée dans https://github.com/PnX-SI/GeoPaysages/blob/dev/docs/import.md

A voir :

  • Utiliser l'id du site plutôt que son nom ?
  • Utilisation des ITPC pour les auteurs et copyright ? A clarifier, en lien avec Auteur des photos ? #67
  • Pour le nom des fichiers, remplacer les espaces par des _, virer des accents, les majuscules...

@mvoundy
Copy link
Contributor

mvoundy commented Sep 7, 2020

Salut,
Je reviens tout juste de congés, désolé.

Ok pour la doc. Il faut que j'y ajoute le problème sur lequel tu étais tombé. On ne peut pas utiliser un mot clé deux fois dans l'inputpattern. C'est essayer de parser une même info à partir de deux bouts de chemins différents.

Pour le reste :

Utiliser l'id du site plutôt que le nom

OK. En revanche, ça voudra dire que les imports ne se feront que pour des sites enregistrés en base. J'utilisais un nom comme identifiant pour ne pas faire cette supposition.

Utilisation des ITPC pour les auteurs et copyright ?

Actuellement, le script lit les IPTC de chaque image importée pour récupérer le copyright. S'il ne trouve aucune info, il utilise le copyright spécifié dans le fichier de config. On peut récupérer l'auteur depuis l'IPTC en même temps. Il faudra juste clarifier où stocker tout ça en base.

Pour le nom des fichiers, remplacer les espaces par des _, virer des accents, les majuscules...

OK.

@camillemonchicourt
Copy link
Member Author

OK merci, pour l'usage du nom ou du id, je n'ai pas d'avis tranché.
Je craignais que le nom du site puisse poser des problèmes avec les espaces, les accents etc... Mais si c'est pas le cas et que ça élargit les possibilités, on peut rester sur le nom.

OK pour les IPTC, à voir en fonction de la solution retenue pour l'auteur.

@camillemonchicourt
Copy link
Member Author

On continue à se baser sur le nom du site pour le moment.
Pour l'usage des IPTC, à voir si on ajoute un champs texte "auteur" dans la table des photos.

Reste à voir le fonctionnement si on a plusieurs photos le même jour.
Basculer le champs "Date" en format "Date-Time" et voir le nommage des fichiers.

@camillemonchicourt
Copy link
Member Author

En relisant la documentation du script d'import, il y a un autre point qui n'est pas clair pour moi.
On va lancer le script une première fois, il va alors récupérer toutes les images qu'il trouve pour les importer.
Mais les fois suivantes, comment lui indiquer de n'importer que ce qui est nouveau et qu'il avait pas importé la fois précédente ?

@mvoundy
Copy link
Contributor

mvoundy commented Oct 1, 2020

Pour l'instant il le fait en détectant si le fichier de sortie associé au fichier d'entrée (vis-à-vis de config) existe déjà.
Maintenant qu'on prendra en compte la date et l'heure, on pourrait l'utiliser comme identifiant ?

@camillemonchicourt
Copy link
Member Author

Je ne comprends pas bien.
Il va vérifier chaque fichier présent sur le FTP pour voir si il a pas déjà été importé ?
Je ne vois pas comment il arrive à comparer ?
A indiquer dans la doc ? Il y avait un autre point à compléter dans la doc, de mémoire.
Merci.

@mvoundy
Copy link
Contributor

mvoundy commented Oct 2, 2020

Il va vérifier chaque fichier présent sur le FTP pour voir si il a pas déjà été importé ?
Je ne vois pas comment il arrive à comparer ?

En gros l'output_pattern (nomenclature de fichiers sur le disque) c'est comme une fonction qui à un nom de fichier de l'FTP associe un nom de fichier sur le disque. C'est au travers de ça que tu arrives à spécifier les noms de fichiers importés en fonction de leurs nom d'origine et de ce qui s'y trouve (date et autre).

(1) Le script liste les fichiers de l'FTP qui matchent l'input_pattern, appelons chaque fichier listé f, puis (2) regarde si output_pattern(f) existe sur le disque. Si c'est le cas, il en déduit que le fichier a déjà été importé. Sinon, (3) il importe.

C'est beaucoup plus rapide que de regarder si chaque f appartient à une longue liste de fichiers déjà importés, mais l'inconvénient est que si tu changes cette nomenclature après avoir déjà importé des fichiers, il ne sera incapable de détecter que le fichier a déjà été importé.

Je peux réessayer l'approche registre, mais ça demandera un peu d'effort pour minimiser le temps de vérif. Sinon, plus tu auras importé de fichiers, plus le script sera long. L'étape (1) prend déjà plus de temps en fonction du nombre de fichiers sur le FTP, même en repoussant au maximum l'endroit à partir duquel on fait le ls. C'est à toi de voir.

A indiquer dans la doc ? Il y avait un autre point à compléter dans la doc, de mémoire.

Il falait indiquer en plus dans la doc qu'on ne peut pas utiliser un même token plusieurs fois dans l'input_pattern.

J'ai un forfait Geopaysages ce sprint. J'ai déjà prévu de m'y mettre la semaine prochaine.
A+

@camillemonchicourt
Copy link
Member Author

OK merci.
Ca me dépasse un peu mais si la solution mise en oeuvre est la plus performante et rapide, ça me semble bien comme ça.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Development

No branches or pull requests

2 participants