update batch exif
Signed-off-by: tykayn <contact@cipherbliss.com>
This commit is contained in:
parent
98666ab773
commit
5999b2fb94
|
@ -47,6 +47,12 @@ Ce script ne fera les assemblages que si le fichier de destination n'existe pas
|
||||||
## Une fois les assemblages réalisés
|
## Une fois les assemblages réalisés
|
||||||
Il faut encore remettre les infos GPS dans les fichiers générés. Pour cela il existe le script **exif_batch.sh**.
|
Il faut encore remettre les infos GPS dans les fichiers générés. Pour cela il existe le script **exif_batch.sh**.
|
||||||
|
|
||||||
|
Exemple pour assembler les infos exif depuis les images gopro front se trouvant dans INBOX_a_assembler/rouen_3 vers les
|
||||||
|
assemblages du même numéro.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion/exif_batch.sh 36077 38695 INBOX_a_assembler/rouen_3
|
||||||
|
```
|
||||||
|
|
||||||
## Suivi des assemblages
|
## Suivi des assemblages
|
||||||
On arrive vite a avoir de nombreux dossiers de capture.
|
On arrive vite a avoir de nombreux dossiers de capture.
|
||||||
|
@ -62,4 +68,4 @@ Il reste à lancer le script bash pour faire tous les assemblages à la suite et
|
||||||
Une fois les assemblages réalisés et les infos de GPS présentes, les infos d'orientation réalisées avec JOSM, il n'y a plus qu'à envoyer les assemblages sur panoramax avec geovisio_cli.
|
Une fois les assemblages réalisés et les infos de GPS présentes, les infos d'orientation réalisées avec JOSM, il n'y a plus qu'à envoyer les assemblages sur panoramax avec geovisio_cli.
|
||||||
```
|
```
|
||||||
geovisio upload --api-url https://panoramax.openstreetmap.fr .
|
geovisio upload --api-url https://panoramax.openstreetmap.fr .
|
||||||
```
|
```
|
||||||
|
|
|
@ -6,7 +6,8 @@
|
||||||
###################################
|
###################################
|
||||||
# complétion des données gps depuis une des photos assemblées
|
# complétion des données gps depuis une des photos assemblées
|
||||||
###################################
|
###################################
|
||||||
# exemple ./exif_batch.sh 36077 36159
|
# exemple
|
||||||
|
# bash /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion/exif_batch.sh 36077 38695 INBOX_a_assembler/rouen_3
|
||||||
# va assigner les données exif des photos gopro GF036077.JPG à leur assemblage assemblage_063077.jpg
|
# va assigner les données exif des photos gopro GF036077.JPG à leur assemblage assemblage_063077.jpg
|
||||||
|
|
||||||
#folder="rouen/rouen_oct23"
|
#folder="rouen/rouen_oct23"
|
||||||
|
@ -17,6 +18,7 @@ function batch_exif_photos {
|
||||||
local folder=$3
|
local folder=$3
|
||||||
local dir="/home/poule/encrypted/stockage-syncable/photos/imageries/gopro/$folder"
|
local dir="/home/poule/encrypted/stockage-syncable/photos/imageries/gopro/$folder"
|
||||||
|
|
||||||
|
echo "subdirectory of gopro is $dir"
|
||||||
echo $(seq $min $max)
|
echo $(seq $min $max)
|
||||||
|
|
||||||
for i in $(seq $min $max); do
|
for i in $(seq $min $max); do
|
||||||
|
@ -26,8 +28,8 @@ function batch_exif_photos {
|
||||||
|
|
||||||
if [ -f "$file" ] && [ -f "$file_assemblage" ]; then
|
if [ -f "$file" ] && [ -f "$file_assemblage" ]; then
|
||||||
echo "set the tags in assemblage $i from GF0$filename.jpg"
|
echo "set the tags in assemblage $i from GF0$filename.jpg"
|
||||||
# exiftool -tagsFromFile "$file" $file $file_assemblage -overwrite_original
|
exiftool -tagsFromFile "$file" $file $file_assemblage -overwrite_original
|
||||||
# echo "updated the exift tags of $file_assemblage"
|
echo "updated the exift tags of $file_assemblage"
|
||||||
else
|
else
|
||||||
echo "batch_exif_photos: File $file does not exist."
|
echo "batch_exif_photos: File $file does not exist."
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
import fs from "node:fs";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
import minimist from 'minimist';
|
||||||
|
|
||||||
|
let mini_arguments: any = minimist(process.argv.slice(2))
|
||||||
|
|
||||||
|
let folder = `/home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_a_assembler/`
|
||||||
|
let subfolder = ``
|
||||||
|
|
||||||
|
if (mini_arguments['folder']) {
|
||||||
|
subfolder = mini_arguments['folder']
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* trouver les valeux min et max de numéros de séquence gopro dans un dossier contenant des photos jpg
|
||||||
|
* @param dirPath
|
||||||
|
*/
|
||||||
|
function findMinMaxNumberOfPhotos(dirPath: string): { min: number, max: number } {
|
||||||
|
|
||||||
|
console.log('dirPath', dirPath)
|
||||||
|
|
||||||
|
let minNumber: number = 0;
|
||||||
|
let maxNumber: number = 0;
|
||||||
|
|
||||||
|
// Boucler sur chaque fichier JPG dans le dossier
|
||||||
|
fs.readdirSync(dirPath).forEach(file => {
|
||||||
|
// Vérifier si le fichier est un fichier JPG
|
||||||
|
if (path.extname(file) === '.jpg' || path.extname(file) === '.JPG') {
|
||||||
|
// Éxtraire le nombre du nom de fichier
|
||||||
|
let matches: any = file.match(/(\d+)/);
|
||||||
|
if (matches && matches.length && matches[0]) {
|
||||||
|
let number = parseInt(matches[0]);
|
||||||
|
|
||||||
|
// Sauver le nombre minimal et maximal trouvé jusqu'à présent
|
||||||
|
if (minNumber === 0 && number > 0) {
|
||||||
|
minNumber = number;
|
||||||
|
}
|
||||||
|
if (number > maxNumber) {
|
||||||
|
maxNumber = number;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
min: minNumber,
|
||||||
|
max: maxNumber,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let result = findMinMaxNumberOfPhotos(folder + subfolder)
|
||||||
|
console.log('result :\n', `bash /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion/exif_batch.sh ${result.min} ${result.max} INBOX_a_assembler/${subfolder}`)
|
|
@ -7,6 +7,8 @@
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import * as fs from 'node:fs';
|
import * as fs from 'node:fs';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
@ -43,6 +45,7 @@ if (mini_arguments['goproMax']) {
|
||||||
goproMax = mini_arguments['goproMax']
|
goproMax = mini_arguments['goproMax']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
let hugin_batch_command = 'bash /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion/exif_batch.sh ' + goproMin + ' ' + goproMax
|
let hugin_batch_command = 'bash /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion/exif_batch.sh ' + goproMin + ' ' + goproMax
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,11 +64,24 @@ if (mini_arguments['folder']) {
|
||||||
|
|
||||||
let dossier_assemblages_output = `${gopro_folder}/hugin_assemblages_script_output`;
|
let dossier_assemblages_output = `${gopro_folder}/hugin_assemblages_script_output`;
|
||||||
|
|
||||||
|
|
||||||
|
let minmax = findMinMaxNumberOfPhotos(folder)
|
||||||
|
console.log('minmax', minmax)
|
||||||
|
|
||||||
|
goproMin = minmax.min
|
||||||
|
goproMax = minmax.max
|
||||||
|
|
||||||
|
let countPhotos = ((goproMax)) - ((goproMin));
|
||||||
|
console.log('goproMax', goproMax)
|
||||||
|
console.log('goproMin', goproMin)
|
||||||
|
console.log('max - min', (goproMax) - (goproMin))
|
||||||
|
console.log('la séquence', countPhotos, 'captures', (countPhotos / 60).toFixed(0), 'minutes');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
console.log('mini_arguments', mini_arguments)
|
console.log('mini_arguments', mini_arguments)
|
||||||
|
|
||||||
|
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* trouver les valeux min et max de numéros de séquence gopro dans un dossier contenant des photos jpg
|
* trouver les valeux min et max de numéros de séquence gopro dans un dossier contenant des photos jpg
|
||||||
* @param dirPath
|
* @param dirPath
|
||||||
|
@ -289,18 +305,6 @@ function main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
let minmax = findMinMaxNumberOfPhotos(folder)
|
|
||||||
console.log('minmax', minmax)
|
|
||||||
|
|
||||||
goproMin = minmax.min
|
|
||||||
goproMax = minmax.max
|
|
||||||
|
|
||||||
let countPhotos = ((goproMax)) - ((goproMin));
|
|
||||||
console.log('goproMax', goproMax)
|
|
||||||
console.log('goproMin', goproMin)
|
|
||||||
console.log('max - min', (goproMax) - (goproMin))
|
|
||||||
console.log('la séquence', countPhotos, 'captures', (countPhotos / 60).toFixed(0), 'minutes');
|
|
||||||
|
|
||||||
|
|
||||||
// run it all
|
// run it all
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Reference in New Issue