check source photo exists
This commit is contained in:
parent
a9d8e372d8
commit
67c1130498
53
hugin-gopro-fusion/gather_sequences.ts
Normal file
53
hugin-gopro-fusion/gather_sequences.ts
Normal file
@ -0,0 +1,53 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// Chemin du dossier INBOX_a_assembler
|
||||
const inboxDir = '/home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_a_assembler';
|
||||
|
||||
// Chemin du dossier de destination pour les séquences assemblées
|
||||
const outDir = '/home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_a_assembler';
|
||||
|
||||
// Parse les fichiers dans le dossier INBOX_a_assembler
|
||||
fs.readdirSync(inboxDir).forEach((file: any) => {
|
||||
|
||||
console.log('file', file)
|
||||
|
||||
|
||||
let dossier = file
|
||||
// Ignorer les fichiers qui ne sont pas des dossiers
|
||||
if (!fs.lstatSync(path.join(inboxDir, dossier)).isDirectory()) return;
|
||||
|
||||
console.log('dossier', dossier)
|
||||
// Extraire le numéro du nom de fichier
|
||||
const number = dossier.match(/\d+/);
|
||||
|
||||
console.log('number', number[0])
|
||||
// Si le dossier de la séquence existe déjà, ignorez-le
|
||||
// if (fs.existsSync(path.join(outDir, number[0]))) return;
|
||||
|
||||
// Créer le dossier de la séquence
|
||||
// fs.mkdirSync(path.join(outDir, number[0]));
|
||||
|
||||
// Copier les photos front et back dans le nouveau dossier
|
||||
let lepath_source_front = path.join('' + inboxDir, number[0] + 'GFRNT', '*.JPG')
|
||||
let lepath_source_back = path.join('' + inboxDir, number[0] + 'GBACK', '*.JPG')
|
||||
let lepath_destination = path.join('' + outDir, number[0])
|
||||
|
||||
console.log('source front', lepath_source_front)
|
||||
console.log('source back', lepath_source_back)
|
||||
console.log('destination', lepath_destination)
|
||||
|
||||
|
||||
const files_front = fs.readdirSync(path.join(inboxDir, number[0] + 'GFRNT'));
|
||||
console.log('files front', files_front.length)
|
||||
if (files_front.length > 2) {
|
||||
fs.renameSync(lepath_source_front, lepath_destination);
|
||||
}
|
||||
const files_back = fs.readdirSync(path.join(inboxDir, number[0] + 'GBACK'));
|
||||
console.log('files back', files_back.length)
|
||||
if (files_back.length > 2) {
|
||||
fs.renameSync(lepath_source_back, lepath_destination);
|
||||
|
||||
}
|
||||
|
||||
});
|
@ -1,7 +1,8 @@
|
||||
/**
|
||||
conversion de données gpx
|
||||
conversion de données exif
|
||||
utilisation:
|
||||
|
||||
Utilisation:
|
||||
ts-node main.ts --goproMin=80800 --goproMax=80801 --goproSubFolder="rouen_oct23"
|
||||
|
||||
**/
|
||||
@ -10,21 +11,21 @@
|
||||
import * as fs from 'node:fs';
|
||||
// @ts-ignore
|
||||
import minimist from 'minimist';
|
||||
// @ts-ignore
|
||||
const moment = require("moment");
|
||||
|
||||
let mini_arguments: any = minimist(process.argv.slice(2))
|
||||
// configs
|
||||
/**
|
||||
* ces paramètres permettent de traiter par lots des assemblages sans avoir à scanner le dossier
|
||||
*/
|
||||
let gorpro_fusion_separated_photos_folder = ''
|
||||
let gopro_fusion_separated_photos_folder = ''
|
||||
let disable_pto_write = true;
|
||||
|
||||
let previous_zero = '0'// numéro de photo gopro minimum front et back. correspond à GF080800.JPG + GB080800.JPG
|
||||
let goproMin = 80800// numéro de photo gopro minimum front et back. correspond à GF080800.JPG + GB080800.JPG
|
||||
let goproMax = 80801 // et maximum. correspond à GF080866.JPG + GB080866.JPG
|
||||
let addExifToolInScript = false;
|
||||
let outputStitchedFolder = '/home/poule/encrypted/stockage-syncable/photos/imageries/gopro/hugin_assemblages_script_output/'
|
||||
let addExifToolInScript = true;
|
||||
let base_gopro_folder = '/home/poule/encrypted/stockage-syncable/photos/imageries/gopro'
|
||||
let outputStitchedFolder = base_gopro_folder + '/hugin_assemblages_script_output/'
|
||||
|
||||
if (mini_arguments['addExifToolInScript']) {
|
||||
addExifToolInScript = mini_arguments['addExifToolInScript']
|
||||
@ -36,7 +37,7 @@ if (mini_arguments['goproMin']) {
|
||||
goproMin = mini_arguments['goproMin']
|
||||
}
|
||||
if (mini_arguments['goproSubFolder']) {
|
||||
gorpro_fusion_separated_photos_folder = mini_arguments['goproSubFolder']
|
||||
gopro_fusion_separated_photos_folder = mini_arguments['goproSubFolder']
|
||||
}
|
||||
if (mini_arguments['goproMax']) {
|
||||
goproMax = mini_arguments['goproMax']
|
||||
@ -51,15 +52,13 @@ extension_photo_source = 'JPG'
|
||||
let gopro_folder = "/home/poule/encrypted/stockage-syncable/photos/imageries/gopro";
|
||||
|
||||
let dossier_pto_output = `/home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_PTO_hugin`;
|
||||
let absolutePath = `${gopro_folder}/${gorpro_fusion_separated_photos_folder}`;
|
||||
let folder = `${gopro_folder}/${gorpro_fusion_separated_photos_folder}`
|
||||
let absolutePath = `${gopro_folder}/${gopro_fusion_separated_photos_folder}`;
|
||||
let folder = `${gopro_folder}/${gopro_fusion_separated_photos_folder}`
|
||||
|
||||
if (mini_arguments['folder']) {
|
||||
folder = mini_arguments['folder']
|
||||
}
|
||||
|
||||
let subFolder = ""
|
||||
|
||||
let dossier_assemblages_output = `${gopro_folder}/hugin_assemblages_script_output`;
|
||||
|
||||
console.log('mini_arguments', mini_arguments)
|
||||
@ -83,9 +82,9 @@ function findMinMaxNumberOfPhotos(dirPath: string): { min: number, max: number }
|
||||
// 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+)/);
|
||||
let matches: any = file.match(/(\d+)/);
|
||||
if (matches && matches.length && matches[0]) {
|
||||
let number = 1 * parseInt(matches[0]);
|
||||
let number = parseInt(matches[0]);
|
||||
|
||||
// Sauver le nombre minimal et maximal trouvé jusqu'à présent
|
||||
if (minNumber === 0 && number > 0) {
|
||||
@ -104,11 +103,6 @@ function findMinMaxNumberOfPhotos(dirPath: string): { min: number, max: number }
|
||||
}
|
||||
}
|
||||
|
||||
function getGoproFiles(folder: string) {
|
||||
console.log('getGoproFiles folder', folder)
|
||||
return fs.readdirSync('' + folder)
|
||||
}
|
||||
|
||||
function makeBashScriptHugin(minmax: any) {
|
||||
|
||||
console.log('makeBashScriptHugin')
|
||||
@ -119,28 +113,33 @@ function makeBashScriptHugin(minmax: any) {
|
||||
minmax.max
|
||||
); ii++) {
|
||||
|
||||
// console.log('make PTO file : ii', ii)
|
||||
// makePto(absolutePath, ii)
|
||||
let currentNumber = `${previous_zero}${ii}`;
|
||||
// let currentNumber = '080096';
|
||||
let ptoContent = makePto(absolutePath, currentNumber);
|
||||
let ptoFileName = `merging_${currentNumber}.pto`
|
||||
let stitchedFileName = `assemblage_${currentNumber}`
|
||||
let input_front_jpg = base_gopro_folder + '/' + gopro_fusion_separated_photos_folder + '/GF' + currentNumber + '.JPG'
|
||||
|
||||
let ptoPath = `${dossier_pto_output}/${ptoFileName}`
|
||||
scriptsContent += '\n\n# capture n°' + currentNumber
|
||||
scriptsContent += '\nif [ ! -f ' + outputStitchedFolder + stitchedFileName + '.jpg ]; then \n' +
|
||||
'hugin_executor' +
|
||||
scriptsContent +=
|
||||
'\nif [ ! -f ' + outputStitchedFolder + stitchedFileName + '.jpg ]; then \n' +
|
||||
'\n if [ -f ' + input_front_jpg + ' ]; then \n' +
|
||||
' hugin_executor' +
|
||||
' ' + ptoPath + ' ' +
|
||||
'--stitching ' +
|
||||
'--prefix=' + stitchedFileName +
|
||||
' -t=6' +
|
||||
'\n' +
|
||||
' fi' +
|
||||
'\n' +
|
||||
'fi'
|
||||
|
||||
|
||||
// console.log('ptoContent', ptoContent)
|
||||
writeFile(ptoFileName, ptoContent)
|
||||
if (!disable_pto_write) {
|
||||
|
||||
// console.log('ptoContent', ptoContent)
|
||||
writeFile(ptoFileName, ptoContent)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -150,9 +149,9 @@ function makeBashScriptHugin(minmax: any) {
|
||||
}
|
||||
|
||||
console.log('##############\n pour lancer le script : \n', 'bash /home/poule/encrypted/stockage-syncable/photos/imageries/gopro/INBOX_PTO_hugin/hugin_executor_from_' + goproMin + '_to_' + goproMax + '.sh',
|
||||
'\n'+
|
||||
' bash /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion/exif_batch.sh '+goproMin+' '+goproMax+' '+gorpro_fusion_separated_photos_folder,
|
||||
'\n'+
|
||||
'\n' +
|
||||
' bash /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion/exif_batch.sh ' + goproMin + ' ' + goproMax + ' ' + gopro_fusion_separated_photos_folder,
|
||||
'\n' +
|
||||
'\n##############\n'
|
||||
)
|
||||
console.log('hugin_batch_command: \n', hugin_batch_command)
|
||||
@ -160,7 +159,6 @@ function makeBashScriptHugin(minmax: any) {
|
||||
writeFile('hugin_executor_from_' + goproMin + '_to_' + goproMax + '.sh', scriptsContent);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
function makePto(absolutePath: string, currentNumber: string) {
|
||||
@ -274,10 +272,12 @@ function writeFile(fileName: string, fileContent: any) {
|
||||
)
|
||||
}
|
||||
|
||||
let scriptsContent = '#!/bin/bash' +
|
||||
'\necho "éxécuter tous les fichiers PTO dans : ' + dossier_assemblages_output + '"\n ' +
|
||||
'\ncd ' + dossier_assemblages_output + '\n';
|
||||
'\n pwd\n';
|
||||
let scriptsContent = `#!/bin/bash
|
||||
echo "éxécuter tous les fichiers PTO dans : ${dossier_assemblages_output}"
|
||||
|
||||
cd ${dossier_assemblages_output}
|
||||
`;
|
||||
"\n pwd\n";
|
||||
|
||||
|
||||
function main() {
|
||||
@ -287,6 +287,7 @@ function main() {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
let minmax = findMinMaxNumberOfPhotos(folder)
|
||||
console.log('minmax', minmax)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user